[USE] Implement dotted-circle This makes USE feature-complete as far as the Indic-like features are concerned.
diff --git a/src/hb-ot-shape-complex-use.cc b/src/hb-ot-shape-complex-use.cc index b2c6543..379eec1 100644 --- a/src/hb-ot-shape-complex-use.cc +++ b/src/hb-ot-shape-complex-use.cc
@@ -160,6 +160,7 @@ number_joiner_terminated_cluster, numeral_cluster, symbol_cluster, + broken_cluster, }; #include "hb-ot-shape-complex-use-machine.hh" @@ -317,7 +318,9 @@ if (unlikely (!(FLAG_SAFE (syllable_type) & (FLAG (virama_terminated_cluster) | FLAG (consonant_cluster) | - FLAG (vowel_cluster))))) + FLAG (vowel_cluster) | + FLAG (broken_cluster) | + 0)))) return; hb_glyph_info_t *info = buffer->info; @@ -376,7 +379,6 @@ hb_font_t *font, hb_buffer_t *buffer) { -#if 0 /* Note: This loop is extra overhead, but should not be measurable. */ bool has_broken_syllables = false; unsigned int count = buffer->len; @@ -391,6 +393,10 @@ return; + hb_codepoint_t dottedcircle_glyph; + if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph)) + return; + hb_glyph_info_t dottedcircle = {0}; if (!font->get_glyph (0x25CCu, 0, &dottedcircle.codepoint)) return; @@ -412,6 +418,13 @@ info.cluster = buffer->cur().cluster; info.mask = buffer->cur().mask; info.syllable() = buffer->cur().syllable(); + /* TODO Set glyph_props? */ + + /* Insert dottedcircle after possible Repha. */ + while (buffer->idx < buffer->len && + last_syllable == buffer->cur().syllable() && + buffer->cur().use_category() == USE_R) + buffer->next_glyph (); buffer->output_info (info); } @@ -420,7 +433,6 @@ } buffer->swap_buffers (); -#endif } static void