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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-layout-private.hh

Issue 1723043002: Roll HarfBuzz to 1.2.1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Include upstream ebd7431f824 Created 4 years, 10 months 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 © 2007,2008,2009 Red Hat, Inc. 2 * Copyright © 2007,2008,2009 Red Hat, Inc.
3 * Copyright © 2012,2013 Google, Inc. 3 * Copyright © 2012,2013 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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 struct hb_apply_context_t; 92 struct hb_apply_context_t;
93 struct SubstLookup; 93 struct SubstLookup;
94 } 94 }
95 95
96 HB_INTERNAL void 96 HB_INTERNAL void
97 hb_ot_layout_substitute_lookup (OT::hb_apply_context_t *c, 97 hb_ot_layout_substitute_lookup (OT::hb_apply_context_t *c,
98 const OT::SubstLookup &lookup, 98 const OT::SubstLookup &lookup,
99 const hb_ot_layout_lookup_accelerator_t &accel); 99 const hb_ot_layout_lookup_accelerator_t &accel);
100 100
101 101
102 /* Should be called after all the substitute_lookup's are done */ 102 /* Should be called before all the position_lookup's are done. */
103 HB_INTERNAL void
104 hb_ot_layout_substitute_finish (hb_font_t *font,
105 » » » » hb_buffer_t *buffer);
106
107
108 /* Should be called before all the position_lookup's are done. Resets positions to zero. */
109 HB_INTERNAL void 103 HB_INTERNAL void
110 hb_ot_layout_position_start (hb_font_t *font, 104 hb_ot_layout_position_start (hb_font_t *font,
111 hb_buffer_t *buffer); 105 hb_buffer_t *buffer);
112 106
113 /* Should be called after all the position_lookup's are done */ 107 /* Should be called after all the position_lookup's are done, to finish advances . */
114 HB_INTERNAL void 108 HB_INTERNAL void
115 hb_ot_layout_position_finish (hb_font_t *font, 109 hb_ot_layout_position_finish_advances (hb_font_t *font,
116 » » » hb_buffer_t *buffer); 110 » » » » hb_buffer_t *buffer);
111
112 /* Should be called after hb_ot_layout_position_finish_advances, to finish offse ts. */
113 HB_INTERNAL void
114 hb_ot_layout_position_finish_offsets (hb_font_t *font,
115 » » » » hb_buffer_t *buffer);
117 116
118 117
119 118
120 /* 119 /*
121 * hb_ot_layout_t 120 * hb_ot_layout_t
122 */ 121 */
123 122
124 namespace OT { 123 namespace OT {
125 struct GDEF; 124 struct GDEF;
126 struct GSUB; 125 struct GSUB;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 if (u >= 0x80) 249 if (u >= 0x80)
251 { 250 {
252 buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII; 251 buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII;
253 if (unlikely (unicode->is_default_ignorable (u))) 252 if (unlikely (unicode->is_default_ignorable (u)))
254 { 253 {
255 buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES; 254 buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES;
256 props |= UPROPS_MASK_IGNORABLE; 255 props |= UPROPS_MASK_IGNORABLE;
257 if (u == 0x200Cu) props |= UPROPS_MASK_ZWNJ; 256 if (u == 0x200Cu) props |= UPROPS_MASK_ZWNJ;
258 if (u == 0x200Du) props |= UPROPS_MASK_ZWJ; 257 if (u == 0x200Du) props |= UPROPS_MASK_ZWJ;
259 } 258 }
260 else if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK (gen_ca t))) 259 else if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODI FIER_SYMBOL (gen_cat)))
261 { 260 {
261 /* The above check is just an optimization to let in only things we need f urther
262 * processing on. */
263
262 /* Only Mn and Mc can have non-zero ccc: 264 /* Only Mn and Mc can have non-zero ccc:
263 * http://www.unicode.org/policies/stability_policy.html#Property_Value 265 * http://www.unicode.org/policies/stability_policy.html#Property_Value
264 * """ 266 * """
265 * Canonical_Combining_Class, General_Category 267 * Canonical_Combining_Class, General_Category
266 * All characters other than those with General_Category property values 268 * All characters other than those with General_Category property values
267 * Spacing_Mark (Mc) and Nonspacing_Mark (Mn) have the Canonical_Combining _Class 269 * Spacing_Mark (Mc) and Nonspacing_Mark (Mn) have the Canonical_Combining _Class
268 * property value 0. 270 * property value 0.
269 * 1.1.5+ 271 * 1.1.5+
270 * """ 272 * """
271 * 273 *
272 * Also, all Mn's that are Default_Ignorable, have ccc=0, hence 274 * Also, all Mn's that are Default_Ignorable, have ccc=0, hence
273 * the "else if". 275 * the "else if".
274 */ 276 */
275 props |= unicode->modified_combining_class (info->codepoint)<<8; 277 props |= unicode->modified_combining_class (info->codepoint)<<8;
278
279 /* Recategorize emoji skin-tone modifiers as Unicode mark, so they
280 * behave correctly in non-native directionality. They originally
281 * are MODIFIER_SYMBOL. Fixes:
282 * https://github.com/behdad/harfbuzz/issues/169
283 */
284 if (unlikely (hb_in_range (u, 0x1F3FBu, 0x1F3FFu)))
285 {
286 props = gen_cat = HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK;
287 }
276 } 288 }
277 } 289 }
278 290
279 info->unicode_props() = props; 291 info->unicode_props() = props;
280 } 292 }
281 293
282 static inline void 294 static inline void
283 _hb_glyph_info_set_general_category (hb_glyph_info_t *info, 295 _hb_glyph_info_set_general_category (hb_glyph_info_t *info,
284 hb_unicode_general_category_t gen_cat) 296 hb_unicode_general_category_t gen_cat)
285 { 297 {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 { 358 {
347 return !!(info->unicode_props() & UPROPS_MASK_ZWNJ); 359 return !!(info->unicode_props() & UPROPS_MASK_ZWNJ);
348 } 360 }
349 361
350 static inline hb_bool_t 362 static inline hb_bool_t
351 _hb_glyph_info_is_zwj (const hb_glyph_info_t *info) 363 _hb_glyph_info_is_zwj (const hb_glyph_info_t *info)
352 { 364 {
353 return !!(info->unicode_props() & UPROPS_MASK_ZWJ); 365 return !!(info->unicode_props() & UPROPS_MASK_ZWJ);
354 } 366 }
355 367
368 static inline hb_bool_t
369 _hb_glyph_info_is_joiner (const hb_glyph_info_t *info)
370 {
371 return !!(info->unicode_props() & (UPROPS_MASK_ZWNJ | UPROPS_MASK_ZWJ));
372 }
373
356 static inline void 374 static inline void
357 _hb_glyph_info_flip_joiners (hb_glyph_info_t *info) 375 _hb_glyph_info_flip_joiners (hb_glyph_info_t *info)
358 { 376 {
359 info->unicode_props() ^= UPROPS_MASK_ZWNJ | UPROPS_MASK_ZWJ; 377 info->unicode_props() ^= UPROPS_MASK_ZWNJ | UPROPS_MASK_ZWJ;
360 } 378 }
361 379
362 /* lig_props: aka lig_id / lig_comp 380 /* lig_props: aka lig_id / lig_comp
363 * 381 *
364 * When a ligature is formed: 382 * When a ligature is formed:
365 * 383 *
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 } 586 }
569 587
570 /* Make sure no one directly touches our props... */ 588 /* Make sure no one directly touches our props... */
571 #undef unicode_props0 589 #undef unicode_props0
572 #undef unicode_props1 590 #undef unicode_props1
573 #undef lig_props 591 #undef lig_props
574 #undef glyph_props 592 #undef glyph_props
575 593
576 594
577 #endif /* HB_OT_LAYOUT_PRIVATE_HH */ 595 #endif /* HB_OT_LAYOUT_PRIVATE_HH */
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-layout-jstf-table.hh ('k') | third_party/harfbuzz-ng/src/hb-ot-maxp-table.hh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698