OLD | NEW |
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 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 | 444 |
445 hb_glyph_info_t dottedcircle = {0}; | 445 hb_glyph_info_t dottedcircle = {0}; |
446 dottedcircle.codepoint = 0x25CCu; | 446 dottedcircle.codepoint = 0x25CCu; |
447 set_myanmar_properties (dottedcircle); | 447 set_myanmar_properties (dottedcircle); |
448 dottedcircle.codepoint = dottedcircle_glyph; | 448 dottedcircle.codepoint = dottedcircle_glyph; |
449 | 449 |
450 buffer->clear_output (); | 450 buffer->clear_output (); |
451 | 451 |
452 buffer->idx = 0; | 452 buffer->idx = 0; |
453 unsigned int last_syllable = 0; | 453 unsigned int last_syllable = 0; |
454 while (buffer->idx < buffer->len) | 454 while (buffer->idx < buffer->len && !buffer->in_error) |
455 { | 455 { |
456 unsigned int syllable = buffer->cur().syllable(); | 456 unsigned int syllable = buffer->cur().syllable(); |
457 syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); | 457 syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); |
458 if (unlikely (last_syllable != syllable && syllable_type == broken_cluster)) | 458 if (unlikely (last_syllable != syllable && syllable_type == broken_cluster)) |
459 { | 459 { |
460 last_syllable = syllable; | 460 last_syllable = syllable; |
461 | 461 |
462 hb_glyph_info_t ginfo = dottedcircle; | 462 hb_glyph_info_t ginfo = dottedcircle; |
463 ginfo.cluster = buffer->cur().cluster; | 463 ginfo.cluster = buffer->cur().cluster; |
464 ginfo.mask = buffer->cur().mask; | 464 ginfo.mask = buffer->cur().mask; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 NULL, /* data_destroy */ | 529 NULL, /* data_destroy */ |
530 NULL, /* preprocess_text */ | 530 NULL, /* preprocess_text */ |
531 NULL, /* postprocess_glyphs */ | 531 NULL, /* postprocess_glyphs */ |
532 HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, | 532 HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, |
533 NULL, /* decompose */ | 533 NULL, /* decompose */ |
534 NULL, /* compose */ | 534 NULL, /* compose */ |
535 setup_masks_myanmar, | 535 setup_masks_myanmar, |
536 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY, | 536 HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY, |
537 false, /* fallback_position */ | 537 false, /* fallback_position */ |
538 }; | 538 }; |
OLD | NEW |