[HarfBuzz] harfbuzz-ng: Branch 'master' - 3 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Wed Feb 22 13:43:32 PST 2012


 src/hb-ot-shape-private.hh |   45 +++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 41 insertions(+), 4 deletions(-)

New commits:
commit 634c9e3423a9c23793400d1f56e98070e00b6056
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Feb 22 16:43:21 2012 -0500

    Minor

diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh
index c716962..87e8ddb 100644
--- a/src/hb-ot-shape-private.hh
+++ b/src/hb-ot-shape-private.hh
@@ -104,40 +104,49 @@ _hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs,
 {
   int c = hb_unicode_combining_class (ufuncs, unicode);
 
-  /* For Hebrew, we permute the "fixed-position" classes 10-25 into the order
-   * described in the SBL Hebrew manual http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
-   * (as recommended by http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
-   */
-  static const int permuted_hebrew_classes[25 - 10 + 1] = {
-    /* 10 sheva */        22,
-    /* 11 hataf segol */  15,
-    /* 12 hataf patah */  16,
-    /* 13 hataf qamats */ 17,
-    /* 14 hiriq */        23,
-    /* 15 tsere */        18,
-    /* 16 segol */        19,
-    /* 17 patah */        20,
-    /* 18 qamats */       21,
-    /* 19 holam */        14,
-    /* 20 qubuts */       24,
-    /* 21 dagesh */       12,
-    /* 22 meteg */        25,
-    /* 23 rafe */         13,
-    /* 24 shin dot */     10,
-    /* 25 sin dot */      11,
-  };
-
-  /* Modify the combining-class to suit Arabic better.  See:
-   * http://unicode.org/faq/normalization.html#8
-   * http://unicode.org/faq/normalization.html#9
-   */
   if (unlikely (hb_in_range<int> (c, 27, 33)))
+  {
+    /* Modify the combining-class to suit Arabic better.  See:
+     * http://unicode.org/faq/normalization.html#8
+     * http://unicode.org/faq/normalization.html#9
+     */
     c = c == 33 ? 27 : c + 1;
-  /* The equivalent fix for Hebrew is more complex,
-   * see the SBL Hebrew manual.
-   */
+  }
   else if (unlikely (hb_in_range<int> (c, 10, 25)))
+  {
+    /* The equivalent fix for Hebrew is more complex.
+     *
+     * We permute the "fixed-position" classes 10-25 into the order
+     * described in the SBL Hebrew manual:
+     *
+     * http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
+     *
+     * (as recommended by:
+     *  http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
+     *
+     * More details here:
+     * https://bugzilla.mozilla.org/show_bug.cgi?id=662055
+     */
+    static const int permuted_hebrew_classes[25 - 10 + 1] = {
+      /* 10 sheva */        22,
+      /* 11 hataf segol */  15,
+      /* 12 hataf patah */  16,
+      /* 13 hataf qamats */ 17,
+      /* 14 hiriq */        23,
+      /* 15 tsere */        18,
+      /* 16 segol */        19,
+      /* 17 patah */        20,
+      /* 18 qamats */       21,
+      /* 19 holam */        14,
+      /* 20 qubuts */       24,
+      /* 21 dagesh */       12,
+      /* 22 meteg */        25,
+      /* 23 rafe */         13,
+      /* 24 shin dot */     10,
+      /* 25 sin dot */      11,
+    };
     c = permuted_hebrew_classes[c - 10];
+  }
 
   return c;
 }
commit 514b6f88668da4eab85103c536dabe24b7bc457b
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Feb 22 16:34:37 2012 -0500

    Followup: Reorder Hebrew combining classes for better rendering
    
    Patch from Jonathan Kew.
    
    Bug 662055 - advanced Hebrew diacritics are shown correctly only in
    particular order.

diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh
index 3e3efde..c716962 100644
--- a/src/hb-ot-shape-private.hh
+++ b/src/hb-ot-shape-private.hh
@@ -104,20 +104,20 @@ _hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs,
 {
   int c = hb_unicode_combining_class (ufuncs, unicode);
 
-  /* For Hebrew, we permute the "fixed-position" classes 10-15 into the order
+  /* For Hebrew, we permute the "fixed-position" classes 10-25 into the order
    * described in the SBL Hebrew manual http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
    * (as recommended by http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
    */
   static const int permuted_hebrew_classes[25 - 10 + 1] = {
-    /* 10 sheva */        15,
-    /* 11 hataf segol */  16,
-    /* 12 hataf patah */  17,
-    /* 13 hataf qamats */ 18,
-    /* 14 hiriq */        19,
-    /* 15 tsere */        20,
-    /* 16 segol */        21,
-    /* 17 patah */        22,
-    /* 18 qamats */       23,
+    /* 10 sheva */        22,
+    /* 11 hataf segol */  15,
+    /* 12 hataf patah */  16,
+    /* 13 hataf qamats */ 17,
+    /* 14 hiriq */        23,
+    /* 15 tsere */        18,
+    /* 16 segol */        19,
+    /* 17 patah */        20,
+    /* 18 qamats */       21,
     /* 19 holam */        14,
     /* 20 qubuts */       24,
     /* 21 dagesh */       12,
commit 6e78607ea71e3e5306f88f227ddba76133d16ed0
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Feb 22 16:31:15 2012 -0500

    Reorder Hebrew combining classes for better rendering
    
    Patch from Jonathan Kew.
    
    Bug 662055 - advanced Hebrew diacritics are shown correctly only in particular order

diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh
index c49c2b0..3e3efde 100644
--- a/src/hb-ot-shape-private.hh
+++ b/src/hb-ot-shape-private.hh
@@ -104,12 +104,40 @@ _hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs,
 {
   int c = hb_unicode_combining_class (ufuncs, unicode);
 
+  /* For Hebrew, we permute the "fixed-position" classes 10-15 into the order
+   * described in the SBL Hebrew manual http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
+   * (as recommended by http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
+   */
+  static const int permuted_hebrew_classes[25 - 10 + 1] = {
+    /* 10 sheva */        15,
+    /* 11 hataf segol */  16,
+    /* 12 hataf patah */  17,
+    /* 13 hataf qamats */ 18,
+    /* 14 hiriq */        19,
+    /* 15 tsere */        20,
+    /* 16 segol */        21,
+    /* 17 patah */        22,
+    /* 18 qamats */       23,
+    /* 19 holam */        14,
+    /* 20 qubuts */       24,
+    /* 21 dagesh */       12,
+    /* 22 meteg */        25,
+    /* 23 rafe */         13,
+    /* 24 shin dot */     10,
+    /* 25 sin dot */      11,
+  };
+
   /* Modify the combining-class to suit Arabic better.  See:
    * http://unicode.org/faq/normalization.html#8
    * http://unicode.org/faq/normalization.html#9
    */
   if (unlikely (hb_in_range<int> (c, 27, 33)))
     c = c == 33 ? 27 : c + 1;
+  /* The equivalent fix for Hebrew is more complex,
+   * see the SBL Hebrew manual.
+   */
+  else if (unlikely (hb_in_range<int> (c, 10, 25)))
+    c = permuted_hebrew_classes[c - 10];
 
   return c;
 }



More information about the HarfBuzz mailing list