提交 5d32690a 编写于 作者: B Behdad Esfahbod

[Indic] For scripts without Half forms, always choose first consonant as base

In such scripts (ie. Khmer), a ZWJ/ZWNJ shouldn't stop the search for
base.  So, instead just choose the first consonant as base directly.

Test sequence:
U+1798,200c,U+17C9,U+17D2,U+179B,U+17C1,U+17C7
上级 34b57149
...@@ -352,35 +352,46 @@ initial_reordering_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buff ...@@ -352,35 +352,46 @@ initial_reordering_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buff
has_reph = true; has_reph = true;
}; };
/* -> starting from the end of the syllable, move backwards */ if (basic_mask_array[HALF])
unsigned int i = end; {
do { /* -> starting from the end of the syllable, move backwards */
i--; unsigned int i = end;
/* -> until a consonant is found */ do {
if (is_consonant (info[i])) i--;
{ /* -> until a consonant is found */
/* -> that does not have a below-base or post-base form if (is_consonant (info[i]))
* (post-base forms have to follow below-base forms), */
if (info[i].indic_position() != POS_BELOW_C &&
info[i].indic_position() != POS_POST_C)
{ {
/* -> that does not have a below-base or post-base form
* (post-base forms have to follow below-base forms), */
if (info[i].indic_position() != POS_BELOW_C &&
info[i].indic_position() != POS_POST_C)
{
base = i;
break;
}
/* -> or that is not a pre-base reordering Ra,
*
* TODO
*/
/* -> or arrive at the first consonant. The consonant stopped at will
* be the base. */
base = i; base = i;
break;
} }
else
if (is_joiner (info[i]))
break;
} while (i > limit);
}
else
{
/* In scripts without half forms (eg. Khmer), the first consonant is always the base. */
/* -> or that is not a pre-base reordering Ra, if (!has_reph)
* base = limit;
* TODO }
*/
/* -> or arrive at the first consonant. The consonant stopped at will
* be the base. */
base = i;
}
else
if (is_joiner (info[i]))
break;
} while (i > limit);
if (base < start) if (base < start)
base = start; /* Just in case... */ base = start; /* Just in case... */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册