blob: 3a0c001b98e5c1841efd6fd0d4780ac54d062bf1 [file] [log] [blame]
Behdad Esfahbodc62b5032009-08-01 19:54:49 -04001/*
Behdad Esfahbod2409d5f2011-04-21 17:14:28 -04002 * Copyright © 2009 Red Hat, Inc.
Behdad Esfahbodc62b5032009-08-01 19:54:49 -04003 *
Behdad Esfahbodc755cb32010-04-22 00:11:43 -04004 * This is part of HarfBuzz, a text shaping library.
Behdad Esfahbodc62b5032009-08-01 19:54:49 -04005 *
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
Behdad Esfahbodd1c9eb42012-04-12 13:17:44 -040027#ifndef HB_H_IN
28#error "Include <hb.h> instead."
29#endif
30
Behdad Esfahbodc62b5032009-08-01 19:54:49 -040031#ifndef HB_FONT_H
32#define HB_FONT_H
33
34#include "hb-common.h"
Behdad Esfahbod2e3a07a2013-08-26 18:49:07 -040035#include "hb-face.h"
Behdad Esfahbodc62b5032009-08-01 19:54:49 -040036
37HB_BEGIN_DECLS
38
Behdad Esfahbodacdba3f2010-07-23 15:11:18 -040039
Behdad Esfahbod1bc1cb32012-06-16 15:21:55 -040040typedef struct hb_font_t hb_font_t;
Behdad Esfahbodc62b5032009-08-01 19:54:49 -040041
Behdad Esfahbod5c441882009-08-10 20:05:16 -040042
43/*
44 * hb_font_funcs_t
45 */
46
Behdad Esfahbod1bc1cb32012-06-16 15:21:55 -040047typedef struct hb_font_funcs_t hb_font_funcs_t;
Behdad Esfahbod5c441882009-08-10 20:05:16 -040048
49hb_font_funcs_t *
50hb_font_funcs_create (void);
51
52hb_font_funcs_t *
Behdad Esfahbod80a68332011-05-11 18:14:44 -040053hb_font_funcs_get_empty (void);
54
55hb_font_funcs_t *
Behdad Esfahbod5c441882009-08-10 20:05:16 -040056hb_font_funcs_reference (hb_font_funcs_t *ffuncs);
57
Behdad Esfahbod5c441882009-08-10 20:05:16 -040058void
59hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);
60
Behdad Esfahbod5fa849b2011-04-27 21:46:01 -040061hb_bool_t
62hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
63 hb_user_data_key_t *key,
64 void * data,
Behdad Esfahbod33ccc772011-08-09 00:43:24 +020065 hb_destroy_func_t destroy,
66 hb_bool_t replace);
Behdad Esfahbod5fa849b2011-04-27 21:46:01 -040067
68
69void *
70hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs,
71 hb_user_data_key_t *key);
72
73
Behdad Esfahbod8d703122009-08-10 23:50:51 -040074void
75hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);
76
Behdad Esfahbod645f6f22010-10-04 17:01:01 -040077hb_bool_t
78hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
Behdad Esfahbod32c65a52009-08-18 18:37:36 -040079
Behdad Esfahbod21756932012-08-08 01:20:45 -040080
81/* glyph extents */
Behdad Esfahbod32c65a52009-08-18 18:37:36 -040082
Behdad Esfahbod1bc1cb32012-06-16 15:21:55 -040083typedef struct hb_glyph_extents_t
Behdad Esfahbodc09ed982009-10-29 03:08:42 -040084{
Behdad Esfahbod4053f3f2011-05-16 16:20:48 -040085 hb_position_t x_bearing;
86 hb_position_t y_bearing;
87 hb_position_t width;
88 hb_position_t height;
Behdad Esfahbod502f4cb2010-10-27 01:13:56 -040089} hb_glyph_extents_t;
Behdad Esfahbod32c65a52009-08-18 18:37:36 -040090
Behdad Esfahbod1ded6d82011-05-10 20:49:02 -040091
Behdad Esfahbod744970a2011-05-16 18:15:37 -040092/* func types */
93
Behdad Esfahbod0fd8c2f2011-05-12 15:14:13 -040094typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data,
95 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
96 hb_codepoint_t *glyph,
97 void *user_data);
Behdad Esfahbod32c65a52009-08-18 18:37:36 -040098
Behdad Esfahbod5c441882009-08-10 20:05:16 -040099
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400100typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data,
101 hb_codepoint_t glyph,
102 void *user_data);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400103typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t;
104typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t;
Behdad Esfahbod5c441882009-08-10 20:05:16 -0400105
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400106typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data,
107 hb_codepoint_t glyph,
108 hb_position_t *x, hb_position_t *y,
109 void *user_data);
110typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t;
111typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t;
Behdad Esfahbod5c441882009-08-10 20:05:16 -0400112
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400113typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data,
114 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
115 void *user_data);
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400116typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
117typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t;
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400118
119
120typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data,
121 hb_codepoint_t glyph,
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400122 hb_glyph_extents_t *extents,
123 void *user_data);
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400124typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data,
125 hb_codepoint_t glyph, unsigned int point_index,
126 hb_position_t *x, hb_position_t *y,
127 void *user_data);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400128
129
Behdad Esfahbodbce09552012-05-27 11:29:21 -0400130typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data,
131 hb_codepoint_t glyph,
132 char *name, unsigned int size,
133 void *user_data);
134typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data,
135 const char *name, int len, /* -1 means nul-terminated */
136 hb_codepoint_t *glyph,
137 void *user_data);
138
139
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400140/* func setters */
Behdad Esfahbod502f4cb2010-10-27 01:13:56 -0400141
142void
Behdad Esfahbod1ded6d82011-05-10 20:49:02 -0400143hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs,
144 hb_font_get_glyph_func_t glyph_func,
145 void *user_data, hb_destroy_func_t destroy);
Behdad Esfahbod5c441882009-08-10 20:05:16 -0400146
147void
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400148hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400149 hb_font_get_glyph_h_advance_func_t func,
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400150 void *user_data, hb_destroy_func_t destroy);
151void
152hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400153 hb_font_get_glyph_v_advance_func_t func,
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400154 void *user_data, hb_destroy_func_t destroy);
Behdad Esfahbod2e336692009-11-05 13:55:41 -0500155
Behdad Esfahbod502f4cb2010-10-27 01:13:56 -0400156void
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400157hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400158 hb_font_get_glyph_h_origin_func_t func,
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400159 void *user_data, hb_destroy_func_t destroy);
160void
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400161hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400162 hb_font_get_glyph_v_origin_func_t func,
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400163 void *user_data, hb_destroy_func_t destroy);
Behdad Esfahbod2e336692009-11-05 13:55:41 -0500164
165void
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400166hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400167 hb_font_get_glyph_h_kerning_func_t func,
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400168 void *user_data, hb_destroy_func_t destroy);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400169void
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400170hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400171 hb_font_get_glyph_v_kerning_func_t func,
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400172 void *user_data, hb_destroy_func_t destroy);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400173
174void
175hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400176 hb_font_get_glyph_extents_func_t func,
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400177 void *user_data, hb_destroy_func_t destroy);
178void
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400179hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400180 hb_font_get_glyph_contour_point_func_t func,
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400181 void *user_data, hb_destroy_func_t destroy);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400182
Behdad Esfahbodbce09552012-05-27 11:29:21 -0400183void
184hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
185 hb_font_get_glyph_name_func_t glyph_func,
186 void *user_data, hb_destroy_func_t destroy);
187void
188hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
189 hb_font_get_glyph_from_name_func_t glyph_func,
190 void *user_data, hb_destroy_func_t destroy);
191
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400192
193/* func dispatch */
Behdad Esfahbod502f4cb2010-10-27 01:13:56 -0400194
Behdad Esfahbod0fd8c2f2011-05-12 15:14:13 -0400195hb_bool_t
Behdad Esfahbod1ded6d82011-05-10 20:49:02 -0400196hb_font_get_glyph (hb_font_t *font,
Behdad Esfahbod0fd8c2f2011-05-12 15:14:13 -0400197 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
198 hb_codepoint_t *glyph);
Behdad Esfahbod2e336692009-11-05 13:55:41 -0500199
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400200hb_position_t
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400201hb_font_get_glyph_h_advance (hb_font_t *font,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400202 hb_codepoint_t glyph);
203hb_position_t
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400204hb_font_get_glyph_v_advance (hb_font_t *font,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400205 hb_codepoint_t glyph);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400206
207hb_bool_t
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400208hb_font_get_glyph_h_origin (hb_font_t *font,
209 hb_codepoint_t glyph,
210 hb_position_t *x, hb_position_t *y);
211hb_bool_t
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400212hb_font_get_glyph_v_origin (hb_font_t *font,
213 hb_codepoint_t glyph,
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400214 hb_position_t *x, hb_position_t *y);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400215
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400216hb_position_t
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400217hb_font_get_glyph_h_kerning (hb_font_t *font,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400218 hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
219hb_position_t
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400220hb_font_get_glyph_v_kerning (hb_font_t *font,
Behdad Esfahbod2d8ebcb2011-05-25 11:27:33 -0400221 hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400222
223hb_bool_t
224hb_font_get_glyph_extents (hb_font_t *font,
225 hb_codepoint_t glyph,
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400226 hb_glyph_extents_t *extents);
227
228hb_bool_t
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400229hb_font_get_glyph_contour_point (hb_font_t *font,
230 hb_codepoint_t glyph, unsigned int point_index,
231 hb_position_t *x, hb_position_t *y);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400232
Behdad Esfahbodbce09552012-05-27 11:29:21 -0400233hb_bool_t
234hb_font_get_glyph_name (hb_font_t *font,
235 hb_codepoint_t glyph,
236 char *name, unsigned int size);
237hb_bool_t
238hb_font_get_glyph_from_name (hb_font_t *font,
239 const char *name, int len, /* -1 means nul-terminated */
240 hb_codepoint_t *glyph);
241
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400242
243/* high-level funcs, with fallback */
244
Behdad Esfahboda513dbc2011-05-11 00:24:34 -0400245void
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400246hb_font_get_glyph_advance_for_direction (hb_font_t *font,
247 hb_codepoint_t glyph,
248 hb_direction_t direction,
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400249 hb_position_t *x, hb_position_t *y);
250void
251hb_font_get_glyph_origin_for_direction (hb_font_t *font,
252 hb_codepoint_t glyph,
253 hb_direction_t direction,
254 hb_position_t *x, hb_position_t *y);
Behdad Esfahbod8b38fae2011-05-19 13:08:00 -0400255void
256hb_font_add_glyph_origin_for_direction (hb_font_t *font,
257 hb_codepoint_t glyph,
258 hb_direction_t direction,
259 hb_position_t *x, hb_position_t *y);
260void
261hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
262 hb_codepoint_t glyph,
263 hb_direction_t direction,
264 hb_position_t *x, hb_position_t *y);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400265
266void
Behdad Esfahbod7e2c85d2011-05-17 17:55:03 -0400267hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
268 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
269 hb_direction_t direction,
270 hb_position_t *x, hb_position_t *y);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400271
Behdad Esfahbod60fbb362011-05-19 18:46:15 -0400272hb_bool_t
273hb_font_get_glyph_extents_for_origin (hb_font_t *font,
274 hb_codepoint_t glyph,
275 hb_direction_t direction,
276 hb_glyph_extents_t *extents);
Behdad Esfahbod744970a2011-05-16 18:15:37 -0400277
278hb_bool_t
Behdad Esfahbod60fbb362011-05-19 18:46:15 -0400279hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
280 hb_codepoint_t glyph, unsigned int point_index,
281 hb_direction_t direction,
282 hb_position_t *x, hb_position_t *y);
Behdad Esfahbod2e336692009-11-05 13:55:41 -0500283
Behdad Esfahbod6f3a3002012-08-07 22:13:25 -0400284/* Generates gidDDD if glyph has no name. */
285void
286hb_font_glyph_to_string (hb_font_t *font,
287 hb_codepoint_t glyph,
288 char *s, unsigned int size);
289/* Parses gidDDD and uniUUUU strings automatically. */
290hb_bool_t
291hb_font_glyph_from_string (hb_font_t *font,
292 const char *s, int len, /* -1 means nul-terminated */
293 hb_codepoint_t *glyph);
294
Behdad Esfahbod2e336692009-11-05 13:55:41 -0500295
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400296/*
297 * hb_font_t
298 */
299
300/* Fonts are very light-weight objects */
301
302hb_font_t *
Behdad Esfahbod72657e42011-05-02 20:46:32 -0400303hb_font_create (hb_face_t *face);
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400304
305hb_font_t *
Behdad Esfahboddefc45b2011-05-10 20:02:49 -0400306hb_font_create_sub_font (hb_font_t *parent);
307
308hb_font_t *
Behdad Esfahbod80a68332011-05-11 18:14:44 -0400309hb_font_get_empty (void);
310
311hb_font_t *
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400312hb_font_reference (hb_font_t *font);
313
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400314void
315hb_font_destroy (hb_font_t *font);
316
Behdad Esfahbod5fa849b2011-04-27 21:46:01 -0400317hb_bool_t
318hb_font_set_user_data (hb_font_t *font,
319 hb_user_data_key_t *key,
320 void * data,
Behdad Esfahbod33ccc772011-08-09 00:43:24 +0200321 hb_destroy_func_t destroy,
322 hb_bool_t replace);
Behdad Esfahbod5fa849b2011-04-27 21:46:01 -0400323
324
325void *
326hb_font_get_user_data (hb_font_t *font,
327 hb_user_data_key_t *key);
328
Behdad Esfahbod74f1d892011-05-10 19:39:32 -0400329void
330hb_font_make_immutable (hb_font_t *font);
331
332hb_bool_t
333hb_font_is_immutable (hb_font_t *font);
334
Behdad Esfahboddefc45b2011-05-10 20:02:49 -0400335hb_font_t *
336hb_font_get_parent (hb_font_t *font);
Behdad Esfahbod5fa849b2011-04-27 21:46:01 -0400337
Behdad Esfahbod72657e42011-05-02 20:46:32 -0400338hb_face_t *
339hb_font_get_face (hb_font_t *font);
340
341
Behdad Esfahbod5c441882009-08-10 20:05:16 -0400342void
Behdad Esfahbod8fb3d1a2009-11-03 18:34:20 -0500343hb_font_set_funcs (hb_font_t *font,
344 hb_font_funcs_t *klass,
Behdad Esfahbodb9d975b2011-05-10 20:41:13 -0400345 void *font_data,
Behdad Esfahbod56681892011-04-20 03:03:32 -0400346 hb_destroy_func_t destroy);
Behdad Esfahbod0ead4812009-08-02 17:41:36 -0400347
Behdad Esfahbodb9415e72011-08-17 19:21:44 +0200348/* Be *very* careful with this function! */
349void
350hb_font_set_funcs_data (hb_font_t *font,
351 void *font_data,
352 hb_destroy_func_t destroy);
353
Behdad Esfahbod5ebabec2009-11-03 15:15:07 -0500354
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400355void
356hb_font_set_scale (hb_font_t *font,
Behdad Esfahbodda975412011-04-21 15:08:01 -0400357 int x_scale,
358 int y_scale);
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400359
Behdad Esfahbod19c0eab2010-10-04 16:45:21 -0400360void
361hb_font_get_scale (hb_font_t *font,
Behdad Esfahbodda975412011-04-21 15:08:01 -0400362 int *x_scale,
363 int *y_scale);
Behdad Esfahbod19c0eab2010-10-04 16:45:21 -0400364
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400365/*
366 * A zero value means "no hinting in that direction"
367 */
368void
369hb_font_set_ppem (hb_font_t *font,
370 unsigned int x_ppem,
371 unsigned int y_ppem);
372
Behdad Esfahbod19c0eab2010-10-04 16:45:21 -0400373void
374hb_font_get_ppem (hb_font_t *font,
375 unsigned int *x_ppem,
376 unsigned int *y_ppem);
377
Behdad Esfahbodc62b5032009-08-01 19:54:49 -0400378
379HB_END_DECLS
380
381#endif /* HB_FONT_H */