[Indic] Stop searching for base if a post form is found before below form

Improves Bengali and Gurmukhi.  Malayalam regressed a bit.  We will deal
with that later.
This commit is contained in:
Behdad Esfahbod 2012-07-20 18:38:27 -04:00
parent 4c450c703f
commit 92a1ad7bef

View File

@ -505,6 +505,7 @@ initial_reordering_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buff
{ {
/* -> starting from the end of the syllable, move backwards */ /* -> starting from the end of the syllable, move backwards */
unsigned int i = end; unsigned int i = end;
bool seen_below = false;
do { do {
i--; i--;
/* -> until a consonant is found */ /* -> until a consonant is found */
@ -513,11 +514,13 @@ initial_reordering_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buff
/* -> that does not have a below-base or post-base form /* -> that does not have a below-base or post-base form
* (post-base forms have to follow below-base forms), */ * (post-base forms have to follow below-base forms), */
if (info[i].indic_position() != POS_BELOW_C && if (info[i].indic_position() != POS_BELOW_C &&
info[i].indic_position() != POS_POST_C) (info[i].indic_position() != POS_POST_C || seen_below))
{ {
base = i; base = i;
break; break;
} }
if (info[i].indic_position() == POS_BELOW_C)
seen_below = true;
/* -> or that is not a pre-base reordering Ra, /* -> or that is not a pre-base reordering Ra,
* *