提交 c5306b68 编写于 作者: B Behdad Esfahbod

[Indic] Handle Vowel syllables

Reusing the consonant logic!
上级 6d8e0cb7
...@@ -83,8 +83,7 @@ enum indic_position_t { ...@@ -83,8 +83,7 @@ enum indic_position_t {
POS_SMVD POS_SMVD
}; };
/* Categories used in IndicSyllabicCategory.txt from UCD */ /* Categories used in IndicSyllabicCategory.txt from UCD. */
/* The assignments are guesswork */
enum indic_syllabic_category_t { enum indic_syllabic_category_t {
INDIC_SYLLABIC_CATEGORY_OTHER = OT_X, INDIC_SYLLABIC_CATEGORY_OTHER = OT_X,
......
...@@ -67,7 +67,10 @@ is_joiner (const hb_glyph_info_t &info) ...@@ -67,7 +67,10 @@ is_joiner (const hb_glyph_info_t &info)
static bool static bool
is_consonant (const hb_glyph_info_t &info) is_consonant (const hb_glyph_info_t &info)
{ {
return !!(FLAG (info.indic_category()) & (FLAG (OT_C) | FLAG (OT_Ra))); /* Note: We treat Vowels as if they were consonants. This is safe because Vowels
* cannot happen in a consonant syllable. The plus side however is, we can call the
* consonant syllable logic from the vowel syllable function and get it all right! */
return !!(FLAG (info.indic_category()) & (FLAG (OT_C) | FLAG (OT_Ra) | FLAG (OT_V)));
} }
static const struct { static const struct {
...@@ -417,10 +420,8 @@ static void ...@@ -417,10 +420,8 @@ static void
initial_reordering_vowel_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t *mask_array, initial_reordering_vowel_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t *mask_array,
unsigned int start, unsigned int end) unsigned int start, unsigned int end)
{ {
/* TODO /* We made the vowels look like consonants. So let's call the consonant logic! */
* Not clear to me how this should work. Do the matras move to before the initial_reordering_consonant_syllable (map, buffer, mask_array, start, end);
* independent vowel? No idea.
*/
} }
static void static void
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册