[Indic] Implement reph positioning step 5
authorBehdad Esfahbod <behdad@behdad.org>
Fri, 20 Jul 2012 15:25:41 +0000 (11:25 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Fri, 20 Jul 2012 15:25:41 +0000 (11:25 -0400)
Not tuned, just copied from step 2.  Fixes another 0.5% of Kannada
failures.  1% to go.

src/hb-ot-shape-complex-indic.cc

index ffae430..ae3af2c 100644 (file)
@@ -999,7 +999,17 @@ final_reordering_syllable (hb_buffer_t *buffer,
      */
     reph_step_5:
     {
-      /* XXX */
+      /* Copied from step 2. */
+      new_reph_pos = start + 1;
+      while (new_reph_pos < base && !is_halant_or_coeng (info[new_reph_pos]))
+       new_reph_pos++;
+
+      if (new_reph_pos < base && is_halant_or_coeng (info[new_reph_pos])) {
+       /* ->If ZWJ or ZWNJ are following this halant, position is moved after it. */
+       if (new_reph_pos + 1 < base && is_joiner (info[new_reph_pos + 1]))
+         new_reph_pos++;
+       goto reph_move;
+      }
     }
 
     /*       6. Otherwise, reorder reph to the end of the syllable.