final_consonants
;
+broken_cluster =
+ R?
+ consonant_modifiers
+ medial_consonants
+ dependent_vowels
+ vowel_modifiers
+ final_consonants
+;
+
number_joiner_terminated_cluster = N VS? (HN N VS?)* H;
numeral_cluster = N VS? (HN N VS?)*;
symbol_cluster = S VS? SMAbv* SMBlw*;
number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
numeral_cluster => { found_syllable (numeral_cluster); };
symbol_cluster => { found_syllable (symbol_cluster); };
+ broken_cluster => { found_syllable (broken_cluster); };
*|;
number_joiner_terminated_cluster,
numeral_cluster,
symbol_cluster,
+ broken_cluster,
};
#include "hb-ot-shape-complex-use-machine.hh"
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;
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;
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;
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);
}
}
buffer->swap_buffers ();
-#endif
}
static void