[Indic] Suppress reph formation upon joiners
authorBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Jul 2011 15:10:14 +0000 (11:10 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Jul 2011 15:10:14 +0000 (11:10 -0400)
src/hb-ot-shape-complex-indic.cc

index 3e69b0f..8adcffc 100644 (file)
@@ -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];