[Indic] Position Bengali Reph before matras

This commit is contained in:
Behdad Esfahbod 2012-05-11 21:36:32 +02:00
parent f893672511
commit 9d0d319a4a
1 changed files with 35 additions and 25 deletions

View File

@ -565,6 +565,7 @@ final_reordering_syllable (hb_buffer_t *buffer, hb_mask_t *mask_array,
* halant, position is moved after it. * halant, position is moved after it.
*/ */
{
unsigned int new_matra_pos = base - 1; unsigned int new_matra_pos = base - 1;
while (new_matra_pos > start && while (new_matra_pos > start &&
!(FLAG (info[new_matra_pos].indic_category()) & (FLAG (OT_M) | FLAG (OT_H)))) !(FLAG (info[new_matra_pos].indic_category()) & (FLAG (OT_M) | FLAG (OT_H))))
@ -589,6 +590,7 @@ final_reordering_syllable (hb_buffer_t *buffer, hb_mask_t *mask_array,
new_matra_pos--; new_matra_pos--;
} }
} }
}
/* o Reorder reph: /* o Reorder reph:
@ -650,8 +652,8 @@ final_reordering_syllable (hb_buffer_t *buffer, hb_mask_t *mask_array,
* proceed to step 5. * proceed to step 5.
*/ */
reph_step_1: reph_step_1:
{
if (reph_pos == REPH_AFTER_POSTSCRIPT) if (reph_pos == REPH_AFTER_POSTSCRIPT)
{
goto reph_step_5; goto reph_step_5;
} }
@ -685,6 +687,7 @@ final_reordering_syllable (hb_buffer_t *buffer, hb_mask_t *mask_array,
* consonant that is not a potential pre-base reordering Ra. * consonant that is not a potential pre-base reordering Ra.
*/ */
reph_step_3: reph_step_3:
if (reph_pos == REPH_AFTER_MAIN)
{ {
/* XXX */ /* XXX */
} }
@ -695,8 +698,15 @@ final_reordering_syllable (hb_buffer_t *buffer, hb_mask_t *mask_array,
* first matra, syllable modifier sign or vedic sign. * first matra, syllable modifier sign or vedic sign.
*/ */
reph_step_4: reph_step_4:
/* This is our take on what step 4 is trying to say (and failing, BADLY). */
if (reph_pos == REPH_AFTER_SUBSCRIPT)
{ {
/* XXX */ new_reph_pos = base;
while (new_reph_pos < end &&
!( FLAG (info[new_reph_pos + 1].indic_position()) & (FLAG (POS_MATRAS) | FLAG (POS_SMVD))))
new_reph_pos++;
if (new_reph_pos < end)
goto reph_move;
} }
/* 5. If no consonant is found in steps 3 or 4, move reph to a position /* 5. If no consonant is found in steps 3 or 4, move reph to a position