diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index a3f20b1af5e82757922b24e0cd02815173f0bee7..ffae430952dc45f902027fd5f65414baba564011 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -530,8 +530,12 @@ initial_reordering_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buff base = i; } else - if (is_joiner (info[i])) + { + /* A ZWJ at the end of syllable, or any ZWJ/ZWNJ in other places, stop the base + * search (to request explicit half or halant forms. */ + if (is_joiner (info[i]) && (i + 1 < end || info[i].indic_category() == OT_ZWJ)) break; + } } while (i > limit); } else