From 9ee27a928a989c71923cef82a9e9828f8e9ca051 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 31 Jul 2011 11:10:14 -0400 Subject: [PATCH] [Indic] Suppress reph formation upon joiners --- src/hb-ot-shape-complex-indic.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index 3e69b0f1c..8adcffca0 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -282,6 +282,11 @@ is_ra (hb_codepoint_t u) compare_codepoint); } +static bool +is_joiner (hb_glyph_info_t *info) +{ + return info->indic_category() == OT_ZWJ || info->indic_category() == OT_ZWNJ; +} static const struct { hb_tag_t tag; @@ -501,7 +506,8 @@ found_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t /* Handle beginning Ra */ if (start + 2 <= end && info[start].indic_category() == OT_Ra && - info[start + 1].indic_category() == OT_H) + info[start + 1].indic_category() == OT_H && + (start + 2 == end || !is_joiner (&info[start]))) { info[start].indic_position() = POS_POST; info[start].mask = mask_array[RPHF];