xref: /aosp_15_r20/frameworks/native/include/android/font.h (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker  * Copyright (C) 2019 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker  *
4*38e8c45fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker  *
8*38e8c45fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker  *
10*38e8c45fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker  * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker  */
16*38e8c45fSAndroid Build Coastguard Worker 
17*38e8c45fSAndroid Build Coastguard Worker /**
18*38e8c45fSAndroid Build Coastguard Worker  * @addtogroup Font
19*38e8c45fSAndroid Build Coastguard Worker  * @{
20*38e8c45fSAndroid Build Coastguard Worker  */
21*38e8c45fSAndroid Build Coastguard Worker 
22*38e8c45fSAndroid Build Coastguard Worker /**
23*38e8c45fSAndroid Build Coastguard Worker  * @file font.h
24*38e8c45fSAndroid Build Coastguard Worker  * @brief Provides some constants used in system_fonts.h or fonts_matcher.h
25*38e8c45fSAndroid Build Coastguard Worker  *
26*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
27*38e8c45fSAndroid Build Coastguard Worker  */
28*38e8c45fSAndroid Build Coastguard Worker 
29*38e8c45fSAndroid Build Coastguard Worker #ifndef ANDROID_FONT_H
30*38e8c45fSAndroid Build Coastguard Worker #define ANDROID_FONT_H
31*38e8c45fSAndroid Build Coastguard Worker 
32*38e8c45fSAndroid Build Coastguard Worker #include <stdbool.h>
33*38e8c45fSAndroid Build Coastguard Worker #include <stddef.h>
34*38e8c45fSAndroid Build Coastguard Worker #include <stdint.h>
35*38e8c45fSAndroid Build Coastguard Worker #include <sys/cdefs.h>
36*38e8c45fSAndroid Build Coastguard Worker 
37*38e8c45fSAndroid Build Coastguard Worker /******************************************************************
38*38e8c45fSAndroid Build Coastguard Worker  *
39*38e8c45fSAndroid Build Coastguard Worker  * IMPORTANT NOTICE:
40*38e8c45fSAndroid Build Coastguard Worker  *
41*38e8c45fSAndroid Build Coastguard Worker  *   This file is part of Android's set of stable system headers
42*38e8c45fSAndroid Build Coastguard Worker  *   exposed by the Android NDK (Native Development Kit).
43*38e8c45fSAndroid Build Coastguard Worker  *
44*38e8c45fSAndroid Build Coastguard Worker  *   Third-party source AND binary code relies on the definitions
45*38e8c45fSAndroid Build Coastguard Worker  *   here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
46*38e8c45fSAndroid Build Coastguard Worker  *
47*38e8c45fSAndroid Build Coastguard Worker  *   - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
48*38e8c45fSAndroid Build Coastguard Worker  *   - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
49*38e8c45fSAndroid Build Coastguard Worker  *   - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
50*38e8c45fSAndroid Build Coastguard Worker  *   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
51*38e8c45fSAndroid Build Coastguard Worker  */
52*38e8c45fSAndroid Build Coastguard Worker 
53*38e8c45fSAndroid Build Coastguard Worker __BEGIN_DECLS
54*38e8c45fSAndroid Build Coastguard Worker 
55*38e8c45fSAndroid Build Coastguard Worker enum {
56*38e8c45fSAndroid Build Coastguard Worker     /** The minimum value fot the font weight value. */
57*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_MIN = 0,
58*38e8c45fSAndroid Build Coastguard Worker 
59*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the thin weight. */
60*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_THIN = 100,
61*38e8c45fSAndroid Build Coastguard Worker 
62*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the extra-light weight. */
63*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_EXTRA_LIGHT = 200,
64*38e8c45fSAndroid Build Coastguard Worker 
65*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the light weight. */
66*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_LIGHT = 300,
67*38e8c45fSAndroid Build Coastguard Worker 
68*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the normal weight. */
69*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_NORMAL = 400,
70*38e8c45fSAndroid Build Coastguard Worker 
71*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the medium weight. */
72*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_MEDIUM = 500,
73*38e8c45fSAndroid Build Coastguard Worker 
74*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the semi-bold weight. */
75*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_SEMI_BOLD = 600,
76*38e8c45fSAndroid Build Coastguard Worker 
77*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the bold weight. */
78*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_BOLD = 700,
79*38e8c45fSAndroid Build Coastguard Worker 
80*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the extra-bold weight. */
81*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_EXTRA_BOLD = 800,
82*38e8c45fSAndroid Build Coastguard Worker 
83*38e8c45fSAndroid Build Coastguard Worker     /** A font weight value for the black weight. */
84*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_BLACK = 900,
85*38e8c45fSAndroid Build Coastguard Worker 
86*38e8c45fSAndroid Build Coastguard Worker     /** The maximum value for the font weight value. */
87*38e8c45fSAndroid Build Coastguard Worker     AFONT_WEIGHT_MAX = 1000
88*38e8c45fSAndroid Build Coastguard Worker };
89*38e8c45fSAndroid Build Coastguard Worker 
90*38e8c45fSAndroid Build Coastguard Worker struct AFont;
91*38e8c45fSAndroid Build Coastguard Worker /**
92*38e8c45fSAndroid Build Coastguard Worker  * AFont provides information of the single font configuration.
93*38e8c45fSAndroid Build Coastguard Worker  */
94*38e8c45fSAndroid Build Coastguard Worker typedef struct AFont AFont;
95*38e8c45fSAndroid Build Coastguard Worker 
96*38e8c45fSAndroid Build Coastguard Worker /**
97*38e8c45fSAndroid Build Coastguard Worker  * Close an AFont.
98*38e8c45fSAndroid Build Coastguard Worker  *
99*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
100*38e8c45fSAndroid Build Coastguard Worker  *
101*38e8c45fSAndroid Build Coastguard Worker  * \param font a font returned by ASystemFontIterator_next or AFontMatchert_match.
102*38e8c45fSAndroid Build Coastguard Worker  *        Do nothing if NULL is passed.
103*38e8c45fSAndroid Build Coastguard Worker  */
104*38e8c45fSAndroid Build Coastguard Worker void AFont_close(AFont* _Nullable font) __INTRODUCED_IN(29);
105*38e8c45fSAndroid Build Coastguard Worker 
106*38e8c45fSAndroid Build Coastguard Worker /**
107*38e8c45fSAndroid Build Coastguard Worker  * Return an absolute path to the current font file.
108*38e8c45fSAndroid Build Coastguard Worker  *
109*38e8c45fSAndroid Build Coastguard Worker  * Here is a list of font formats returned by this method:
110*38e8c45fSAndroid Build Coastguard Worker  * <ul>
111*38e8c45fSAndroid Build Coastguard Worker  *   <li>OpenType</li>
112*38e8c45fSAndroid Build Coastguard Worker  *   <li>OpenType Font Collection</li>
113*38e8c45fSAndroid Build Coastguard Worker  *   <li>TrueType</li>
114*38e8c45fSAndroid Build Coastguard Worker  *   <li>TrueType Collection</li>
115*38e8c45fSAndroid Build Coastguard Worker  * </ul>
116*38e8c45fSAndroid Build Coastguard Worker  * The file extension could be one of *.otf, *.ttf, *.otc or *.ttc.
117*38e8c45fSAndroid Build Coastguard Worker  *
118*38e8c45fSAndroid Build Coastguard Worker  * The font file returned is guaranteed to be opend with O_RDONLY.
119*38e8c45fSAndroid Build Coastguard Worker  * Note that the returned pointer is valid until AFont_close() is called for the given font.
120*38e8c45fSAndroid Build Coastguard Worker  *
121*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
122*38e8c45fSAndroid Build Coastguard Worker  *
123*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
124*38e8c45fSAndroid Build Coastguard Worker  * \return a string of the font file path.
125*38e8c45fSAndroid Build Coastguard Worker  */
126*38e8c45fSAndroid Build Coastguard Worker const char* _Nonnull AFont_getFontFilePath(const AFont* _Nonnull font) __INTRODUCED_IN(29);
127*38e8c45fSAndroid Build Coastguard Worker 
128*38e8c45fSAndroid Build Coastguard Worker /**
129*38e8c45fSAndroid Build Coastguard Worker  * Return a weight value associated with the current font.
130*38e8c45fSAndroid Build Coastguard Worker  *
131*38e8c45fSAndroid Build Coastguard Worker  * The weight values are positive and less than or equal to 1000.
132*38e8c45fSAndroid Build Coastguard Worker  * Here are pairs of the common names and their values.
133*38e8c45fSAndroid Build Coastguard Worker  * <p>
134*38e8c45fSAndroid Build Coastguard Worker  *  <table>
135*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
136*38e8c45fSAndroid Build Coastguard Worker  *  <th align="center">Value</th>
137*38e8c45fSAndroid Build Coastguard Worker  *  <th align="center">Name</th>
138*38e8c45fSAndroid Build Coastguard Worker  *  <th align="center">NDK Definition</th>
139*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
140*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
141*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">100</td>
142*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Thin</td>
143*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_THIN}</td>
144*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
145*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
146*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">200</td>
147*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Extra Light (Ultra Light)</td>
148*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_EXTRA_LIGHT}</td>
149*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
150*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
151*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">300</td>
152*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Light</td>
153*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_LIGHT}</td>
154*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
155*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
156*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">400</td>
157*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Normal (Regular)</td>
158*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_NORMAL}</td>
159*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
160*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
161*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">500</td>
162*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Medium</td>
163*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_MEDIUM}</td>
164*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
165*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
166*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">600</td>
167*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Semi Bold (Demi Bold)</td>
168*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_SEMI_BOLD}</td>
169*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
170*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
171*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">700</td>
172*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Bold</td>
173*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_BOLD}</td>
174*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
175*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
176*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">800</td>
177*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Extra Bold (Ultra Bold)</td>
178*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_EXTRA_BOLD}</td>
179*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
180*38e8c45fSAndroid Build Coastguard Worker  *  <tr>
181*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">900</td>
182*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">Black (Heavy)</td>
183*38e8c45fSAndroid Build Coastguard Worker  *  <td align="center">{@link AFONT_WEIGHT_BLACK}</td>
184*38e8c45fSAndroid Build Coastguard Worker  *  </tr>
185*38e8c45fSAndroid Build Coastguard Worker  *  </table>
186*38e8c45fSAndroid Build Coastguard Worker  * </p>
187*38e8c45fSAndroid Build Coastguard Worker  * Note that the weight value may fall in between above values, e.g. 250 weight.
188*38e8c45fSAndroid Build Coastguard Worker  *
189*38e8c45fSAndroid Build Coastguard Worker  * For more information about font weight, read [OpenType usWeightClass](https://docs.microsoft.com/en-us/typography/opentype/spec/os2#usweightclass)
190*38e8c45fSAndroid Build Coastguard Worker  *
191*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
192*38e8c45fSAndroid Build Coastguard Worker  *
193*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
194*38e8c45fSAndroid Build Coastguard Worker  * \return a positive integer less than or equal to {@link AFONT_WEIGHT_MAX} is returned.
195*38e8c45fSAndroid Build Coastguard Worker  */
196*38e8c45fSAndroid Build Coastguard Worker uint16_t AFont_getWeight(const AFont* _Nonnull font) __INTRODUCED_IN(29);
197*38e8c45fSAndroid Build Coastguard Worker 
198*38e8c45fSAndroid Build Coastguard Worker /**
199*38e8c45fSAndroid Build Coastguard Worker  * Return true if the current font is italic, otherwise returns false.
200*38e8c45fSAndroid Build Coastguard Worker  *
201*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
202*38e8c45fSAndroid Build Coastguard Worker  *
203*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
204*38e8c45fSAndroid Build Coastguard Worker  * \return true if italic, otherwise false.
205*38e8c45fSAndroid Build Coastguard Worker  */
206*38e8c45fSAndroid Build Coastguard Worker bool AFont_isItalic(const AFont* _Nonnull font) __INTRODUCED_IN(29);
207*38e8c45fSAndroid Build Coastguard Worker 
208*38e8c45fSAndroid Build Coastguard Worker /**
209*38e8c45fSAndroid Build Coastguard Worker  * Return a IETF BCP47 compliant language tag associated with the current font.
210*38e8c45fSAndroid Build Coastguard Worker  *
211*38e8c45fSAndroid Build Coastguard Worker  * For information about IETF BCP47, read [Locale.forLanguageTag(java.lang.String)](https://developer.android.com/reference/java/util/Locale.html#forLanguageTag(java.lang.String)")
212*38e8c45fSAndroid Build Coastguard Worker  *
213*38e8c45fSAndroid Build Coastguard Worker  * Note that the returned pointer is valid until AFont_close() is called.
214*38e8c45fSAndroid Build Coastguard Worker  *
215*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
216*38e8c45fSAndroid Build Coastguard Worker  *
217*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
218*38e8c45fSAndroid Build Coastguard Worker  * \return a IETF BCP47 compliant language tag or nullptr if not available.
219*38e8c45fSAndroid Build Coastguard Worker  */
220*38e8c45fSAndroid Build Coastguard Worker const char* _Nullable AFont_getLocale(const AFont* _Nonnull font) __INTRODUCED_IN(29);
221*38e8c45fSAndroid Build Coastguard Worker 
222*38e8c45fSAndroid Build Coastguard Worker /**
223*38e8c45fSAndroid Build Coastguard Worker  * Return a font collection index value associated with the current font.
224*38e8c45fSAndroid Build Coastguard Worker  *
225*38e8c45fSAndroid Build Coastguard Worker  * In case the target font file is a font collection (e.g. .ttc or .otc), this
226*38e8c45fSAndroid Build Coastguard Worker  * returns a non-negative value as an font offset in the collection. This
227*38e8c45fSAndroid Build Coastguard Worker  * always returns 0 if the target font file is a regular font.
228*38e8c45fSAndroid Build Coastguard Worker  *
229*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
230*38e8c45fSAndroid Build Coastguard Worker  *
231*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
232*38e8c45fSAndroid Build Coastguard Worker  * \return a font collection index.
233*38e8c45fSAndroid Build Coastguard Worker  */
234*38e8c45fSAndroid Build Coastguard Worker size_t AFont_getCollectionIndex(const AFont* _Nonnull font) __INTRODUCED_IN(29);
235*38e8c45fSAndroid Build Coastguard Worker 
236*38e8c45fSAndroid Build Coastguard Worker /**
237*38e8c45fSAndroid Build Coastguard Worker  * Return a count of font variation settings associated with the current font
238*38e8c45fSAndroid Build Coastguard Worker  *
239*38e8c45fSAndroid Build Coastguard Worker  * The font variation settings are provided as multiple tag-values pairs.
240*38e8c45fSAndroid Build Coastguard Worker  *
241*38e8c45fSAndroid Build Coastguard Worker  * For example, bold italic font may have following font variation settings:
242*38e8c45fSAndroid Build Coastguard Worker  *     'wght' 700, 'slnt' -12
243*38e8c45fSAndroid Build Coastguard Worker  * In this case, AFont_getAxisCount returns 2 and AFont_getAxisTag
244*38e8c45fSAndroid Build Coastguard Worker  * and AFont_getAxisValue will return following values.
245*38e8c45fSAndroid Build Coastguard Worker  * \code{.cpp}
246*38e8c45fSAndroid Build Coastguard Worker  *     AFont* font = ASystemFontIterator_next(ite);
247*38e8c45fSAndroid Build Coastguard Worker  *
248*38e8c45fSAndroid Build Coastguard Worker  *     // Returns the number of axes
249*38e8c45fSAndroid Build Coastguard Worker  *     AFont_getAxisCount(font);  // Returns 2
250*38e8c45fSAndroid Build Coastguard Worker  *
251*38e8c45fSAndroid Build Coastguard Worker  *     // Returns the tag-value pair for the first axis.
252*38e8c45fSAndroid Build Coastguard Worker  *     AFont_getAxisTag(font, 0);  // Returns 'wght'(0x77676874)
253*38e8c45fSAndroid Build Coastguard Worker  *     AFont_getAxisValue(font, 0);  // Returns 700.0
254*38e8c45fSAndroid Build Coastguard Worker  *
255*38e8c45fSAndroid Build Coastguard Worker  *     // Returns the tag-value pair for the second axis.
256*38e8c45fSAndroid Build Coastguard Worker  *     AFont_getAxisTag(font, 1);  // Returns 'slnt'(0x736c6e74)
257*38e8c45fSAndroid Build Coastguard Worker  *     AFont_getAxisValue(font, 1);  // Returns -12.0
258*38e8c45fSAndroid Build Coastguard Worker  * \endcode
259*38e8c45fSAndroid Build Coastguard Worker  *
260*38e8c45fSAndroid Build Coastguard Worker  * For more information about font variation settings, read [Font Variations Table](https://docs.microsoft.com/en-us/typography/opentype/spec/fvar)
261*38e8c45fSAndroid Build Coastguard Worker  *
262*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
263*38e8c45fSAndroid Build Coastguard Worker  *
264*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
265*38e8c45fSAndroid Build Coastguard Worker  * \return a number of font variation settings.
266*38e8c45fSAndroid Build Coastguard Worker  */
267*38e8c45fSAndroid Build Coastguard Worker size_t AFont_getAxisCount(const AFont* _Nonnull font) __INTRODUCED_IN(29);
268*38e8c45fSAndroid Build Coastguard Worker 
269*38e8c45fSAndroid Build Coastguard Worker 
270*38e8c45fSAndroid Build Coastguard Worker /**
271*38e8c45fSAndroid Build Coastguard Worker  * Return an OpenType axis tag associated with the current font.
272*38e8c45fSAndroid Build Coastguard Worker  *
273*38e8c45fSAndroid Build Coastguard Worker  * See AFont_getAxisCount for more details.
274*38e8c45fSAndroid Build Coastguard Worker  *
275*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
276*38e8c45fSAndroid Build Coastguard Worker  *
277*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
278*38e8c45fSAndroid Build Coastguard Worker  * \param axisIndex an index to the font variation settings. Passing value larger than or
279*38e8c45fSAndroid Build Coastguard Worker  *        equal to {@link AFont_getAxisCount} is not allowed.
280*38e8c45fSAndroid Build Coastguard Worker  * \return an OpenType axis tag value for the given font variation setting.
281*38e8c45fSAndroid Build Coastguard Worker  */
282*38e8c45fSAndroid Build Coastguard Worker uint32_t AFont_getAxisTag(const AFont* _Nonnull font, uint32_t axisIndex)
283*38e8c45fSAndroid Build Coastguard Worker       __INTRODUCED_IN(29);
284*38e8c45fSAndroid Build Coastguard Worker 
285*38e8c45fSAndroid Build Coastguard Worker /**
286*38e8c45fSAndroid Build Coastguard Worker  * Return an OpenType axis value associated with the current font.
287*38e8c45fSAndroid Build Coastguard Worker  *
288*38e8c45fSAndroid Build Coastguard Worker  * See AFont_getAxisCount for more details.
289*38e8c45fSAndroid Build Coastguard Worker  *
290*38e8c45fSAndroid Build Coastguard Worker  * Available since API level 29.
291*38e8c45fSAndroid Build Coastguard Worker  *
292*38e8c45fSAndroid Build Coastguard Worker  * \param font a font object. Passing NULL is not allowed.
293*38e8c45fSAndroid Build Coastguard Worker  * \param axisIndex an index to the font variation settings. Passing value larger than or
294*38e8c45fSAndroid Build Coastguard Worker  *         equal to {@link AFont_getAxisCount} is not allowed.
295*38e8c45fSAndroid Build Coastguard Worker  * \return a float value for the given font variation setting.
296*38e8c45fSAndroid Build Coastguard Worker  */
297*38e8c45fSAndroid Build Coastguard Worker float AFont_getAxisValue(const AFont* _Nonnull font, uint32_t axisIndex)
298*38e8c45fSAndroid Build Coastguard Worker       __INTRODUCED_IN(29);
299*38e8c45fSAndroid Build Coastguard Worker 
300*38e8c45fSAndroid Build Coastguard Worker __END_DECLS
301*38e8c45fSAndroid Build Coastguard Worker 
302*38e8c45fSAndroid Build Coastguard Worker #endif // ANDROID_FONT_H
303*38e8c45fSAndroid Build Coastguard Worker 
304*38e8c45fSAndroid Build Coastguard Worker /** @} */
305