[Indic] Reorder Malayalam dot-reph to after base
authorBehdad Esfahbod <behdad@behdad.org>
Fri, 21 Dec 2012 20:48:32 +0000 (15:48 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Fri, 21 Dec 2012 20:49:26 +0000 (15:49 -0500)
Test sequence is simple: U+0D4E,U+0D15.  The doth-reph should be
reordered to after the Ka.

https://bugzilla.redhat.com/show_bug.cgi?id=799565

src/hb-ot-shape-complex-indic.cc
test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST
test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/dot-reph.txt [new file with mode: 0644]

index cff2ea6..02cb173 100644 (file)
@@ -467,7 +467,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
     unsigned int limit = start;
     if (indic_plan->mask_array[RPHF] &&
        start + 3 <= end &&
-       (/* TODO Handle other Reph modes. */
+       (
         (indic_plan->config->reph_mode == REPH_MODE_IMPLICIT && !is_joiner (info[start + 2])) ||
         (indic_plan->config->reph_mode == REPH_MODE_EXPLICIT && info[start + 2].indic_category() == OT_ZWJ)
        ))
@@ -482,7 +482,14 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
        base = start;
        has_reph = true;
       }
-    };
+    } else if (indic_plan->config->reph_mode == REPH_MODE_LOG_REPHA && info[start].indic_category() == OT_Repha)
+    {
+       limit += 1;
+       while (limit < end && is_joiner (info[limit]))
+         limit++;
+       base = start;
+       has_reph = true;
+    }
 
     switch (indic_plan->config->base_pos)
     {
@@ -570,7 +577,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
      *    base consonants.
      *
      *  Only do this for unforced Reph. (ie. not for Ra,H,ZWJ. */
-    if (has_reph && base == start && start + 2 == limit) {
+    if (has_reph && base == start && start - limit <= 2) {
       /* Have no other consonant, so Reph is not formed and Ra becomes base. */
       has_reph = false;
     }
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/dot-reph.txt b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/dot-reph.txt
new file mode 100644 (file)
index 0000000..fc17a9b
--- /dev/null
@@ -0,0 +1 @@
+ൎക