bug 827093 - cherry-pick Cham shaping fix from harfbuzz commit b1f4407..b8e8472. r=jdaggett
authorJonathan Kew <jkew@mozilla.com>
Mon, 18 Feb 2013 12:42:31 +0000
changeset 122241 323f90679193965b5f0302e314088a14e3733a4d
parent 122240 68cb1f5270a8a7e7f16c94200b4bd77c941657de
child 122242 eaf5f56832b4e02edd345046a2d044fd19dfb317
push id24327
push usergszorc@mozilla.com
push dateTue, 19 Feb 2013 05:22:32 +0000
treeherdermozilla-central@e8f8a3f6f1f6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjdaggett
bugs827093
milestone21.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
bug 827093 - cherry-pick Cham shaping fix from harfbuzz commit b1f4407..b8e8472. r=jdaggett
gfx/harfbuzz/src/hb-ot-shape-complex-sea.cc
--- a/gfx/harfbuzz/src/hb-ot-shape-complex-sea.cc
+++ b/gfx/harfbuzz/src/hb-ot-shape-complex-sea.cc
@@ -176,18 +176,18 @@ set_sea_properties (hb_glyph_info_t &inf
 
   info.sea_category() = (sea_category_t) cat;
   info.sea_position() = pos;
 }
 
 
 static void
 setup_masks_sea (const hb_ot_shape_plan_t *plan HB_UNUSED,
-		   hb_buffer_t              *buffer,
-		   hb_font_t                *font HB_UNUSED)
+		 hb_buffer_t              *buffer,
+		 hb_font_t                *font HB_UNUSED)
 {
   HB_BUFFER_ALLOCATE_VAR (buffer, sea_category);
   HB_BUFFER_ALLOCATE_VAR (buffer, sea_position);
 
   /* We cannot setup masks here.  We save information about characters
    * and setup masks later on in a pause-callback. */
 
   unsigned int count = buffer->len;
@@ -233,18 +233,19 @@ initial_reordering_consonant_syllable (c
   }
   for (; i < end; i++)
   {
     if (info[i].sea_category() == OT_MR) /* Pre-base reordering */
     {
       info[i].sea_position() = POS_PRE_C;
       continue;
     }
-    if (info[i].sea_position() < POS_BASE_C) /* Left matra */
+    if (info[i].sea_category() == OT_VPre) /* Left matra */
     {
+      info[i].sea_position() = POS_PRE_M;
       continue;
     }
 
     info[i].sea_position() = POS_AFTER_MAIN;
   }
 
   buffer->merge_clusters (start, end);
   /* Sit tight, rock 'n roll! */
@@ -258,19 +259,19 @@ initial_reordering_broken_cluster (const
 				   unsigned int start, unsigned int end)
 {
   /* We already inserted dotted-circles, so just call the consonant_syllable. */
   initial_reordering_consonant_syllable (plan, face, buffer, start, end);
 }
 
 static void
 initial_reordering_non_sea_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
-					hb_face_t *face HB_UNUSED,
-					hb_buffer_t *buffer HB_UNUSED,
-					unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+				    hb_face_t *face HB_UNUSED,
+				    hb_buffer_t *buffer HB_UNUSED,
+				    unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
 {
   /* Nothing to do right now.  If we ever switch to using the output
    * buffer in the reordering process, we'd need to next_glyph() here. */
 }
 
 
 static void
 initial_reordering_syllable (const hb_ot_shape_plan_t *plan,