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