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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc

Issue 205003003: Update harfbuzz-ng to 0.9.27 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: w/missing files Created 6 years, 9 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 © 2011,2012,2013 Google, Inc. 2 * Copyright © 2011,2012,2013 Google, Inc.
3 * 3 *
4 * This is part of HarfBuzz, a text shaping library. 4 * This is part of HarfBuzz, a text shaping library.
5 * 5 *
6 * Permission is hereby granted, without written agreement and without 6 * Permission is hereby granted, without written agreement and without
7 * license or royalty fees, to use, copy, modify, and distribute this 7 * license or royalty fees, to use, copy, modify, and distribute this
8 * software and its documentation for any purpose, provided that the 8 * software and its documentation for any purpose, provided that the
9 * above copyright notice and the following two paragraphs appear in 9 * above copyright notice and the following two paragraphs appear in
10 * all copies of this software. 10 * all copies of this software.
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 112
113 static void 113 static void
114 override_features_myanmar (hb_ot_shape_planner_t *plan) 114 override_features_myanmar (hb_ot_shape_planner_t *plan)
115 { 115 {
116 plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL); 116 plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL);
117 } 117 }
118 118
119 119
120 enum syllable_type_t { 120 enum syllable_type_t {
121 consonant_syllable, 121 consonant_syllable,
122 punctuation_cluster,
122 broken_cluster, 123 broken_cluster,
123 non_myanmar_cluster, 124 non_myanmar_cluster,
124 }; 125 };
125 126
126 #include "hb-ot-shape-complex-myanmar-machine.hh" 127 #include "hb-ot-shape-complex-myanmar-machine.hh"
127 128
128 129
129 /* Note: This enum is duplicated in the -machine.rl source file. 130 /* Note: This enum is duplicated in the -machine.rl source file.
130 * Not sure how to avoid duplication. */ 131 * Not sure how to avoid duplication. */
131 enum myanmar_category_t { 132 enum myanmar_category_t {
132 OT_As = 18, /* Asat */ 133 OT_As = 18, /* Asat */
133 OT_D = 19, /* Digits except zero */ 134 OT_D = 19, /* Digits except zero */
134 OT_D0 = 20, /* Digit zero */ 135 OT_D0 = 20, /* Digit zero */
135 OT_DB = OT_N, /* Dot below */ 136 OT_DB = OT_N, /* Dot below */
136 OT_GB = OT_DOTTEDCIRCLE, 137 OT_GB = OT_DOTTEDCIRCLE,
137 OT_MH = 21, /* Various consonant medial types */ 138 OT_MH = 21, /* Various consonant medial types */
138 OT_MR = 22, /* Various consonant medial types */ 139 OT_MR = 22, /* Various consonant medial types */
139 OT_MW = 23, /* Various consonant medial types */ 140 OT_MW = 23, /* Various consonant medial types */
140 OT_MY = 24, /* Various consonant medial types */ 141 OT_MY = 24, /* Various consonant medial types */
141 OT_PT = 25, /* Pwo and other tones */ 142 OT_PT = 25, /* Pwo and other tones */
142 OT_VAbv = 26, 143 OT_VAbv = 26,
143 OT_VBlw = 27, 144 OT_VBlw = 27,
144 OT_VPre = 28, 145 OT_VPre = 28,
145 OT_VPst = 29, 146 OT_VPst = 29,
146 OT_VS = 30 /* Variation selectors */ 147 OT_VS = 30, /* Variation selectors */
148 OT_P = 31 /* Punctuation */
147 }; 149 };
148 150
149 151
150 static inline bool 152 static inline bool
151 is_one_of (const hb_glyph_info_t &info, unsigned int flags) 153 is_one_of (const hb_glyph_info_t &info, unsigned int flags)
152 { 154 {
153 /* If it ligated, all bets are off. */ 155 /* If it ligated, all bets are off. */
154 if (_hb_glyph_info_ligated (&info)) return false; 156 if (_hb_glyph_info_ligated (&info)) return false;
155 return !!(FLAG (info.myanmar_category()) & flags); 157 return !!(FLAG (info.myanmar_category()) & flags);
156 } 158 }
(...skipping 22 matching lines...) Expand all
179 /* Myanmar 181 /* Myanmar
180 * http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm#analyze 182 * http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm#analyze
181 */ 183 */
182 if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xFE00, 0xFE0F))) 184 if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xFE00, 0xFE0F)))
183 cat = (indic_category_t) OT_VS; 185 cat = (indic_category_t) OT_VS;
184 else if (unlikely (u == 0x200C)) cat = (indic_category_t) OT_ZWNJ; 186 else if (unlikely (u == 0x200C)) cat = (indic_category_t) OT_ZWNJ;
185 else if (unlikely (u == 0x200D)) cat = (indic_category_t) OT_ZWJ; 187 else if (unlikely (u == 0x200D)) cat = (indic_category_t) OT_ZWJ;
186 188
187 switch (u) 189 switch (u)
188 { 190 {
191 case 0x104E:
192 cat = (indic_category_t) OT_C; /* The spec says C, IndicSyllableCategory d oesn't have. */
193 break;
194
189 case 0x002D: case 0x00A0: case 0x00D7: case 0x2012: 195 case 0x002D: case 0x00A0: case 0x00D7: case 0x2012:
190 case 0x2013: case 0x2014: case 0x2015: case 0x2022: 196 case 0x2013: case 0x2014: case 0x2015: case 0x2022:
191 case 0x25CC: case 0x25FB: case 0x25FC: case 0x25FD: 197 case 0x25CC: case 0x25FB: case 0x25FC: case 0x25FD:
192 case 0x25FE: 198 case 0x25FE:
193 cat = (indic_category_t) OT_GB; 199 cat = (indic_category_t) OT_GB;
194 break; 200 break;
195 201
196 case 0x1004: case 0x101B: case 0x105A: 202 case 0x1004: case 0x101B: case 0x105A:
197 cat = (indic_category_t) OT_Ra; 203 cat = (indic_category_t) OT_Ra;
198 break; 204 break;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 case 0x1063: case 0x1064: case 0x1069: case 0x106A: 242 case 0x1063: case 0x1064: case 0x1069: case 0x106A:
237 case 0x106B: case 0x106C: case 0x106D: case 0xAA7B: 243 case 0x106B: case 0x106C: case 0x106D: case 0xAA7B:
238 cat = (indic_category_t) OT_PT; 244 cat = (indic_category_t) OT_PT;
239 break; 245 break;
240 246
241 case 0x1038: case 0x1087: case 0x1088: case 0x1089: 247 case 0x1038: case 0x1087: case 0x1088: case 0x1089:
242 case 0x108A: case 0x108B: case 0x108C: case 0x108D: 248 case 0x108A: case 0x108B: case 0x108C: case 0x108D:
243 case 0x108F: case 0x109A: case 0x109B: case 0x109C: 249 case 0x108F: case 0x109A: case 0x109B: case 0x109C:
244 cat = (indic_category_t) OT_SM; 250 cat = (indic_category_t) OT_SM;
245 break; 251 break;
252
253 case 0x104A: case 0x104B:
254 cat = (indic_category_t) OT_P;
255 break;
246 } 256 }
247 257
248 if (cat == OT_M) 258 if (cat == OT_M)
249 { 259 {
250 switch ((int) pos) 260 switch ((int) pos)
251 { 261 {
252 case POS_PRE_C: cat = (indic_category_t) OT_VPre; 262 case POS_PRE_C: cat = (indic_category_t) OT_VPre;
253 pos = POS_PRE_M; break; 263 pos = POS_PRE_M; break;
254 case POS_ABOVE_C: cat = (indic_category_t) OT_VAbv; break; 264 case POS_ABOVE_C: cat = (indic_category_t) OT_VAbv; break;
255 case POS_BELOW_C: cat = (indic_category_t) OT_VBlw; break; 265 case POS_BELOW_C: cat = (indic_category_t) OT_VBlw; break;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan, 409 initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
400 hb_face_t *face, 410 hb_face_t *face,
401 hb_buffer_t *buffer, 411 hb_buffer_t *buffer,
402 unsigned int start, unsigned int end) 412 unsigned int start, unsigned int end)
403 { 413 {
404 /* We already inserted dotted-circles, so just call the consonant_syllable. */ 414 /* We already inserted dotted-circles, so just call the consonant_syllable. */
405 initial_reordering_consonant_syllable (plan, face, buffer, start, end); 415 initial_reordering_consonant_syllable (plan, face, buffer, start, end);
406 } 416 }
407 417
408 static void 418 static void
419 initial_reordering_punctuation_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED ,
420 hb_face_t *face HB_UNUSED,
421 hb_buffer_t *buffer HB_UNUSED,
422 unsigned int start HB_UNUSED, unsigned i nt end HB_UNUSED)
423 {
424 /* Nothing to do right now. If we ever switch to using the output
425 * buffer in the reordering process, we'd need to next_glyph() here. */
426 }
427
428 static void
409 initial_reordering_non_myanmar_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED , 429 initial_reordering_non_myanmar_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED ,
410 hb_face_t *face HB_UNUSED, 430 hb_face_t *face HB_UNUSED,
411 hb_buffer_t *buffer HB_UNUSED, 431 hb_buffer_t *buffer HB_UNUSED,
412 unsigned int start HB_UNUSED, unsigned i nt end HB_UNUSED) 432 unsigned int start HB_UNUSED, unsigned i nt end HB_UNUSED)
413 { 433 {
414 /* Nothing to do right now. If we ever switch to using the output 434 /* Nothing to do right now. If we ever switch to using the output
415 * buffer in the reordering process, we'd need to next_glyph() here. */ 435 * buffer in the reordering process, we'd need to next_glyph() here. */
416 } 436 }
417 437
418 438
419 static void 439 static void
420 initial_reordering_syllable (const hb_ot_shape_plan_t *plan, 440 initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
421 hb_face_t *face, 441 hb_face_t *face,
422 hb_buffer_t *buffer, 442 hb_buffer_t *buffer,
423 unsigned int start, unsigned int end) 443 unsigned int start, unsigned int end)
424 { 444 {
425 syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllabl e() & 0x0F); 445 syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllabl e() & 0x0F);
426 switch (syllable_type) { 446 switch (syllable_type) {
427 case consonant_syllable: initial_reordering_consonant_syllable (plan, fa ce, buffer, start, end); return; 447 case consonant_syllable: initial_reordering_consonant_syllable (plan, fa ce, buffer, start, end); return;
448 case punctuation_cluster: initial_reordering_punctuation_cluster (plan, fa ce, buffer, start, end); return;
428 case broken_cluster: initial_reordering_broken_cluster (plan, fa ce, buffer, start, end); return; 449 case broken_cluster: initial_reordering_broken_cluster (plan, fa ce, buffer, start, end); return;
429 case non_myanmar_cluster: initial_reordering_non_myanmar_cluster (plan, fa ce, buffer, start, end); return; 450 case non_myanmar_cluster: initial_reordering_non_myanmar_cluster (plan, fa ce, buffer, start, end); return;
430 } 451 }
431 } 452 }
432 453
433 static inline void 454 static inline void
434 insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, 455 insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
435 hb_font_t *font, 456 hb_font_t *font,
436 hb_buffer_t *buffer) 457 hb_buffer_t *buffer)
437 { 458 {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 534
514 /* Zero syllables now... */ 535 /* Zero syllables now... */
515 for (unsigned int i = 0; i < count; i++) 536 for (unsigned int i = 0; i < count; i++)
516 info[i].syllable() = 0; 537 info[i].syllable() = 0;
517 538
518 HB_BUFFER_DEALLOCATE_VAR (buffer, myanmar_category); 539 HB_BUFFER_DEALLOCATE_VAR (buffer, myanmar_category);
519 HB_BUFFER_DEALLOCATE_VAR (buffer, myanmar_position); 540 HB_BUFFER_DEALLOCATE_VAR (buffer, myanmar_position);
520 } 541 }
521 542
522 543
523 static hb_ot_shape_normalization_mode_t
524 normalization_preference_myanmar (const hb_segment_properties_t *props HB_UNUSED )
525 {
526 return HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT;
527 }
528
529
530 const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar = 544 const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
531 { 545 {
532 "myanmar", 546 "myanmar",
533 collect_features_myanmar, 547 collect_features_myanmar,
534 override_features_myanmar, 548 override_features_myanmar,
535 NULL, /* data_create */ 549 NULL, /* data_create */
536 NULL, /* data_destroy */ 550 NULL, /* data_destroy */
537 NULL, /* preprocess_text */ 551 NULL, /* preprocess_text */
538 normalization_preference_myanmar, 552 HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
539 NULL, /* decompose */ 553 NULL, /* decompose */
540 NULL, /* compose */ 554 NULL, /* compose */
541 setup_masks_myanmar, 555 setup_masks_myanmar,
542 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY, 556 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY,
543 false, /* fallback_position */ 557 false, /* fallback_position */
544 }; 558 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698