From 6782bdae3be0357da1dadc7b806a43ceefa67a90 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 11 May 2012 16:23:43 +0200 Subject: [PATCH] [Indic] Fix Left Matra + Halant reordering As can be seen in: U+092B,U+093F,U+094D --- src/hb-ot-shape-complex-indic.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index 99c22683f..f22f762b9 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -500,8 +500,10 @@ final_reordering_syllable (hb_buffer_t *buffer, while (new_matra_pos > start && !(FLAG (info[new_matra_pos].indic_category()) & (FLAG (OT_M) | FLAG (OT_H)))) new_matra_pos--; - /* If we found no Halant we are done. Otherwise... */ - if (info[new_matra_pos].indic_category() == OT_H) { + /* If we found no Halant we are done. Otherwise only proceed if the Halant does + * not belong to the Matra itself! */ + if (info[new_matra_pos].indic_category() == OT_H && + info[new_matra_pos].indic_position() != POS_LEFT_MATRA) { /* -> If ZWJ or ZWNJ follow this halant, position is moved after it. */ if (new_matra_pos + 1 < end && is_joiner (info[new_matra_pos + 1])) new_matra_pos++;