Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: third_party/harfbuzz-ng/src/hb-font.cc

Issue 1476763003: Roll HarfBuzz to 1.1.1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: windows line height rebaseline Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright © 2009 Red Hat, Inc. 2 * Copyright © 2009 Red Hat, Inc.
3 * Copyright © 2012 Google, Inc. 3 * Copyright © 2012 Google, Inc.
4 * 4 *
5 * This is part of HarfBuzz, a text shaping library. 5 * This is part of HarfBuzz, a text shaping library.
6 * 6 *
7 * Permission is hereby granted, without written agreement and without 7 * Permission is hereby granted, without written agreement and without
8 * license or royalty fees, to use, copy, modify, and distribute this 8 * license or royalty fees, to use, copy, modify, and distribute this
9 * software and its documentation for any purpose, provided that the 9 * software and its documentation for any purpose, provided that the
10 * above copyright notice and the following two paragraphs appear in 10 * above copyright notice and the following two paragraphs appear in
(...skipping 27 matching lines...) Expand all
38 #include "hb-cache-private.hh" 38 #include "hb-cache-private.hh"
39 39
40 #include <string.h> 40 #include <string.h>
41 41
42 42
43 /* 43 /*
44 * hb_font_funcs_t 44 * hb_font_funcs_t
45 */ 45 */
46 46
47 static hb_bool_t 47 static hb_bool_t
48 hb_font_get_glyph_nil (hb_font_t *font, 48 hb_font_get_glyph_nil (hb_font_t *font HB_UNUSED,
49 void *font_data HB_UNUSED, 49 void *font_data HB_UNUSED,
50 hb_codepoint_t unicode, 50 hb_codepoint_t unicode,
51 hb_codepoint_t variation_selector, 51 hb_codepoint_t variation_selector,
52 hb_codepoint_t *glyph, 52 hb_codepoint_t *glyph,
53 void *user_data HB_UNUSED) 53 void *user_data HB_UNUSED)
54 { 54 {
55 if (font->parent)
56 return font->parent->get_glyph (unicode, variation_selector, glyph);
57
58 *glyph = 0; 55 *glyph = 0;
59 return false; 56 return false;
60 } 57 }
58 static hb_bool_t
59 hb_font_get_glyph_parent (hb_font_t *font,
60 void *font_data HB_UNUSED,
61 hb_codepoint_t unicode,
62 hb_codepoint_t variation_selector,
63 hb_codepoint_t *glyph,
64 void *user_data HB_UNUSED)
65 {
66 return font->parent->get_glyph (unicode, variation_selector, glyph);
67 }
61 68
62 static hb_position_t 69 static hb_position_t
63 hb_font_get_glyph_h_advance_nil (hb_font_t *font, 70 hb_font_get_glyph_h_advance_nil (hb_font_t *font HB_UNUSED,
64 void *font_data HB_UNUSED, 71 void *font_data HB_UNUSED,
65 hb_codepoint_t glyph, 72 hb_codepoint_t glyph,
66 void *user_data HB_UNUSED) 73 void *user_data HB_UNUSED)
67 { 74 {
68 if (font->parent)
69 return font->parent_scale_x_distance (font->parent->get_glyph_h_advance (gly ph));
70
71 return font->x_scale; 75 return font->x_scale;
72 } 76 }
77 static hb_position_t
78 hb_font_get_glyph_h_advance_parent (hb_font_t *font,
79 void *font_data HB_UNUSED,
80 hb_codepoint_t glyph,
81 void *user_data HB_UNUSED)
82 {
83 return font->parent_scale_x_distance (font->parent->get_glyph_h_advance (glyph ));
84 }
73 85
74 static hb_position_t 86 static hb_position_t
75 hb_font_get_glyph_v_advance_nil (hb_font_t *font, 87 hb_font_get_glyph_v_advance_nil (hb_font_t *font HB_UNUSED,
76 void *font_data HB_UNUSED, 88 void *font_data HB_UNUSED,
77 hb_codepoint_t glyph, 89 hb_codepoint_t glyph,
78 void *user_data HB_UNUSED) 90 void *user_data HB_UNUSED)
79 { 91 {
80 if (font->parent)
81 return font->parent_scale_y_distance (font->parent->get_glyph_v_advance (gly ph));
82
83 return font->y_scale; 92 return font->y_scale;
84 } 93 }
94 static hb_position_t
95 hb_font_get_glyph_v_advance_parent (hb_font_t *font,
96 void *font_data HB_UNUSED,
97 hb_codepoint_t glyph,
98 void *user_data HB_UNUSED)
99 {
100 return font->parent_scale_y_distance (font->parent->get_glyph_v_advance (glyph ));
101 }
85 102
86 static hb_bool_t 103 static hb_bool_t
87 hb_font_get_glyph_h_origin_nil (hb_font_t *font, 104 hb_font_get_glyph_h_origin_nil (hb_font_t *font HB_UNUSED,
88 void *font_data HB_UNUSED, 105 void *font_data HB_UNUSED,
89 hb_codepoint_t glyph, 106 hb_codepoint_t glyph,
90 hb_position_t *x, 107 hb_position_t *x,
91 hb_position_t *y, 108 hb_position_t *y,
92 void *user_data HB_UNUSED) 109 void *user_data HB_UNUSED)
93 { 110 {
94 if (font->parent) {
95 hb_bool_t ret = font->parent->get_glyph_h_origin (glyph, x, y);
96 if (ret)
97 font->parent_scale_position (x, y);
98 return ret;
99 }
100
101 *x = *y = 0; 111 *x = *y = 0;
102 return false; 112 return false;
103 } 113 }
114 static hb_bool_t
115 hb_font_get_glyph_h_origin_parent (hb_font_t *font,
116 void *font_data HB_UNUSED,
117 hb_codepoint_t glyph,
118 hb_position_t *x,
119 hb_position_t *y,
120 void *user_data HB_UNUSED)
121 {
122 hb_bool_t ret = font->parent->get_glyph_h_origin (glyph, x, y);
123 if (ret)
124 font->parent_scale_position (x, y);
125 return ret;
126 }
104 127
105 static hb_bool_t 128 static hb_bool_t
106 hb_font_get_glyph_v_origin_nil (hb_font_t *font, 129 hb_font_get_glyph_v_origin_nil (hb_font_t *font HB_UNUSED,
107 void *font_data HB_UNUSED, 130 void *font_data HB_UNUSED,
108 hb_codepoint_t glyph, 131 hb_codepoint_t glyph,
109 hb_position_t *x, 132 hb_position_t *x,
110 hb_position_t *y, 133 hb_position_t *y,
111 void *user_data HB_UNUSED) 134 void *user_data HB_UNUSED)
112 { 135 {
113 if (font->parent) {
114 hb_bool_t ret = font->parent->get_glyph_v_origin (glyph, x, y);
115 if (ret)
116 font->parent_scale_position (x, y);
117 return ret;
118 }
119
120 *x = *y = 0; 136 *x = *y = 0;
121 return false; 137 return false;
122 } 138 }
139 static hb_bool_t
140 hb_font_get_glyph_v_origin_parent (hb_font_t *font,
141 void *font_data HB_UNUSED,
142 hb_codepoint_t glyph,
143 hb_position_t *x,
144 hb_position_t *y,
145 void *user_data HB_UNUSED)
146 {
147 hb_bool_t ret = font->parent->get_glyph_v_origin (glyph, x, y);
148 if (ret)
149 font->parent_scale_position (x, y);
150 return ret;
151 }
123 152
124 static hb_position_t 153 static hb_position_t
125 hb_font_get_glyph_h_kerning_nil (hb_font_t *font, 154 hb_font_get_glyph_h_kerning_nil (hb_font_t *font HB_UNUSED,
126 void *font_data HB_UNUSED, 155 void *font_data HB_UNUSED,
127 hb_codepoint_t left_glyph, 156 hb_codepoint_t left_glyph,
128 hb_codepoint_t right_glyph, 157 hb_codepoint_t right_glyph,
129 void *user_data HB_UNUSED) 158 void *user_data HB_UNUSED)
130 { 159 {
131 if (font->parent)
132 return font->parent_scale_x_distance (font->parent->get_glyph_h_kerning (lef t_glyph, right_glyph));
133
134 return 0; 160 return 0;
135 } 161 }
162 static hb_position_t
163 hb_font_get_glyph_h_kerning_parent (hb_font_t *font,
164 void *font_data HB_UNUSED,
165 hb_codepoint_t left_glyph,
166 hb_codepoint_t right_glyph,
167 void *user_data HB_UNUSED)
168 {
169 return font->parent_scale_x_distance (font->parent->get_glyph_h_kerning (left_ glyph, right_glyph));
170 }
136 171
137 static hb_position_t 172 static hb_position_t
138 hb_font_get_glyph_v_kerning_nil (hb_font_t *font, 173 hb_font_get_glyph_v_kerning_nil (hb_font_t *font HB_UNUSED,
139 void *font_data HB_UNUSED, 174 void *font_data HB_UNUSED,
140 hb_codepoint_t top_glyph, 175 hb_codepoint_t top_glyph,
141 hb_codepoint_t bottom_glyph, 176 hb_codepoint_t bottom_glyph,
142 void *user_data HB_UNUSED) 177 void *user_data HB_UNUSED)
143 { 178 {
144 if (font->parent)
145 return font->parent_scale_y_distance (font->parent->get_glyph_v_kerning (top _glyph, bottom_glyph));
146
147 return 0; 179 return 0;
148 } 180 }
181 static hb_position_t
182 hb_font_get_glyph_v_kerning_parent (hb_font_t *font,
183 void *font_data HB_UNUSED,
184 hb_codepoint_t top_glyph,
185 hb_codepoint_t bottom_glyph,
186 void *user_data HB_UNUSED)
187 {
188 return font->parent_scale_y_distance (font->parent->get_glyph_v_kerning (top_g lyph, bottom_glyph));
189 }
149 190
150 static hb_bool_t 191 static hb_bool_t
151 hb_font_get_glyph_extents_nil (hb_font_t *font, 192 hb_font_get_glyph_extents_nil (hb_font_t *font HB_UNUSED,
152 void *font_data HB_UNUSED, 193 void *font_data HB_UNUSED,
153 hb_codepoint_t glyph, 194 hb_codepoint_t glyph,
154 hb_glyph_extents_t *extents, 195 hb_glyph_extents_t *extents,
155 void *user_data HB_UNUSED) 196 void *user_data HB_UNUSED)
156 { 197 {
157 if (font->parent) {
158 hb_bool_t ret = font->parent->get_glyph_extents (glyph, extents);
159 if (ret) {
160 font->parent_scale_position (&extents->x_bearing, &extents->y_bearing);
161 font->parent_scale_distance (&extents->width, &extents->height);
162 }
163 return ret;
164 }
165
166 memset (extents, 0, sizeof (*extents)); 198 memset (extents, 0, sizeof (*extents));
167 return false; 199 return false;
168 } 200 }
201 static hb_bool_t
202 hb_font_get_glyph_extents_parent (hb_font_t *font,
203 void *font_data HB_UNUSED,
204 hb_codepoint_t glyph,
205 hb_glyph_extents_t *extents,
206 void *user_data HB_UNUSED)
207 {
208 hb_bool_t ret = font->parent->get_glyph_extents (glyph, extents);
209 if (ret) {
210 font->parent_scale_position (&extents->x_bearing, &extents->y_bearing);
211 font->parent_scale_distance (&extents->width, &extents->height);
212 }
213 return ret;
214 }
169 215
170 static hb_bool_t 216 static hb_bool_t
171 hb_font_get_glyph_contour_point_nil (hb_font_t *font, 217 hb_font_get_glyph_contour_point_nil (hb_font_t *font HB_UNUSED,
172 void *font_data HB_UNUSED, 218 void *font_data HB_UNUSED,
173 hb_codepoint_t glyph, 219 hb_codepoint_t glyph,
174 unsigned int point_index, 220 unsigned int point_index,
175 hb_position_t *x, 221 hb_position_t *x,
176 hb_position_t *y, 222 hb_position_t *y,
177 void *user_data HB_UNUSED) 223 void *user_data HB_UNUSED)
178 { 224 {
179 if (font->parent) {
180 hb_bool_t ret = font->parent->get_glyph_contour_point (glyph, point_index, x , y);
181 if (ret)
182 font->parent_scale_position (x, y);
183 return ret;
184 }
185
186 *x = *y = 0; 225 *x = *y = 0;
187 return false; 226 return false;
188 } 227 }
228 static hb_bool_t
229 hb_font_get_glyph_contour_point_parent (hb_font_t *font,
230 void *font_data HB_UNUSED,
231 hb_codepoint_t glyph,
232 unsigned int point_index,
233 hb_position_t *x,
234 hb_position_t *y,
235 void *user_data HB_UNUSED)
236 {
237 hb_bool_t ret = font->parent->get_glyph_contour_point (glyph, point_index, x, y);
238 if (ret)
239 font->parent_scale_position (x, y);
240 return ret;
241 }
189 242
190 static hb_bool_t 243 static hb_bool_t
191 hb_font_get_glyph_name_nil (hb_font_t *font, 244 hb_font_get_glyph_name_nil (hb_font_t *font HB_UNUSED,
192 void *font_data HB_UNUSED, 245 void *font_data HB_UNUSED,
193 hb_codepoint_t glyph, 246 hb_codepoint_t glyph,
194 char *name, unsigned int size, 247 char *name, unsigned int size,
195 void *user_data HB_UNUSED) 248 void *user_data HB_UNUSED)
196 { 249 {
197 if (font->parent)
198 return font->parent->get_glyph_name (glyph, name, size);
199
200 if (size) *name = '\0'; 250 if (size) *name = '\0';
201 return false; 251 return false;
202 } 252 }
253 static hb_bool_t
254 hb_font_get_glyph_name_parent (hb_font_t *font,
255 void *font_data HB_UNUSED,
256 hb_codepoint_t glyph,
257 char *name, unsigned int size,
258 void *user_data HB_UNUSED)
259 {
260 return font->parent->get_glyph_name (glyph, name, size);
261 }
203 262
204 static hb_bool_t 263 static hb_bool_t
205 hb_font_get_glyph_from_name_nil (hb_font_t *font, 264 hb_font_get_glyph_from_name_nil (hb_font_t *font HB_UNUSED,
206 void *font_data HB_UNUSED, 265 void *font_data HB_UNUSED,
207 const char *name, int len, /* -1 means nul-term inated */ 266 const char *name, int len, /* -1 means nul-term inated */
208 hb_codepoint_t *glyph, 267 hb_codepoint_t *glyph,
209 void *user_data HB_UNUSED) 268 void *user_data HB_UNUSED)
210 { 269 {
211 if (font->parent)
212 return font->parent->get_glyph_from_name (name, len, glyph);
213
214 *glyph = 0; 270 *glyph = 0;
215 return false; 271 return false;
216 } 272 }
273 static hb_bool_t
274 hb_font_get_glyph_from_name_parent (hb_font_t *font,
275 void *font_data HB_UNUSED,
276 const char *name, int len, /* -1 means nul-t erminated */
277 hb_codepoint_t *glyph,
278 void *user_data HB_UNUSED)
279 {
280 return font->parent->get_glyph_from_name (name, len, glyph);
281 }
217 282
218 283
219 static const hb_font_funcs_t _hb_font_funcs_nil = { 284 static const hb_font_funcs_t _hb_font_funcs_nil = {
220 HB_OBJECT_HEADER_STATIC, 285 HB_OBJECT_HEADER_STATIC,
221 286
222 true, /* immutable */ 287 true, /* immutable */
223 288
224 { 289 {
225 #define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_nil, 290 #define HB_FONT_FUNC_IMPLEMENT(name) NULL,
226 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS 291 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
227 #undef HB_FONT_FUNC_IMPLEMENT 292 #undef HB_FONT_FUNC_IMPLEMENT
293 },
294 {
295 #define HB_FONT_FUNC_IMPLEMENT(name) NULL,
296 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
297 #undef HB_FONT_FUNC_IMPLEMENT
298 },
299 {
300 {
301 #define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_nil,
302 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
303 #undef HB_FONT_FUNC_IMPLEMENT
304 }
305 }
306 };
307 static const hb_font_funcs_t _hb_font_funcs_parent = {
308 HB_OBJECT_HEADER_STATIC,
309
310 true, /* immutable */
311
312 {
313 #define HB_FONT_FUNC_IMPLEMENT(name) NULL,
314 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
315 #undef HB_FONT_FUNC_IMPLEMENT
316 },
317 {
318 #define HB_FONT_FUNC_IMPLEMENT(name) NULL,
319 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
320 #undef HB_FONT_FUNC_IMPLEMENT
321 },
322 {
323 {
324 #define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_parent,
325 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
326 #undef HB_FONT_FUNC_IMPLEMENT
327 }
228 } 328 }
229 }; 329 };
230 330
231 331
232 /** 332 /**
233 * hb_font_funcs_create: (Xconstructor) 333 * hb_font_funcs_create: (Xconstructor)
234 * 334 *
235 * 335 *
236 * 336 *
237 * Return value: (transfer full): 337 * Return value: (transfer full):
238 * 338 *
239 * Since: 0.9.2 339 * Since: 0.9.2
240 **/ 340 **/
241 hb_font_funcs_t * 341 hb_font_funcs_t *
242 hb_font_funcs_create (void) 342 hb_font_funcs_create (void)
243 { 343 {
244 hb_font_funcs_t *ffuncs; 344 hb_font_funcs_t *ffuncs;
245 345
246 if (!(ffuncs = hb_object_create<hb_font_funcs_t> ())) 346 if (!(ffuncs = hb_object_create<hb_font_funcs_t> ()))
247 return hb_font_funcs_get_empty (); 347 return hb_font_funcs_get_empty ();
248 348
249 ffuncs->get = _hb_font_funcs_nil.get; 349 ffuncs->get = _hb_font_funcs_parent.get;
250 350
251 return ffuncs; 351 return ffuncs;
252 } 352 }
253 353
254 /** 354 /**
255 * hb_font_funcs_get_empty: 355 * hb_font_funcs_get_empty:
256 * 356 *
257 * 357 *
258 * 358 *
259 * Return value: (transfer full): 359 * Return value: (transfer full):
260 * 360 *
261 * Since: 0.9.2 361 * Since: 0.9.2
262 **/ 362 **/
263 hb_font_funcs_t * 363 hb_font_funcs_t *
264 hb_font_funcs_get_empty (void) 364 hb_font_funcs_get_empty (void)
265 { 365 {
266 return const_cast<hb_font_funcs_t *> (&_hb_font_funcs_nil); 366 return const_cast<hb_font_funcs_t *> (&_hb_font_funcs_parent);
267 } 367 }
268 368
269 /** 369 /**
270 * hb_font_funcs_reference: (skip) 370 * hb_font_funcs_reference: (skip)
271 * @ffuncs: font functions. 371 * @ffuncs: font functions.
272 * 372 *
273 * 373 *
274 * 374 *
275 * Return value: 375 * Return value:
276 * 376 *
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 if (ffuncs->immutable) { \ 491 if (ffuncs->immutable) { \
392 if (destroy) \ 492 if (destroy) \
393 destroy (user_data); \ 493 destroy (user_data); \
394 return; \ 494 return; \
395 } \ 495 } \
396 \ 496 \
397 if (ffuncs->destroy.name) \ 497 if (ffuncs->destroy.name) \
398 ffuncs->destroy.name (ffuncs->user_data.name); \ 498 ffuncs->destroy.name (ffuncs->user_data.name); \
399 \ 499 \
400 if (func) { \ 500 if (func) { \
401 ffuncs->get.name = func; \ 501 ffuncs->get.f.name = func; \
402 ffuncs->user_data.name = user_data; \ 502 ffuncs->user_data.name = user_data; \
403 ffuncs->destroy.name = destroy; \ 503 ffuncs->destroy.name = destroy; \
404 } else { \ 504 } else { \
405 ffuncs->get.name = hb_font_get_##name##_nil; \ 505 ffuncs->get.f.name = hb_font_get_##name##_parent; \
406 ffuncs->user_data.name = NULL; \ 506 ffuncs->user_data.name = NULL; \
407 ffuncs->destroy.name = NULL; \ 507 ffuncs->destroy.name = NULL; \
408 } \ 508 } \
409 } 509 }
410 510
411 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS 511 HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
412 #undef HB_FONT_FUNC_IMPLEMENT 512 #undef HB_FONT_FUNC_IMPLEMENT
413 513
514 bool
515 hb_font_t::has_func (unsigned int i)
516 {
517 if (parent && parent != hb_font_get_empty () && parent->has_func (i))
518 return true;
519 return this->klass->get.array[i] != _hb_font_funcs_parent.get.array[i];
520 }
414 521
415 /* Public getters */ 522 /* Public getters */
416 523
417 /** 524 /**
418 * hb_font_get_glyph: 525 * hb_font_get_glyph:
419 * @font: a font. 526 * @font: a font.
420 * @unicode: 527 * @unicode:
421 * @variation_selector: 528 * @variation_selector:
422 * @glyph: (out): 529 * @glyph: (out):
423 * 530 *
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 hb_font_create (hb_face_t *face) 958 hb_font_create (hb_face_t *face)
852 { 959 {
853 hb_font_t *font; 960 hb_font_t *font;
854 961
855 if (unlikely (!face)) 962 if (unlikely (!face))
856 face = hb_face_get_empty (); 963 face = hb_face_get_empty ();
857 if (!(font = hb_object_create<hb_font_t> ())) 964 if (!(font = hb_object_create<hb_font_t> ()))
858 return hb_font_get_empty (); 965 return hb_font_get_empty ();
859 966
860 hb_face_make_immutable (face); 967 hb_face_make_immutable (face);
968 font->parent = hb_font_get_empty ();
861 font->face = hb_face_reference (face); 969 font->face = hb_face_reference (face);
862 font->klass = hb_font_funcs_get_empty (); 970 font->klass = hb_font_funcs_get_empty ();
863 971
864 font->x_scale = font->y_scale = hb_face_get_upem (face); 972 font->x_scale = font->y_scale = hb_face_get_upem (face);
865 973
866 return font; 974 return font;
867 } 975 }
868 976
869 /** 977 /**
870 * hb_font_create_sub_font: 978 * hb_font_create_sub_font:
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 hb_font_get_empty (void) 1018 hb_font_get_empty (void)
911 { 1019 {
912 static const hb_font_t _hb_font_nil = { 1020 static const hb_font_t _hb_font_nil = {
913 HB_OBJECT_HEADER_STATIC, 1021 HB_OBJECT_HEADER_STATIC,
914 1022
915 true, /* immutable */ 1023 true, /* immutable */
916 1024
917 NULL, /* parent */ 1025 NULL, /* parent */
918 const_cast<hb_face_t *> (&_hb_face_nil), 1026 const_cast<hb_face_t *> (&_hb_face_nil),
919 1027
920 0, /* x_scale */ 1028 1000, /* x_scale */
921 0, /* y_scale */ 1029 1000, /* y_scale */
922 1030
923 0, /* x_ppem */ 1031 0, /* x_ppem */
924 0, /* y_ppem */ 1032 0, /* y_ppem */
925 1033
926 const_cast<hb_font_funcs_t *> (&_hb_font_funcs_nil), /* klass */ 1034 const_cast<hb_font_funcs_t *> (&_hb_font_funcs_nil), /* klass */
927 NULL, /* user_data */ 1035 NULL, /* user_data */
928 NULL, /* destroy */ 1036 NULL, /* destroy */
929 1037
930 { 1038 {
931 #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID, 1039 #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID,
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 * Since: 0.9.2 1365 * Since: 0.9.2
1258 **/ 1366 **/
1259 void 1367 void
1260 hb_font_get_ppem (hb_font_t *font, 1368 hb_font_get_ppem (hb_font_t *font,
1261 unsigned int *x_ppem, 1369 unsigned int *x_ppem,
1262 unsigned int *y_ppem) 1370 unsigned int *y_ppem)
1263 { 1371 {
1264 if (x_ppem) *x_ppem = font->x_ppem; 1372 if (x_ppem) *x_ppem = font->x_ppem;
1265 if (y_ppem) *y_ppem = font->y_ppem; 1373 if (y_ppem) *y_ppem = font->y_ppem;
1266 } 1374 }
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-buffer-private.hh ('k') | third_party/harfbuzz-ng/src/hb-font-private.hh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698