xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-font.h (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2009  Red Hat, Inc.
3*2d1272b8SAndroid Build Coastguard Worker  *
4*2d1272b8SAndroid Build Coastguard Worker  *  This is part of HarfBuzz, a text shaping library.
5*2d1272b8SAndroid Build Coastguard Worker  *
6*2d1272b8SAndroid Build Coastguard Worker  * Permission is hereby granted, without written agreement and without
7*2d1272b8SAndroid Build Coastguard Worker  * license or royalty fees, to use, copy, modify, and distribute this
8*2d1272b8SAndroid Build Coastguard Worker  * software and its documentation for any purpose, provided that the
9*2d1272b8SAndroid Build Coastguard Worker  * above copyright notice and the following two paragraphs appear in
10*2d1272b8SAndroid Build Coastguard Worker  * all copies of this software.
11*2d1272b8SAndroid Build Coastguard Worker  *
12*2d1272b8SAndroid Build Coastguard Worker  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13*2d1272b8SAndroid Build Coastguard Worker  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14*2d1272b8SAndroid Build Coastguard Worker  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15*2d1272b8SAndroid Build Coastguard Worker  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16*2d1272b8SAndroid Build Coastguard Worker  * DAMAGE.
17*2d1272b8SAndroid Build Coastguard Worker  *
18*2d1272b8SAndroid Build Coastguard Worker  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19*2d1272b8SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20*2d1272b8SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21*2d1272b8SAndroid Build Coastguard Worker  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22*2d1272b8SAndroid Build Coastguard Worker  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23*2d1272b8SAndroid Build Coastguard Worker  *
24*2d1272b8SAndroid Build Coastguard Worker  * Red Hat Author(s): Behdad Esfahbod
25*2d1272b8SAndroid Build Coastguard Worker  */
26*2d1272b8SAndroid Build Coastguard Worker 
27*2d1272b8SAndroid Build Coastguard Worker #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
28*2d1272b8SAndroid Build Coastguard Worker #error "Include <hb.h> instead."
29*2d1272b8SAndroid Build Coastguard Worker #endif
30*2d1272b8SAndroid Build Coastguard Worker 
31*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_FONT_H
32*2d1272b8SAndroid Build Coastguard Worker #define HB_FONT_H
33*2d1272b8SAndroid Build Coastguard Worker 
34*2d1272b8SAndroid Build Coastguard Worker #include "hb-common.h"
35*2d1272b8SAndroid Build Coastguard Worker #include "hb-face.h"
36*2d1272b8SAndroid Build Coastguard Worker #include "hb-draw.h"
37*2d1272b8SAndroid Build Coastguard Worker #include "hb-paint.h"
38*2d1272b8SAndroid Build Coastguard Worker 
39*2d1272b8SAndroid Build Coastguard Worker HB_BEGIN_DECLS
40*2d1272b8SAndroid Build Coastguard Worker 
41*2d1272b8SAndroid Build Coastguard Worker /*
42*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_t
43*2d1272b8SAndroid Build Coastguard Worker  */
44*2d1272b8SAndroid Build Coastguard Worker 
45*2d1272b8SAndroid Build Coastguard Worker /**
46*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_t:
47*2d1272b8SAndroid Build Coastguard Worker  *
48*2d1272b8SAndroid Build Coastguard Worker  * Data type containing a set of virtual methods used for
49*2d1272b8SAndroid Build Coastguard Worker  * working on #hb_font_t font objects.
50*2d1272b8SAndroid Build Coastguard Worker  *
51*2d1272b8SAndroid Build Coastguard Worker  * HarfBuzz provides a lightweight default function for each of
52*2d1272b8SAndroid Build Coastguard Worker  * the methods in #hb_font_funcs_t. Client programs can implement
53*2d1272b8SAndroid Build Coastguard Worker  * their own replacements for the individual font functions, as
54*2d1272b8SAndroid Build Coastguard Worker  * needed, and replace the default by calling the setter for a
55*2d1272b8SAndroid Build Coastguard Worker  * method.
56*2d1272b8SAndroid Build Coastguard Worker  *
57*2d1272b8SAndroid Build Coastguard Worker  **/
58*2d1272b8SAndroid Build Coastguard Worker typedef struct hb_font_funcs_t hb_font_funcs_t;
59*2d1272b8SAndroid Build Coastguard Worker 
60*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_funcs_t *
61*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_create (void);
62*2d1272b8SAndroid Build Coastguard Worker 
63*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_funcs_t *
64*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_get_empty (void);
65*2d1272b8SAndroid Build Coastguard Worker 
66*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_funcs_t *
67*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_reference (hb_font_funcs_t *ffuncs);
68*2d1272b8SAndroid Build Coastguard Worker 
69*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
70*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);
71*2d1272b8SAndroid Build Coastguard Worker 
72*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
73*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_user_data (hb_font_funcs_t    *ffuncs,
74*2d1272b8SAndroid Build Coastguard Worker 			     hb_user_data_key_t *key,
75*2d1272b8SAndroid Build Coastguard Worker 			     void *              data,
76*2d1272b8SAndroid Build Coastguard Worker 			     hb_destroy_func_t   destroy,
77*2d1272b8SAndroid Build Coastguard Worker 			     hb_bool_t           replace);
78*2d1272b8SAndroid Build Coastguard Worker 
79*2d1272b8SAndroid Build Coastguard Worker 
80*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void *
81*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_get_user_data (const hb_font_funcs_t *ffuncs,
82*2d1272b8SAndroid Build Coastguard Worker 			     hb_user_data_key_t    *key);
83*2d1272b8SAndroid Build Coastguard Worker 
84*2d1272b8SAndroid Build Coastguard Worker 
85*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
86*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);
87*2d1272b8SAndroid Build Coastguard Worker 
88*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
89*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
90*2d1272b8SAndroid Build Coastguard Worker 
91*2d1272b8SAndroid Build Coastguard Worker 
92*2d1272b8SAndroid Build Coastguard Worker /* font extents */
93*2d1272b8SAndroid Build Coastguard Worker 
94*2d1272b8SAndroid Build Coastguard Worker /**
95*2d1272b8SAndroid Build Coastguard Worker  * hb_font_extents_t:
96*2d1272b8SAndroid Build Coastguard Worker  * @ascender: The height of typographic ascenders.
97*2d1272b8SAndroid Build Coastguard Worker  * @descender: The depth of typographic descenders.
98*2d1272b8SAndroid Build Coastguard Worker  * @line_gap: The suggested line-spacing gap.
99*2d1272b8SAndroid Build Coastguard Worker  *
100*2d1272b8SAndroid Build Coastguard Worker  * Font-wide extent values, measured in font units.
101*2d1272b8SAndroid Build Coastguard Worker  *
102*2d1272b8SAndroid Build Coastguard Worker  * Note that typically @ascender is positive and @descender
103*2d1272b8SAndroid Build Coastguard Worker  * negative, in coordinate systems that grow up.
104*2d1272b8SAndroid Build Coastguard Worker  **/
105*2d1272b8SAndroid Build Coastguard Worker typedef struct hb_font_extents_t {
106*2d1272b8SAndroid Build Coastguard Worker   hb_position_t ascender;
107*2d1272b8SAndroid Build Coastguard Worker   hb_position_t descender;
108*2d1272b8SAndroid Build Coastguard Worker   hb_position_t line_gap;
109*2d1272b8SAndroid Build Coastguard Worker   /*< private >*/
110*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved9;
111*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved8;
112*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved7;
113*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved6;
114*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved5;
115*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved4;
116*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved3;
117*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved2;
118*2d1272b8SAndroid Build Coastguard Worker   hb_position_t reserved1;
119*2d1272b8SAndroid Build Coastguard Worker } hb_font_extents_t;
120*2d1272b8SAndroid Build Coastguard Worker 
121*2d1272b8SAndroid Build Coastguard Worker /* func types */
122*2d1272b8SAndroid Build Coastguard Worker 
123*2d1272b8SAndroid Build Coastguard Worker /**
124*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_font_extents_func_t:
125*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
126*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
127*2d1272b8SAndroid Build Coastguard Worker  * @extents: (out): The font extents retrieved
128*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
129*2d1272b8SAndroid Build Coastguard Worker  *
130*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the extents for a font.
131*2d1272b8SAndroid Build Coastguard Worker  *
132*2d1272b8SAndroid Build Coastguard Worker  **/
133*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data,
134*2d1272b8SAndroid Build Coastguard Worker 						       hb_font_extents_t *extents,
135*2d1272b8SAndroid Build Coastguard Worker 						       void *user_data);
136*2d1272b8SAndroid Build Coastguard Worker 
137*2d1272b8SAndroid Build Coastguard Worker /**
138*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_font_h_extents_func_t:
139*2d1272b8SAndroid Build Coastguard Worker  *
140*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
141*2d1272b8SAndroid Build Coastguard Worker  *
142*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the extents for a font, for horizontal-direction
143*2d1272b8SAndroid Build Coastguard Worker  * text segments. Extents must be returned in an #hb_glyph_extents output
144*2d1272b8SAndroid Build Coastguard Worker  * parameter.
145*2d1272b8SAndroid Build Coastguard Worker  *
146*2d1272b8SAndroid Build Coastguard Worker  **/
147*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t;
148*2d1272b8SAndroid Build Coastguard Worker 
149*2d1272b8SAndroid Build Coastguard Worker /**
150*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_font_v_extents_func_t:
151*2d1272b8SAndroid Build Coastguard Worker  *
152*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
153*2d1272b8SAndroid Build Coastguard Worker  *
154*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the extents for a font, for vertical-direction
155*2d1272b8SAndroid Build Coastguard Worker  * text segments. Extents must be returned in an #hb_glyph_extents output
156*2d1272b8SAndroid Build Coastguard Worker  * parameter.
157*2d1272b8SAndroid Build Coastguard Worker  *
158*2d1272b8SAndroid Build Coastguard Worker  **/
159*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t;
160*2d1272b8SAndroid Build Coastguard Worker 
161*2d1272b8SAndroid Build Coastguard Worker 
162*2d1272b8SAndroid Build Coastguard Worker /**
163*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_nominal_glyph_func_t:
164*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
165*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
166*2d1272b8SAndroid Build Coastguard Worker  * @unicode: The Unicode code point to query
167*2d1272b8SAndroid Build Coastguard Worker  * @glyph: (out): The glyph ID retrieved
168*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
169*2d1272b8SAndroid Build Coastguard Worker  *
170*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
171*2d1272b8SAndroid Build Coastguard Worker  *
172*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the nominal glyph ID for a specified Unicode code
173*2d1272b8SAndroid Build Coastguard Worker  * point. Glyph IDs must be returned in a #hb_codepoint_t output parameter.
174*2d1272b8SAndroid Build Coastguard Worker  *
175*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
176*2d1272b8SAndroid Build Coastguard Worker  *
177*2d1272b8SAndroid Build Coastguard Worker  **/
178*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data,
179*2d1272b8SAndroid Build Coastguard Worker 						       hb_codepoint_t unicode,
180*2d1272b8SAndroid Build Coastguard Worker 						       hb_codepoint_t *glyph,
181*2d1272b8SAndroid Build Coastguard Worker 						       void *user_data);
182*2d1272b8SAndroid Build Coastguard Worker 
183*2d1272b8SAndroid Build Coastguard Worker /**
184*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_variation_glyph_func_t:
185*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
186*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
187*2d1272b8SAndroid Build Coastguard Worker  * @unicode: The Unicode code point to query
188*2d1272b8SAndroid Build Coastguard Worker  * @variation_selector: The  variation-selector code point to query
189*2d1272b8SAndroid Build Coastguard Worker  * @glyph: (out): The glyph ID retrieved
190*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
191*2d1272b8SAndroid Build Coastguard Worker  *
192*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
193*2d1272b8SAndroid Build Coastguard Worker  *
194*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the glyph ID for a specified Unicode code point
195*2d1272b8SAndroid Build Coastguard Worker  * followed by a specified Variation Selector code point. Glyph IDs must be
196*2d1272b8SAndroid Build Coastguard Worker  * returned in a #hb_codepoint_t output parameter.
197*2d1272b8SAndroid Build Coastguard Worker  *
198*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
199*2d1272b8SAndroid Build Coastguard Worker  *
200*2d1272b8SAndroid Build Coastguard Worker  **/
201*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data,
202*2d1272b8SAndroid Build Coastguard Worker 							 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
203*2d1272b8SAndroid Build Coastguard Worker 							 hb_codepoint_t *glyph,
204*2d1272b8SAndroid Build Coastguard Worker 							 void *user_data);
205*2d1272b8SAndroid Build Coastguard Worker 
206*2d1272b8SAndroid Build Coastguard Worker 
207*2d1272b8SAndroid Build Coastguard Worker /**
208*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_nominal_glyphs_func_t:
209*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
210*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
211*2d1272b8SAndroid Build Coastguard Worker  * @count: number of code points to query
212*2d1272b8SAndroid Build Coastguard Worker  * @first_unicode: The first Unicode code point to query
213*2d1272b8SAndroid Build Coastguard Worker  * @unicode_stride: The stride between successive code points
214*2d1272b8SAndroid Build Coastguard Worker  * @first_glyph: (out): The first glyph ID retrieved
215*2d1272b8SAndroid Build Coastguard Worker  * @glyph_stride: The stride between successive glyph IDs
216*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
217*2d1272b8SAndroid Build Coastguard Worker  *
218*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
219*2d1272b8SAndroid Build Coastguard Worker  *
220*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the nominal glyph IDs for a sequence of
221*2d1272b8SAndroid Build Coastguard Worker  * Unicode code points. Glyph IDs must be returned in a #hb_codepoint_t
222*2d1272b8SAndroid Build Coastguard Worker  * output parameter.
223*2d1272b8SAndroid Build Coastguard Worker  *
224*2d1272b8SAndroid Build Coastguard Worker  * Return value: the number of code points processed
225*2d1272b8SAndroid Build Coastguard Worker  *
226*2d1272b8SAndroid Build Coastguard Worker  **/
227*2d1272b8SAndroid Build Coastguard Worker typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void *font_data,
228*2d1272b8SAndroid Build Coastguard Worker 							   unsigned int count,
229*2d1272b8SAndroid Build Coastguard Worker 							   const hb_codepoint_t *first_unicode,
230*2d1272b8SAndroid Build Coastguard Worker 							   unsigned int unicode_stride,
231*2d1272b8SAndroid Build Coastguard Worker 							   hb_codepoint_t *first_glyph,
232*2d1272b8SAndroid Build Coastguard Worker 							   unsigned int glyph_stride,
233*2d1272b8SAndroid Build Coastguard Worker 							   void *user_data);
234*2d1272b8SAndroid Build Coastguard Worker 
235*2d1272b8SAndroid Build Coastguard Worker /**
236*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_advance_func_t:
237*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
238*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
239*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
240*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
241*2d1272b8SAndroid Build Coastguard Worker  *
242*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
243*2d1272b8SAndroid Build Coastguard Worker  *
244*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the advance for a specified glyph. The
245*2d1272b8SAndroid Build Coastguard Worker  * method must return an #hb_position_t.
246*2d1272b8SAndroid Build Coastguard Worker  *
247*2d1272b8SAndroid Build Coastguard Worker  * Return value: The advance of @glyph within @font
248*2d1272b8SAndroid Build Coastguard Worker  *
249*2d1272b8SAndroid Build Coastguard Worker  **/
250*2d1272b8SAndroid Build Coastguard Worker typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data,
251*2d1272b8SAndroid Build Coastguard Worker 							   hb_codepoint_t glyph,
252*2d1272b8SAndroid Build Coastguard Worker 							   void *user_data);
253*2d1272b8SAndroid Build Coastguard Worker 
254*2d1272b8SAndroid Build Coastguard Worker /**
255*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_h_advance_func_t:
256*2d1272b8SAndroid Build Coastguard Worker  *
257*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
258*2d1272b8SAndroid Build Coastguard Worker  *
259*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the advance for a specified glyph, in
260*2d1272b8SAndroid Build Coastguard Worker  * horizontal-direction text segments. Advances must be returned in
261*2d1272b8SAndroid Build Coastguard Worker  * an #hb_position_t output parameter.
262*2d1272b8SAndroid Build Coastguard Worker  *
263*2d1272b8SAndroid Build Coastguard Worker  **/
264*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t;
265*2d1272b8SAndroid Build Coastguard Worker 
266*2d1272b8SAndroid Build Coastguard Worker /**
267*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_v_advance_func_t:
268*2d1272b8SAndroid Build Coastguard Worker  *
269*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
270*2d1272b8SAndroid Build Coastguard Worker  *
271*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the advance for a specified glyph, in
272*2d1272b8SAndroid Build Coastguard Worker  * vertical-direction text segments. Advances must be returned in
273*2d1272b8SAndroid Build Coastguard Worker  * an #hb_position_t output parameter.
274*2d1272b8SAndroid Build Coastguard Worker  *
275*2d1272b8SAndroid Build Coastguard Worker  **/
276*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t;
277*2d1272b8SAndroid Build Coastguard Worker 
278*2d1272b8SAndroid Build Coastguard Worker /**
279*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_advances_func_t:
280*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
281*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
282*2d1272b8SAndroid Build Coastguard Worker  * @count: The number of glyph IDs in the sequence queried
283*2d1272b8SAndroid Build Coastguard Worker  * @first_glyph: The first glyph ID to query
284*2d1272b8SAndroid Build Coastguard Worker  * @glyph_stride: The stride between successive glyph IDs
285*2d1272b8SAndroid Build Coastguard Worker  * @first_advance: (out): The first advance retrieved
286*2d1272b8SAndroid Build Coastguard Worker  * @advance_stride: The stride between successive advances
287*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
288*2d1272b8SAndroid Build Coastguard Worker  *
289*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
290*2d1272b8SAndroid Build Coastguard Worker  *
291*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the advances for a sequence of glyphs.
292*2d1272b8SAndroid Build Coastguard Worker  *
293*2d1272b8SAndroid Build Coastguard Worker  **/
294*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_data,
295*2d1272b8SAndroid Build Coastguard Worker 						   unsigned int count,
296*2d1272b8SAndroid Build Coastguard Worker 						   const hb_codepoint_t *first_glyph,
297*2d1272b8SAndroid Build Coastguard Worker 						   unsigned glyph_stride,
298*2d1272b8SAndroid Build Coastguard Worker 						   hb_position_t *first_advance,
299*2d1272b8SAndroid Build Coastguard Worker 						   unsigned advance_stride,
300*2d1272b8SAndroid Build Coastguard Worker 						   void *user_data);
301*2d1272b8SAndroid Build Coastguard Worker 
302*2d1272b8SAndroid Build Coastguard Worker /**
303*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_h_advances_func_t:
304*2d1272b8SAndroid Build Coastguard Worker  *
305*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
306*2d1272b8SAndroid Build Coastguard Worker  *
307*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the advances for a sequence of glyphs, in
308*2d1272b8SAndroid Build Coastguard Worker  * horizontal-direction text segments.
309*2d1272b8SAndroid Build Coastguard Worker  *
310*2d1272b8SAndroid Build Coastguard Worker  **/
311*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t;
312*2d1272b8SAndroid Build Coastguard Worker 
313*2d1272b8SAndroid Build Coastguard Worker /**
314*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_v_advances_func_t:
315*2d1272b8SAndroid Build Coastguard Worker  *
316*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
317*2d1272b8SAndroid Build Coastguard Worker  *
318*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the advances for a sequence of glyphs, in
319*2d1272b8SAndroid Build Coastguard Worker  * vertical-direction text segments.
320*2d1272b8SAndroid Build Coastguard Worker  *
321*2d1272b8SAndroid Build Coastguard Worker  **/
322*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t;
323*2d1272b8SAndroid Build Coastguard Worker 
324*2d1272b8SAndroid Build Coastguard Worker /**
325*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_origin_func_t:
326*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
327*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
328*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
329*2d1272b8SAndroid Build Coastguard Worker  * @x: (out): The X coordinate of the origin
330*2d1272b8SAndroid Build Coastguard Worker  * @y: (out): The Y coordinate of the origin
331*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
332*2d1272b8SAndroid Build Coastguard Worker  *
333*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
334*2d1272b8SAndroid Build Coastguard Worker  *
335*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the (X,Y) coordinates (in font units) of the
336*2d1272b8SAndroid Build Coastguard Worker  * origin for a glyph. Each coordinate must be returned in an #hb_position_t
337*2d1272b8SAndroid Build Coastguard Worker  * output parameter.
338*2d1272b8SAndroid Build Coastguard Worker  *
339*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
340*2d1272b8SAndroid Build Coastguard Worker  *
341*2d1272b8SAndroid Build Coastguard Worker  **/
342*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data,
343*2d1272b8SAndroid Build Coastguard Worker 						      hb_codepoint_t glyph,
344*2d1272b8SAndroid Build Coastguard Worker 						      hb_position_t *x, hb_position_t *y,
345*2d1272b8SAndroid Build Coastguard Worker 						      void *user_data);
346*2d1272b8SAndroid Build Coastguard Worker 
347*2d1272b8SAndroid Build Coastguard Worker /**
348*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_h_origin_func_t:
349*2d1272b8SAndroid Build Coastguard Worker  *
350*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
351*2d1272b8SAndroid Build Coastguard Worker  *
352*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the (X,Y) coordinates (in font units) of the
353*2d1272b8SAndroid Build Coastguard Worker  * origin for a glyph, for horizontal-direction text segments. Each
354*2d1272b8SAndroid Build Coastguard Worker  * coordinate must be returned in an #hb_position_t output parameter.
355*2d1272b8SAndroid Build Coastguard Worker  *
356*2d1272b8SAndroid Build Coastguard Worker  **/
357*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t;
358*2d1272b8SAndroid Build Coastguard Worker 
359*2d1272b8SAndroid Build Coastguard Worker /**
360*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_v_origin_func_t:
361*2d1272b8SAndroid Build Coastguard Worker  *
362*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
363*2d1272b8SAndroid Build Coastguard Worker  *
364*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the (X,Y) coordinates (in font units) of the
365*2d1272b8SAndroid Build Coastguard Worker  * origin for a glyph, for vertical-direction text segments. Each coordinate
366*2d1272b8SAndroid Build Coastguard Worker  * must be returned in an #hb_position_t output parameter.
367*2d1272b8SAndroid Build Coastguard Worker  *
368*2d1272b8SAndroid Build Coastguard Worker  **/
369*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t;
370*2d1272b8SAndroid Build Coastguard Worker 
371*2d1272b8SAndroid Build Coastguard Worker /**
372*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_kerning_func_t:
373*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
374*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
375*2d1272b8SAndroid Build Coastguard Worker  * @first_glyph: The glyph ID of the first glyph in the glyph pair
376*2d1272b8SAndroid Build Coastguard Worker  * @second_glyph: The glyph ID of the second glyph in the glyph pair
377*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
378*2d1272b8SAndroid Build Coastguard Worker  *
379*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the kerning-adjustment value for a glyph-pair in
380*2d1272b8SAndroid Build Coastguard Worker  * the specified font, for horizontal text segments.
381*2d1272b8SAndroid Build Coastguard Worker  *
382*2d1272b8SAndroid Build Coastguard Worker  **/
383*2d1272b8SAndroid Build Coastguard Worker typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data,
384*2d1272b8SAndroid Build Coastguard Worker 							   hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
385*2d1272b8SAndroid Build Coastguard Worker 							   void *user_data);
386*2d1272b8SAndroid Build Coastguard Worker /**
387*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_h_kerning_func_t:
388*2d1272b8SAndroid Build Coastguard Worker  *
389*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
390*2d1272b8SAndroid Build Coastguard Worker  *
391*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the kerning-adjustment value for a glyph-pair in
392*2d1272b8SAndroid Build Coastguard Worker  * the specified font, for horizontal text segments.
393*2d1272b8SAndroid Build Coastguard Worker  *
394*2d1272b8SAndroid Build Coastguard Worker  **/
395*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
396*2d1272b8SAndroid Build Coastguard Worker 
397*2d1272b8SAndroid Build Coastguard Worker 
398*2d1272b8SAndroid Build Coastguard Worker /**
399*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_extents_func_t:
400*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
401*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
402*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
403*2d1272b8SAndroid Build Coastguard Worker  * @extents: (out): The #hb_glyph_extents_t retrieved
404*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
405*2d1272b8SAndroid Build Coastguard Worker  *
406*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
407*2d1272b8SAndroid Build Coastguard Worker  *
408*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the extents for a specified glyph. Extents must be
409*2d1272b8SAndroid Build Coastguard Worker  * returned in an #hb_glyph_extents output parameter.
410*2d1272b8SAndroid Build Coastguard Worker  *
411*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
412*2d1272b8SAndroid Build Coastguard Worker  *
413*2d1272b8SAndroid Build Coastguard Worker  **/
414*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data,
415*2d1272b8SAndroid Build Coastguard Worker 						       hb_codepoint_t glyph,
416*2d1272b8SAndroid Build Coastguard Worker 						       hb_glyph_extents_t *extents,
417*2d1272b8SAndroid Build Coastguard Worker 						       void *user_data);
418*2d1272b8SAndroid Build Coastguard Worker 
419*2d1272b8SAndroid Build Coastguard Worker /**
420*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_contour_point_func_t:
421*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
422*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
423*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
424*2d1272b8SAndroid Build Coastguard Worker  * @point_index: The contour-point index to query
425*2d1272b8SAndroid Build Coastguard Worker  * @x: (out): The X value retrieved for the contour point
426*2d1272b8SAndroid Build Coastguard Worker  * @y: (out): The Y value retrieved for the contour point
427*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
428*2d1272b8SAndroid Build Coastguard Worker  *
429*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
430*2d1272b8SAndroid Build Coastguard Worker  *
431*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the (X,Y) coordinates (in font units) for a
432*2d1272b8SAndroid Build Coastguard Worker  * specified contour point in a glyph. Each coordinate must be returned as
433*2d1272b8SAndroid Build Coastguard Worker  * an #hb_position_t output parameter.
434*2d1272b8SAndroid Build Coastguard Worker  *
435*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
436*2d1272b8SAndroid Build Coastguard Worker  *
437*2d1272b8SAndroid Build Coastguard Worker  **/
438*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data,
439*2d1272b8SAndroid Build Coastguard Worker 							     hb_codepoint_t glyph, unsigned int point_index,
440*2d1272b8SAndroid Build Coastguard Worker 							     hb_position_t *x, hb_position_t *y,
441*2d1272b8SAndroid Build Coastguard Worker 							     void *user_data);
442*2d1272b8SAndroid Build Coastguard Worker 
443*2d1272b8SAndroid Build Coastguard Worker 
444*2d1272b8SAndroid Build Coastguard Worker /**
445*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_name_func_t:
446*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
447*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
448*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
449*2d1272b8SAndroid Build Coastguard Worker  * @name: (out) (array length=size): Name string retrieved for the glyph ID
450*2d1272b8SAndroid Build Coastguard Worker  * @size: Length of the glyph-name string retrieved
451*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
452*2d1272b8SAndroid Build Coastguard Worker  *
453*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
454*2d1272b8SAndroid Build Coastguard Worker  *
455*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the glyph name that corresponds to a
456*2d1272b8SAndroid Build Coastguard Worker  * glyph ID. The name should be returned in a string output parameter.
457*2d1272b8SAndroid Build Coastguard Worker  *
458*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
459*2d1272b8SAndroid Build Coastguard Worker  *
460*2d1272b8SAndroid Build Coastguard Worker  **/
461*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data,
462*2d1272b8SAndroid Build Coastguard Worker 						    hb_codepoint_t glyph,
463*2d1272b8SAndroid Build Coastguard Worker 						    char *name, unsigned int size,
464*2d1272b8SAndroid Build Coastguard Worker 						    void *user_data);
465*2d1272b8SAndroid Build Coastguard Worker 
466*2d1272b8SAndroid Build Coastguard Worker /**
467*2d1272b8SAndroid Build Coastguard Worker  * hb_font_get_glyph_from_name_func_t:
468*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
469*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
470*2d1272b8SAndroid Build Coastguard Worker  * @name: (array length=len): The name string to query
471*2d1272b8SAndroid Build Coastguard Worker  * @len: The length of the name queried
472*2d1272b8SAndroid Build Coastguard Worker  * @glyph: (out): The glyph ID retrieved
473*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
474*2d1272b8SAndroid Build Coastguard Worker  *
475*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
476*2d1272b8SAndroid Build Coastguard Worker  *
477*2d1272b8SAndroid Build Coastguard Worker  * This method should retrieve the glyph ID that corresponds to a glyph-name
478*2d1272b8SAndroid Build Coastguard Worker  * string.
479*2d1272b8SAndroid Build Coastguard Worker  *
480*2d1272b8SAndroid Build Coastguard Worker  * Return value: `true` if data found, `false` otherwise
481*2d1272b8SAndroid Build Coastguard Worker  *
482*2d1272b8SAndroid Build Coastguard Worker  **/
483*2d1272b8SAndroid Build Coastguard Worker typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data,
484*2d1272b8SAndroid Build Coastguard Worker 							 const char *name, int len, /* -1 means nul-terminated */
485*2d1272b8SAndroid Build Coastguard Worker 							 hb_codepoint_t *glyph,
486*2d1272b8SAndroid Build Coastguard Worker 							 void *user_data);
487*2d1272b8SAndroid Build Coastguard Worker 
488*2d1272b8SAndroid Build Coastguard Worker /**
489*2d1272b8SAndroid Build Coastguard Worker  * hb_font_draw_glyph_func_t:
490*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
491*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
492*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
493*2d1272b8SAndroid Build Coastguard Worker  * @draw_funcs: The draw functions to send the shape data to
494*2d1272b8SAndroid Build Coastguard Worker  * @draw_data: The data accompanying the draw functions
495*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
496*2d1272b8SAndroid Build Coastguard Worker  *
497*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
498*2d1272b8SAndroid Build Coastguard Worker  *
499*2d1272b8SAndroid Build Coastguard Worker  * Since: 7.0.0
500*2d1272b8SAndroid Build Coastguard Worker  *
501*2d1272b8SAndroid Build Coastguard Worker  **/
502*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_font_draw_glyph_func_t) (hb_font_t *font, void *font_data,
503*2d1272b8SAndroid Build Coastguard Worker                                            hb_codepoint_t glyph,
504*2d1272b8SAndroid Build Coastguard Worker                                            hb_draw_funcs_t *draw_funcs, void *draw_data,
505*2d1272b8SAndroid Build Coastguard Worker                                            void *user_data);
506*2d1272b8SAndroid Build Coastguard Worker 
507*2d1272b8SAndroid Build Coastguard Worker /**
508*2d1272b8SAndroid Build Coastguard Worker  * hb_font_paint_glyph_func_t:
509*2d1272b8SAndroid Build Coastguard Worker  * @font: #hb_font_t to work upon
510*2d1272b8SAndroid Build Coastguard Worker  * @font_data: @font user data pointer
511*2d1272b8SAndroid Build Coastguard Worker  * @glyph: The glyph ID to query
512*2d1272b8SAndroid Build Coastguard Worker  * @paint_funcs: The paint functions to use
513*2d1272b8SAndroid Build Coastguard Worker  * @paint_data: The data accompanying the paint functions
514*2d1272b8SAndroid Build Coastguard Worker  * @palette_index: The color palette to use
515*2d1272b8SAndroid Build Coastguard Worker  * @foreground: The foreground color
516*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed by the caller
517*2d1272b8SAndroid Build Coastguard Worker  *
518*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
519*2d1272b8SAndroid Build Coastguard Worker  *
520*2d1272b8SAndroid Build Coastguard Worker  * Since: 7.0.0
521*2d1272b8SAndroid Build Coastguard Worker  */
522*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_font_paint_glyph_func_t) (hb_font_t *font, void *font_data,
523*2d1272b8SAndroid Build Coastguard Worker                                             hb_codepoint_t glyph,
524*2d1272b8SAndroid Build Coastguard Worker                                             hb_paint_funcs_t *paint_funcs, void *paint_data,
525*2d1272b8SAndroid Build Coastguard Worker                                             unsigned int palette_index,
526*2d1272b8SAndroid Build Coastguard Worker                                             hb_color_t foreground,
527*2d1272b8SAndroid Build Coastguard Worker                                             void *user_data);
528*2d1272b8SAndroid Build Coastguard Worker 
529*2d1272b8SAndroid Build Coastguard Worker /* func setters */
530*2d1272b8SAndroid Build Coastguard Worker 
531*2d1272b8SAndroid Build Coastguard Worker /**
532*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_font_h_extents_func:
533*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
534*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
535*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
536*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
537*2d1272b8SAndroid Build Coastguard Worker  *
538*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_font_h_extents_func_t.
539*2d1272b8SAndroid Build Coastguard Worker  *
540*2d1272b8SAndroid Build Coastguard Worker  * Since: 1.1.2
541*2d1272b8SAndroid Build Coastguard Worker  **/
542*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
543*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs,
544*2d1272b8SAndroid Build Coastguard Worker 				       hb_font_get_font_h_extents_func_t func,
545*2d1272b8SAndroid Build Coastguard Worker 				       void *user_data, hb_destroy_func_t destroy);
546*2d1272b8SAndroid Build Coastguard Worker 
547*2d1272b8SAndroid Build Coastguard Worker /**
548*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_font_v_extents_func:
549*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
550*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
551*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
552*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
553*2d1272b8SAndroid Build Coastguard Worker  *
554*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_font_v_extents_func_t.
555*2d1272b8SAndroid Build Coastguard Worker  *
556*2d1272b8SAndroid Build Coastguard Worker  * Since: 1.1.2
557*2d1272b8SAndroid Build Coastguard Worker  **/
558*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
559*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
560*2d1272b8SAndroid Build Coastguard Worker 				       hb_font_get_font_v_extents_func_t func,
561*2d1272b8SAndroid Build Coastguard Worker 				       void *user_data, hb_destroy_func_t destroy);
562*2d1272b8SAndroid Build Coastguard Worker 
563*2d1272b8SAndroid Build Coastguard Worker /**
564*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_nominal_glyph_func:
565*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
566*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
567*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
568*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
569*2d1272b8SAndroid Build Coastguard Worker  *
570*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_nominal_glyph_func_t.
571*2d1272b8SAndroid Build Coastguard Worker  *
572*2d1272b8SAndroid Build Coastguard Worker  * Since: 1.2.3
573*2d1272b8SAndroid Build Coastguard Worker  **/
574*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
575*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs,
576*2d1272b8SAndroid Build Coastguard Worker 				      hb_font_get_nominal_glyph_func_t func,
577*2d1272b8SAndroid Build Coastguard Worker 				      void *user_data, hb_destroy_func_t destroy);
578*2d1272b8SAndroid Build Coastguard Worker 
579*2d1272b8SAndroid Build Coastguard Worker /**
580*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_nominal_glyphs_func:
581*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
582*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
583*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
584*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
585*2d1272b8SAndroid Build Coastguard Worker  *
586*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_nominal_glyphs_func_t.
587*2d1272b8SAndroid Build Coastguard Worker  *
588*2d1272b8SAndroid Build Coastguard Worker  * Since: 2.0.0
589*2d1272b8SAndroid Build Coastguard Worker  **/
590*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
591*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs,
592*2d1272b8SAndroid Build Coastguard Worker 				       hb_font_get_nominal_glyphs_func_t func,
593*2d1272b8SAndroid Build Coastguard Worker 				       void *user_data, hb_destroy_func_t destroy);
594*2d1272b8SAndroid Build Coastguard Worker 
595*2d1272b8SAndroid Build Coastguard Worker /**
596*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_variation_glyph_func:
597*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
598*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
599*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
600*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
601*2d1272b8SAndroid Build Coastguard Worker  *
602*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_variation_glyph_func_t.
603*2d1272b8SAndroid Build Coastguard Worker  *
604*2d1272b8SAndroid Build Coastguard Worker  * Since: 1.2.3
605*2d1272b8SAndroid Build Coastguard Worker  **/
606*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
607*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs,
608*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_variation_glyph_func_t func,
609*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
610*2d1272b8SAndroid Build Coastguard Worker 
611*2d1272b8SAndroid Build Coastguard Worker /**
612*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_h_advance_func:
613*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
614*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
615*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
616*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
617*2d1272b8SAndroid Build Coastguard Worker  *
618*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_h_advance_func_t.
619*2d1272b8SAndroid Build Coastguard Worker  *
620*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
621*2d1272b8SAndroid Build Coastguard Worker  **/
622*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
623*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
624*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_glyph_h_advance_func_t func,
625*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
626*2d1272b8SAndroid Build Coastguard Worker 
627*2d1272b8SAndroid Build Coastguard Worker /**
628*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_v_advance_func:
629*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
630*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
631*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
632*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
633*2d1272b8SAndroid Build Coastguard Worker  *
634*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_v_advance_func_t.
635*2d1272b8SAndroid Build Coastguard Worker  *
636*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
637*2d1272b8SAndroid Build Coastguard Worker  **/
638*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
639*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
640*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_glyph_v_advance_func_t func,
641*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
642*2d1272b8SAndroid Build Coastguard Worker 
643*2d1272b8SAndroid Build Coastguard Worker /**
644*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_h_advances_func:
645*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
646*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
647*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
648*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
649*2d1272b8SAndroid Build Coastguard Worker  *
650*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_h_advances_func_t.
651*2d1272b8SAndroid Build Coastguard Worker  *
652*2d1272b8SAndroid Build Coastguard Worker  * Since: 1.8.6
653*2d1272b8SAndroid Build Coastguard Worker  **/
654*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
655*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs,
656*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_glyph_h_advances_func_t func,
657*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
658*2d1272b8SAndroid Build Coastguard Worker 
659*2d1272b8SAndroid Build Coastguard Worker /**
660*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_v_advances_func:
661*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
662*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
663*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
664*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
665*2d1272b8SAndroid Build Coastguard Worker  *
666*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_v_advances_func_t.
667*2d1272b8SAndroid Build Coastguard Worker  *
668*2d1272b8SAndroid Build Coastguard Worker  * Since: 1.8.6
669*2d1272b8SAndroid Build Coastguard Worker  **/
670*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
671*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs,
672*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_glyph_v_advances_func_t func,
673*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
674*2d1272b8SAndroid Build Coastguard Worker 
675*2d1272b8SAndroid Build Coastguard Worker /**
676*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_h_origin_func:
677*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
678*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
679*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
680*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
681*2d1272b8SAndroid Build Coastguard Worker  *
682*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_h_origin_func_t.
683*2d1272b8SAndroid Build Coastguard Worker  *
684*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
685*2d1272b8SAndroid Build Coastguard Worker  **/
686*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
687*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
688*2d1272b8SAndroid Build Coastguard Worker 				       hb_font_get_glyph_h_origin_func_t func,
689*2d1272b8SAndroid Build Coastguard Worker 				       void *user_data, hb_destroy_func_t destroy);
690*2d1272b8SAndroid Build Coastguard Worker 
691*2d1272b8SAndroid Build Coastguard Worker /**
692*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_v_origin_func:
693*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
694*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
695*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
696*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
697*2d1272b8SAndroid Build Coastguard Worker  *
698*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_v_origin_func_t.
699*2d1272b8SAndroid Build Coastguard Worker  *
700*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
701*2d1272b8SAndroid Build Coastguard Worker  **/
702*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
703*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
704*2d1272b8SAndroid Build Coastguard Worker 				       hb_font_get_glyph_v_origin_func_t func,
705*2d1272b8SAndroid Build Coastguard Worker 				       void *user_data, hb_destroy_func_t destroy);
706*2d1272b8SAndroid Build Coastguard Worker 
707*2d1272b8SAndroid Build Coastguard Worker /**
708*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_h_kerning_func:
709*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
710*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
711*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
712*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
713*2d1272b8SAndroid Build Coastguard Worker  *
714*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_h_kerning_func_t.
715*2d1272b8SAndroid Build Coastguard Worker  *
716*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
717*2d1272b8SAndroid Build Coastguard Worker  **/
718*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
719*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
720*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_glyph_h_kerning_func_t func,
721*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
722*2d1272b8SAndroid Build Coastguard Worker 
723*2d1272b8SAndroid Build Coastguard Worker /**
724*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_extents_func:
725*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
726*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
727*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
728*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
729*2d1272b8SAndroid Build Coastguard Worker  *
730*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_extents_func_t.
731*2d1272b8SAndroid Build Coastguard Worker  *
732*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
733*2d1272b8SAndroid Build Coastguard Worker  **/
734*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
735*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
736*2d1272b8SAndroid Build Coastguard Worker 				      hb_font_get_glyph_extents_func_t func,
737*2d1272b8SAndroid Build Coastguard Worker 				      void *user_data, hb_destroy_func_t destroy);
738*2d1272b8SAndroid Build Coastguard Worker 
739*2d1272b8SAndroid Build Coastguard Worker /**
740*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_contour_point_func:
741*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
742*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
743*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
744*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
745*2d1272b8SAndroid Build Coastguard Worker  *
746*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_contour_point_func_t.
747*2d1272b8SAndroid Build Coastguard Worker  *
748*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
749*2d1272b8SAndroid Build Coastguard Worker  **/
750*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
751*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
752*2d1272b8SAndroid Build Coastguard Worker 					    hb_font_get_glyph_contour_point_func_t func,
753*2d1272b8SAndroid Build Coastguard Worker 					    void *user_data, hb_destroy_func_t destroy);
754*2d1272b8SAndroid Build Coastguard Worker 
755*2d1272b8SAndroid Build Coastguard Worker /**
756*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_name_func:
757*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
758*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
759*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
760*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
761*2d1272b8SAndroid Build Coastguard Worker  *
762*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_name_func_t.
763*2d1272b8SAndroid Build Coastguard Worker  *
764*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
765*2d1272b8SAndroid Build Coastguard Worker  **/
766*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
767*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
768*2d1272b8SAndroid Build Coastguard Worker 				   hb_font_get_glyph_name_func_t func,
769*2d1272b8SAndroid Build Coastguard Worker 				   void *user_data, hb_destroy_func_t destroy);
770*2d1272b8SAndroid Build Coastguard Worker 
771*2d1272b8SAndroid Build Coastguard Worker /**
772*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_glyph_from_name_func:
773*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
774*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
775*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
776*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
777*2d1272b8SAndroid Build Coastguard Worker  *
778*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_get_glyph_from_name_func_t.
779*2d1272b8SAndroid Build Coastguard Worker  *
780*2d1272b8SAndroid Build Coastguard Worker  * Since: 0.9.2
781*2d1272b8SAndroid Build Coastguard Worker  **/
782*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
783*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
784*2d1272b8SAndroid Build Coastguard Worker 					hb_font_get_glyph_from_name_func_t func,
785*2d1272b8SAndroid Build Coastguard Worker 					void *user_data, hb_destroy_func_t destroy);
786*2d1272b8SAndroid Build Coastguard Worker 
787*2d1272b8SAndroid Build Coastguard Worker /**
788*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_draw_glyph_func:
789*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
790*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
791*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
792*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
793*2d1272b8SAndroid Build Coastguard Worker  *
794*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_draw_glyph_func_t.
795*2d1272b8SAndroid Build Coastguard Worker  *
796*2d1272b8SAndroid Build Coastguard Worker  * Since: 7.0.0
797*2d1272b8SAndroid Build Coastguard Worker  **/
798*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
799*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_draw_glyph_func (hb_font_funcs_t *ffuncs,
800*2d1272b8SAndroid Build Coastguard Worker                                    hb_font_draw_glyph_func_t func,
801*2d1272b8SAndroid Build Coastguard Worker                                    void *user_data, hb_destroy_func_t destroy);
802*2d1272b8SAndroid Build Coastguard Worker 
803*2d1272b8SAndroid Build Coastguard Worker /**
804*2d1272b8SAndroid Build Coastguard Worker  * hb_font_funcs_set_paint_glyph_func:
805*2d1272b8SAndroid Build Coastguard Worker  * @ffuncs: A font-function structure
806*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
807*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
808*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is no longer needed
809*2d1272b8SAndroid Build Coastguard Worker  *
810*2d1272b8SAndroid Build Coastguard Worker  * Sets the implementation function for #hb_font_paint_glyph_func_t.
811*2d1272b8SAndroid Build Coastguard Worker  *
812*2d1272b8SAndroid Build Coastguard Worker  * Since: 7.0.0
813*2d1272b8SAndroid Build Coastguard Worker  */
814*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
815*2d1272b8SAndroid Build Coastguard Worker hb_font_funcs_set_paint_glyph_func (hb_font_funcs_t *ffuncs,
816*2d1272b8SAndroid Build Coastguard Worker                                     hb_font_paint_glyph_func_t func,
817*2d1272b8SAndroid Build Coastguard Worker                                     void *user_data, hb_destroy_func_t destroy);
818*2d1272b8SAndroid Build Coastguard Worker 
819*2d1272b8SAndroid Build Coastguard Worker /* func dispatch */
820*2d1272b8SAndroid Build Coastguard Worker 
821*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
822*2d1272b8SAndroid Build Coastguard Worker hb_font_get_h_extents (hb_font_t *font,
823*2d1272b8SAndroid Build Coastguard Worker 		       hb_font_extents_t *extents);
824*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
825*2d1272b8SAndroid Build Coastguard Worker hb_font_get_v_extents (hb_font_t *font,
826*2d1272b8SAndroid Build Coastguard Worker 		       hb_font_extents_t *extents);
827*2d1272b8SAndroid Build Coastguard Worker 
828*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
829*2d1272b8SAndroid Build Coastguard Worker hb_font_get_nominal_glyph (hb_font_t *font,
830*2d1272b8SAndroid Build Coastguard Worker 			   hb_codepoint_t unicode,
831*2d1272b8SAndroid Build Coastguard Worker 			   hb_codepoint_t *glyph);
832*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
833*2d1272b8SAndroid Build Coastguard Worker hb_font_get_variation_glyph (hb_font_t *font,
834*2d1272b8SAndroid Build Coastguard Worker 			     hb_codepoint_t unicode, hb_codepoint_t variation_selector,
835*2d1272b8SAndroid Build Coastguard Worker 			     hb_codepoint_t *glyph);
836*2d1272b8SAndroid Build Coastguard Worker 
837*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN unsigned int
838*2d1272b8SAndroid Build Coastguard Worker hb_font_get_nominal_glyphs (hb_font_t *font,
839*2d1272b8SAndroid Build Coastguard Worker 			    unsigned int count,
840*2d1272b8SAndroid Build Coastguard Worker 			    const hb_codepoint_t *first_unicode,
841*2d1272b8SAndroid Build Coastguard Worker 			    unsigned int unicode_stride,
842*2d1272b8SAndroid Build Coastguard Worker 			    hb_codepoint_t *first_glyph,
843*2d1272b8SAndroid Build Coastguard Worker 			    unsigned int glyph_stride);
844*2d1272b8SAndroid Build Coastguard Worker 
845*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_position_t
846*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_h_advance (hb_font_t *font,
847*2d1272b8SAndroid Build Coastguard Worker 			     hb_codepoint_t glyph);
848*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_position_t
849*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_v_advance (hb_font_t *font,
850*2d1272b8SAndroid Build Coastguard Worker 			     hb_codepoint_t glyph);
851*2d1272b8SAndroid Build Coastguard Worker 
852*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
853*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_h_advances (hb_font_t* font,
854*2d1272b8SAndroid Build Coastguard Worker 			      unsigned int count,
855*2d1272b8SAndroid Build Coastguard Worker 			      const hb_codepoint_t *first_glyph,
856*2d1272b8SAndroid Build Coastguard Worker 			      unsigned glyph_stride,
857*2d1272b8SAndroid Build Coastguard Worker 			      hb_position_t *first_advance,
858*2d1272b8SAndroid Build Coastguard Worker 			      unsigned advance_stride);
859*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
860*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_v_advances (hb_font_t* font,
861*2d1272b8SAndroid Build Coastguard Worker 			      unsigned int count,
862*2d1272b8SAndroid Build Coastguard Worker 			      const hb_codepoint_t *first_glyph,
863*2d1272b8SAndroid Build Coastguard Worker 			      unsigned glyph_stride,
864*2d1272b8SAndroid Build Coastguard Worker 			      hb_position_t *first_advance,
865*2d1272b8SAndroid Build Coastguard Worker 			      unsigned advance_stride);
866*2d1272b8SAndroid Build Coastguard Worker 
867*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
868*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_h_origin (hb_font_t *font,
869*2d1272b8SAndroid Build Coastguard Worker 			    hb_codepoint_t glyph,
870*2d1272b8SAndroid Build Coastguard Worker 			    hb_position_t *x, hb_position_t *y);
871*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
872*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_v_origin (hb_font_t *font,
873*2d1272b8SAndroid Build Coastguard Worker 			    hb_codepoint_t glyph,
874*2d1272b8SAndroid Build Coastguard Worker 			    hb_position_t *x, hb_position_t *y);
875*2d1272b8SAndroid Build Coastguard Worker 
876*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_position_t
877*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_h_kerning (hb_font_t *font,
878*2d1272b8SAndroid Build Coastguard Worker 			     hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
879*2d1272b8SAndroid Build Coastguard Worker 
880*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
881*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_extents (hb_font_t *font,
882*2d1272b8SAndroid Build Coastguard Worker 			   hb_codepoint_t glyph,
883*2d1272b8SAndroid Build Coastguard Worker 			   hb_glyph_extents_t *extents);
884*2d1272b8SAndroid Build Coastguard Worker 
885*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
886*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_contour_point (hb_font_t *font,
887*2d1272b8SAndroid Build Coastguard Worker 				 hb_codepoint_t glyph, unsigned int point_index,
888*2d1272b8SAndroid Build Coastguard Worker 				 hb_position_t *x, hb_position_t *y);
889*2d1272b8SAndroid Build Coastguard Worker 
890*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
891*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_name (hb_font_t *font,
892*2d1272b8SAndroid Build Coastguard Worker 			hb_codepoint_t glyph,
893*2d1272b8SAndroid Build Coastguard Worker 			char *name, unsigned int size);
894*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
895*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_from_name (hb_font_t *font,
896*2d1272b8SAndroid Build Coastguard Worker 			     const char *name, int len, /* -1 means nul-terminated */
897*2d1272b8SAndroid Build Coastguard Worker 			     hb_codepoint_t *glyph);
898*2d1272b8SAndroid Build Coastguard Worker 
899*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
900*2d1272b8SAndroid Build Coastguard Worker hb_font_draw_glyph (hb_font_t *font,
901*2d1272b8SAndroid Build Coastguard Worker                     hb_codepoint_t glyph,
902*2d1272b8SAndroid Build Coastguard Worker                     hb_draw_funcs_t *dfuncs, void *draw_data);
903*2d1272b8SAndroid Build Coastguard Worker 
904*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
905*2d1272b8SAndroid Build Coastguard Worker hb_font_paint_glyph (hb_font_t *font,
906*2d1272b8SAndroid Build Coastguard Worker                      hb_codepoint_t glyph,
907*2d1272b8SAndroid Build Coastguard Worker                      hb_paint_funcs_t *pfuncs, void *paint_data,
908*2d1272b8SAndroid Build Coastguard Worker                      unsigned int palette_index,
909*2d1272b8SAndroid Build Coastguard Worker                      hb_color_t foreground);
910*2d1272b8SAndroid Build Coastguard Worker 
911*2d1272b8SAndroid Build Coastguard Worker /* high-level funcs, with fallback */
912*2d1272b8SAndroid Build Coastguard Worker 
913*2d1272b8SAndroid Build Coastguard Worker /* Calls either hb_font_get_nominal_glyph() if variation_selector is 0,
914*2d1272b8SAndroid Build Coastguard Worker  * otherwise calls hb_font_get_variation_glyph(). */
915*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
916*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph (hb_font_t *font,
917*2d1272b8SAndroid Build Coastguard Worker 		   hb_codepoint_t unicode, hb_codepoint_t variation_selector,
918*2d1272b8SAndroid Build Coastguard Worker 		   hb_codepoint_t *glyph);
919*2d1272b8SAndroid Build Coastguard Worker 
920*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
921*2d1272b8SAndroid Build Coastguard Worker hb_font_get_extents_for_direction (hb_font_t *font,
922*2d1272b8SAndroid Build Coastguard Worker 				   hb_direction_t direction,
923*2d1272b8SAndroid Build Coastguard Worker 				   hb_font_extents_t *extents);
924*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
925*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_advance_for_direction (hb_font_t *font,
926*2d1272b8SAndroid Build Coastguard Worker 					 hb_codepoint_t glyph,
927*2d1272b8SAndroid Build Coastguard Worker 					 hb_direction_t direction,
928*2d1272b8SAndroid Build Coastguard Worker 					 hb_position_t *x, hb_position_t *y);
929*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
930*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_advances_for_direction (hb_font_t* font,
931*2d1272b8SAndroid Build Coastguard Worker 					  hb_direction_t direction,
932*2d1272b8SAndroid Build Coastguard Worker 					  unsigned int count,
933*2d1272b8SAndroid Build Coastguard Worker 					  const hb_codepoint_t *first_glyph,
934*2d1272b8SAndroid Build Coastguard Worker 					  unsigned glyph_stride,
935*2d1272b8SAndroid Build Coastguard Worker 					  hb_position_t *first_advance,
936*2d1272b8SAndroid Build Coastguard Worker 					  unsigned advance_stride);
937*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
938*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_origin_for_direction (hb_font_t *font,
939*2d1272b8SAndroid Build Coastguard Worker 					hb_codepoint_t glyph,
940*2d1272b8SAndroid Build Coastguard Worker 					hb_direction_t direction,
941*2d1272b8SAndroid Build Coastguard Worker 					hb_position_t *x, hb_position_t *y);
942*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
943*2d1272b8SAndroid Build Coastguard Worker hb_font_add_glyph_origin_for_direction (hb_font_t *font,
944*2d1272b8SAndroid Build Coastguard Worker 					hb_codepoint_t glyph,
945*2d1272b8SAndroid Build Coastguard Worker 					hb_direction_t direction,
946*2d1272b8SAndroid Build Coastguard Worker 					hb_position_t *x, hb_position_t *y);
947*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
948*2d1272b8SAndroid Build Coastguard Worker hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
949*2d1272b8SAndroid Build Coastguard Worker 					     hb_codepoint_t glyph,
950*2d1272b8SAndroid Build Coastguard Worker 					     hb_direction_t direction,
951*2d1272b8SAndroid Build Coastguard Worker 					     hb_position_t *x, hb_position_t *y);
952*2d1272b8SAndroid Build Coastguard Worker 
953*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
954*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
955*2d1272b8SAndroid Build Coastguard Worker 					 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
956*2d1272b8SAndroid Build Coastguard Worker 					 hb_direction_t direction,
957*2d1272b8SAndroid Build Coastguard Worker 					 hb_position_t *x, hb_position_t *y);
958*2d1272b8SAndroid Build Coastguard Worker 
959*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
960*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_extents_for_origin (hb_font_t *font,
961*2d1272b8SAndroid Build Coastguard Worker 				      hb_codepoint_t glyph,
962*2d1272b8SAndroid Build Coastguard Worker 				      hb_direction_t direction,
963*2d1272b8SAndroid Build Coastguard Worker 				      hb_glyph_extents_t *extents);
964*2d1272b8SAndroid Build Coastguard Worker 
965*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
966*2d1272b8SAndroid Build Coastguard Worker hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
967*2d1272b8SAndroid Build Coastguard Worker 					    hb_codepoint_t glyph, unsigned int point_index,
968*2d1272b8SAndroid Build Coastguard Worker 					    hb_direction_t direction,
969*2d1272b8SAndroid Build Coastguard Worker 					    hb_position_t *x, hb_position_t *y);
970*2d1272b8SAndroid Build Coastguard Worker 
971*2d1272b8SAndroid Build Coastguard Worker /* Generates gidDDD if glyph has no name. */
972*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
973*2d1272b8SAndroid Build Coastguard Worker hb_font_glyph_to_string (hb_font_t *font,
974*2d1272b8SAndroid Build Coastguard Worker 			 hb_codepoint_t glyph,
975*2d1272b8SAndroid Build Coastguard Worker 			 char *s, unsigned int size);
976*2d1272b8SAndroid Build Coastguard Worker /* Parses gidDDD and uniUUUU strings automatically. */
977*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
978*2d1272b8SAndroid Build Coastguard Worker hb_font_glyph_from_string (hb_font_t *font,
979*2d1272b8SAndroid Build Coastguard Worker 			   const char *s, int len, /* -1 means nul-terminated */
980*2d1272b8SAndroid Build Coastguard Worker 			   hb_codepoint_t *glyph);
981*2d1272b8SAndroid Build Coastguard Worker 
982*2d1272b8SAndroid Build Coastguard Worker 
983*2d1272b8SAndroid Build Coastguard Worker /*
984*2d1272b8SAndroid Build Coastguard Worker  * hb_font_t
985*2d1272b8SAndroid Build Coastguard Worker  */
986*2d1272b8SAndroid Build Coastguard Worker 
987*2d1272b8SAndroid Build Coastguard Worker /* Fonts are very light-weight objects */
988*2d1272b8SAndroid Build Coastguard Worker 
989*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
990*2d1272b8SAndroid Build Coastguard Worker hb_font_create (hb_face_t *face);
991*2d1272b8SAndroid Build Coastguard Worker 
992*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
993*2d1272b8SAndroid Build Coastguard Worker hb_font_create_sub_font (hb_font_t *parent);
994*2d1272b8SAndroid Build Coastguard Worker 
995*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
996*2d1272b8SAndroid Build Coastguard Worker hb_font_get_empty (void);
997*2d1272b8SAndroid Build Coastguard Worker 
998*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
999*2d1272b8SAndroid Build Coastguard Worker hb_font_reference (hb_font_t *font);
1000*2d1272b8SAndroid Build Coastguard Worker 
1001*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1002*2d1272b8SAndroid Build Coastguard Worker hb_font_destroy (hb_font_t *font);
1003*2d1272b8SAndroid Build Coastguard Worker 
1004*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
1005*2d1272b8SAndroid Build Coastguard Worker hb_font_set_user_data (hb_font_t          *font,
1006*2d1272b8SAndroid Build Coastguard Worker 		       hb_user_data_key_t *key,
1007*2d1272b8SAndroid Build Coastguard Worker 		       void *              data,
1008*2d1272b8SAndroid Build Coastguard Worker 		       hb_destroy_func_t   destroy,
1009*2d1272b8SAndroid Build Coastguard Worker 		       hb_bool_t           replace);
1010*2d1272b8SAndroid Build Coastguard Worker 
1011*2d1272b8SAndroid Build Coastguard Worker 
1012*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void *
1013*2d1272b8SAndroid Build Coastguard Worker hb_font_get_user_data (const hb_font_t    *font,
1014*2d1272b8SAndroid Build Coastguard Worker 		       hb_user_data_key_t *key);
1015*2d1272b8SAndroid Build Coastguard Worker 
1016*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1017*2d1272b8SAndroid Build Coastguard Worker hb_font_make_immutable (hb_font_t *font);
1018*2d1272b8SAndroid Build Coastguard Worker 
1019*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
1020*2d1272b8SAndroid Build Coastguard Worker hb_font_is_immutable (hb_font_t *font);
1021*2d1272b8SAndroid Build Coastguard Worker 
1022*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN unsigned int
1023*2d1272b8SAndroid Build Coastguard Worker hb_font_get_serial (hb_font_t *font);
1024*2d1272b8SAndroid Build Coastguard Worker 
1025*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1026*2d1272b8SAndroid Build Coastguard Worker hb_font_changed (hb_font_t *font);
1027*2d1272b8SAndroid Build Coastguard Worker 
1028*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1029*2d1272b8SAndroid Build Coastguard Worker hb_font_set_parent (hb_font_t *font,
1030*2d1272b8SAndroid Build Coastguard Worker 		    hb_font_t *parent);
1031*2d1272b8SAndroid Build Coastguard Worker 
1032*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
1033*2d1272b8SAndroid Build Coastguard Worker hb_font_get_parent (hb_font_t *font);
1034*2d1272b8SAndroid Build Coastguard Worker 
1035*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1036*2d1272b8SAndroid Build Coastguard Worker hb_font_set_face (hb_font_t *font,
1037*2d1272b8SAndroid Build Coastguard Worker 		  hb_face_t *face);
1038*2d1272b8SAndroid Build Coastguard Worker 
1039*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_face_t *
1040*2d1272b8SAndroid Build Coastguard Worker hb_font_get_face (hb_font_t *font);
1041*2d1272b8SAndroid Build Coastguard Worker 
1042*2d1272b8SAndroid Build Coastguard Worker 
1043*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1044*2d1272b8SAndroid Build Coastguard Worker hb_font_set_funcs (hb_font_t         *font,
1045*2d1272b8SAndroid Build Coastguard Worker 		   hb_font_funcs_t   *klass,
1046*2d1272b8SAndroid Build Coastguard Worker 		   void              *font_data,
1047*2d1272b8SAndroid Build Coastguard Worker 		   hb_destroy_func_t  destroy);
1048*2d1272b8SAndroid Build Coastguard Worker 
1049*2d1272b8SAndroid Build Coastguard Worker /* Be *very* careful with this function! */
1050*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1051*2d1272b8SAndroid Build Coastguard Worker hb_font_set_funcs_data (hb_font_t         *font,
1052*2d1272b8SAndroid Build Coastguard Worker 			void              *font_data,
1053*2d1272b8SAndroid Build Coastguard Worker 			hb_destroy_func_t  destroy);
1054*2d1272b8SAndroid Build Coastguard Worker 
1055*2d1272b8SAndroid Build Coastguard Worker 
1056*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1057*2d1272b8SAndroid Build Coastguard Worker hb_font_set_scale (hb_font_t *font,
1058*2d1272b8SAndroid Build Coastguard Worker 		   int x_scale,
1059*2d1272b8SAndroid Build Coastguard Worker 		   int y_scale);
1060*2d1272b8SAndroid Build Coastguard Worker 
1061*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1062*2d1272b8SAndroid Build Coastguard Worker hb_font_get_scale (hb_font_t *font,
1063*2d1272b8SAndroid Build Coastguard Worker 		   int *x_scale,
1064*2d1272b8SAndroid Build Coastguard Worker 		   int *y_scale);
1065*2d1272b8SAndroid Build Coastguard Worker 
1066*2d1272b8SAndroid Build Coastguard Worker /*
1067*2d1272b8SAndroid Build Coastguard Worker  * A zero value means "no hinting in that direction"
1068*2d1272b8SAndroid Build Coastguard Worker  */
1069*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1070*2d1272b8SAndroid Build Coastguard Worker hb_font_set_ppem (hb_font_t *font,
1071*2d1272b8SAndroid Build Coastguard Worker 		  unsigned int x_ppem,
1072*2d1272b8SAndroid Build Coastguard Worker 		  unsigned int y_ppem);
1073*2d1272b8SAndroid Build Coastguard Worker 
1074*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1075*2d1272b8SAndroid Build Coastguard Worker hb_font_get_ppem (hb_font_t *font,
1076*2d1272b8SAndroid Build Coastguard Worker 		  unsigned int *x_ppem,
1077*2d1272b8SAndroid Build Coastguard Worker 		  unsigned int *y_ppem);
1078*2d1272b8SAndroid Build Coastguard Worker 
1079*2d1272b8SAndroid Build Coastguard Worker /*
1080*2d1272b8SAndroid Build Coastguard Worker  * Point size per EM.  Used for optical-sizing in CoreText.
1081*2d1272b8SAndroid Build Coastguard Worker  * A value of zero means "not set".
1082*2d1272b8SAndroid Build Coastguard Worker  */
1083*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1084*2d1272b8SAndroid Build Coastguard Worker hb_font_set_ptem (hb_font_t *font, float ptem);
1085*2d1272b8SAndroid Build Coastguard Worker 
1086*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN float
1087*2d1272b8SAndroid Build Coastguard Worker hb_font_get_ptem (hb_font_t *font);
1088*2d1272b8SAndroid Build Coastguard Worker 
1089*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1090*2d1272b8SAndroid Build Coastguard Worker hb_font_set_synthetic_bold (hb_font_t *font,
1091*2d1272b8SAndroid Build Coastguard Worker 			    float x_embolden, float y_embolden,
1092*2d1272b8SAndroid Build Coastguard Worker 			    hb_bool_t in_place);
1093*2d1272b8SAndroid Build Coastguard Worker 
1094*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1095*2d1272b8SAndroid Build Coastguard Worker hb_font_get_synthetic_bold (hb_font_t *font,
1096*2d1272b8SAndroid Build Coastguard Worker 			    float *x_embolden, float *y_embolden,
1097*2d1272b8SAndroid Build Coastguard Worker 			    hb_bool_t *in_place);
1098*2d1272b8SAndroid Build Coastguard Worker 
1099*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1100*2d1272b8SAndroid Build Coastguard Worker hb_font_set_synthetic_slant (hb_font_t *font, float slant);
1101*2d1272b8SAndroid Build Coastguard Worker 
1102*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN float
1103*2d1272b8SAndroid Build Coastguard Worker hb_font_get_synthetic_slant (hb_font_t *font);
1104*2d1272b8SAndroid Build Coastguard Worker 
1105*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1106*2d1272b8SAndroid Build Coastguard Worker hb_font_set_variations (hb_font_t *font,
1107*2d1272b8SAndroid Build Coastguard Worker 			const hb_variation_t *variations,
1108*2d1272b8SAndroid Build Coastguard Worker 			unsigned int variations_length);
1109*2d1272b8SAndroid Build Coastguard Worker 
1110*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1111*2d1272b8SAndroid Build Coastguard Worker hb_font_set_variation (hb_font_t *font,
1112*2d1272b8SAndroid Build Coastguard Worker 		       hb_tag_t tag,
1113*2d1272b8SAndroid Build Coastguard Worker 		       float    value);
1114*2d1272b8SAndroid Build Coastguard Worker 
1115*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1116*2d1272b8SAndroid Build Coastguard Worker hb_font_set_var_coords_design (hb_font_t *font,
1117*2d1272b8SAndroid Build Coastguard Worker 			       const float *coords,
1118*2d1272b8SAndroid Build Coastguard Worker 			       unsigned int coords_length);
1119*2d1272b8SAndroid Build Coastguard Worker 
1120*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN const float *
1121*2d1272b8SAndroid Build Coastguard Worker hb_font_get_var_coords_design (hb_font_t *font,
1122*2d1272b8SAndroid Build Coastguard Worker 			       unsigned int *length);
1123*2d1272b8SAndroid Build Coastguard Worker 
1124*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1125*2d1272b8SAndroid Build Coastguard Worker hb_font_set_var_coords_normalized (hb_font_t *font,
1126*2d1272b8SAndroid Build Coastguard Worker 				   const int *coords, /* 2.14 normalized */
1127*2d1272b8SAndroid Build Coastguard Worker 				   unsigned int coords_length);
1128*2d1272b8SAndroid Build Coastguard Worker 
1129*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN const int *
1130*2d1272b8SAndroid Build Coastguard Worker hb_font_get_var_coords_normalized (hb_font_t *font,
1131*2d1272b8SAndroid Build Coastguard Worker 				   unsigned int *length);
1132*2d1272b8SAndroid Build Coastguard Worker 
1133*2d1272b8SAndroid Build Coastguard Worker /**
1134*2d1272b8SAndroid Build Coastguard Worker  * HB_FONT_NO_VAR_NAMED_INSTANCE:
1135*2d1272b8SAndroid Build Coastguard Worker  *
1136*2d1272b8SAndroid Build Coastguard Worker  * Constant signifying that a font does not have any
1137*2d1272b8SAndroid Build Coastguard Worker  * named-instance index set.  This is the default of
1138*2d1272b8SAndroid Build Coastguard Worker  * a font.
1139*2d1272b8SAndroid Build Coastguard Worker  *
1140*2d1272b8SAndroid Build Coastguard Worker  * Since: 7.0.0
1141*2d1272b8SAndroid Build Coastguard Worker  */
1142*2d1272b8SAndroid Build Coastguard Worker #define HB_FONT_NO_VAR_NAMED_INSTANCE 0xFFFFFFFF
1143*2d1272b8SAndroid Build Coastguard Worker 
1144*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
1145*2d1272b8SAndroid Build Coastguard Worker hb_font_set_var_named_instance (hb_font_t *font,
1146*2d1272b8SAndroid Build Coastguard Worker 				unsigned int instance_index);
1147*2d1272b8SAndroid Build Coastguard Worker 
1148*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN unsigned int
1149*2d1272b8SAndroid Build Coastguard Worker hb_font_get_var_named_instance (hb_font_t *font);
1150*2d1272b8SAndroid Build Coastguard Worker 
1151*2d1272b8SAndroid Build Coastguard Worker HB_END_DECLS
1152*2d1272b8SAndroid Build Coastguard Worker 
1153*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_FONT_H */
1154