Commit 134246b72b605b638c1bcd030d85b76a2ed2bac8

Sascha Brawer 2017-04-06T07:06:32

[autofit] Add support for N'Ko script. * src/autofit/afblue.dat: Add blue zone data for N'Ko. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add N'Ko standard characters. * src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.

diff --git a/ChangeLog b/ChangeLog
index 2bff589..dc9fd9d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,16 @@
 2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for N'Ko script.
+
+	* src/autofit/afblue.dat: Add blue zone data for N'Ko.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add N'Ko standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
 
 	[autofit] Add support for Adlam script.
 
diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c
index 6e434e9..d49767a 100644
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -214,6 +214,14 @@
     '\0',
     '\xE1', '\x80', '\x89', ' ', '\xE1', '\x80', '\x8A', ' ', '\xE1', '\x80', '\xA5', ' ', '\xE1', '\x80', '\xA9', ' ', '\xE1', '\x80', '\xA8', ' ', '\xE1', '\x81', '\x82', ' ', '\xE1', '\x81', '\x85', ' ', '\xE1', '\x81', '\x89',  /* ဉ ည ဥ ဩ ဨ ၂ ၅ ၉ */
     '\0',
+    '\xDF', '\x90', ' ', '\xDF', '\x89', ' ', '\xDF', '\x92', ' ', '\xDF', '\x9F', ' ', '\xDF', '\x96', ' ', '\xDF', '\x9C', ' ', '\xDF', '\xA0', ' ', '\xDF', '\xA5',  /* ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ */
+    '\0',
+    '\xDF', '\x80', ' ', '\xDF', '\x98', ' ', '\xDF', '\xA1', ' ', '\xDF', '\xA0', ' ', '\xDF', '\xA5',  /* ߀ ߘ ߡ ߠ ߥ */
+    '\0',
+    '\xDF', '\x8F', ' ', '\xDF', '\x9B', ' ', '\xDF', '\x8B',  /* ߏ ߛ ߋ */
+    '\0',
+    '\xDF', '\x8E', ' ', '\xDF', '\x8F', ' ', '\xDF', '\x9B', ' ', '\xDF', '\x8B',  /* ߎ ߏ ߛ ߋ */
+    '\0',
     '\xE1', '\xB1', '\x9B', ' ', '\xE1', '\xB1', '\x9C', ' ', '\xE1', '\xB1', '\x9D', ' ', '\xE1', '\xB1', '\xA1', ' ', '\xE1', '\xB1', '\xA2', ' ', '\xE1', '\xB1', '\xA5',  /* ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ */
     '\0',
     '\xE0', '\xB6', '\x89', ' ', '\xE0', '\xB6', '\x9A', ' ', '\xE0', '\xB6', '\x9D', ' ', '\xE0', '\xB6', '\xB3', ' ', '\xE0', '\xB6', '\xB4', ' ', '\xE0', '\xB6', '\xBA', ' ', '\xE0', '\xB6', '\xBD', ' ', '\xE0', '\xB7', '\x86',  /* ඉ ක ඝ ඳ ප ය ල ෆ */
@@ -440,6 +448,12 @@
     { AF_BLUE_STRING_MYANMAR_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_MYANMAR_DESCENDER, 0                                 },
     { AF_BLUE_STRING_MAX,               0                                 },
+    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_NKO_BOTTOM,       0                                 },
+    { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
+                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
+    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 },
+    { AF_BLUE_STRING_MAX,              0                                 },
     { AF_BLUE_STRING_MAX, 0 },
     { AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_OL_CHIKI, 0                          },
diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat
index 7b5c084..6d86809 100644
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -297,6 +297,15 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
   AF_BLUE_STRING_MYANMAR_DESCENDER
     "ဉ ည ဥ ဩ ဨ ၂ ၅ ၉"
 
+  AF_BLUE_STRING_NKO_TOP
+    "ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ"
+  AF_BLUE_STRING_NKO_BOTTOM
+    "߀ ߘ ߡ ߠ ߥ"
+  AF_BLUE_STRING_NKO_SMALL_TOP
+    "ߏ ߛ ߋ"
+  AF_BLUE_STRING_NKO_SMALL_BOTTOM
+    "ߎ ߏ ߛ ߋ"
+
   AF_BLUE_STRING_OL_CHIKI
     "ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ"
 
@@ -691,6 +700,14 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MYANMAR_DESCENDER, 0                                 }
     { AF_BLUE_STRING_MAX,               0                                 }
 
+  AF_BLUE_STRINGSET_NKOO
+    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_NKO_BOTTOM,       0                                 }
+    { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
+                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
+    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 }
+    { AF_BLUE_STRING_MAX,              0                                 }
+
   AF_BLUE_STRINGSET_NONE
     { AF_BLUE_STRING_MAX, 0 }
 
diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h
index e290c47..9fd3498 100644
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -171,22 +171,26 @@ FT_BEGIN_HEADER
     AF_BLUE_STRING_MYANMAR_BOTTOM = 2391,
     AF_BLUE_STRING_MYANMAR_ASCENDER = 2423,
     AF_BLUE_STRING_MYANMAR_DESCENDER = 2451,
-    AF_BLUE_STRING_OL_CHIKI = 2483,
-    AF_BLUE_STRING_SINHALA_TOP = 2507,
-    AF_BLUE_STRING_SINHALA_BOTTOM = 2539,
-    AF_BLUE_STRING_SINHALA_DESCENDER = 2571,
-    AF_BLUE_STRING_TAMIL_TOP = 2615,
-    AF_BLUE_STRING_TAMIL_BOTTOM = 2647,
-    AF_BLUE_STRING_TELUGU_TOP = 2679,
-    AF_BLUE_STRING_TELUGU_BOTTOM = 2707,
-    AF_BLUE_STRING_THAI_TOP = 2735,
-    AF_BLUE_STRING_THAI_BOTTOM = 2759,
-    AF_BLUE_STRING_THAI_ASCENDER = 2787,
-    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2799,
-    AF_BLUE_STRING_THAI_DESCENDER = 2811,
-    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2827,
-    AF_BLUE_STRING_THAI_DIGIT_TOP = 2835,
-    af_blue_1_1 = 2846,
+    AF_BLUE_STRING_NKO_TOP = 2483,
+    AF_BLUE_STRING_NKO_BOTTOM = 2507,
+    AF_BLUE_STRING_NKO_SMALL_TOP = 2522,
+    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 2531,
+    AF_BLUE_STRING_OL_CHIKI = 2543,
+    AF_BLUE_STRING_SINHALA_TOP = 2567,
+    AF_BLUE_STRING_SINHALA_BOTTOM = 2599,
+    AF_BLUE_STRING_SINHALA_DESCENDER = 2631,
+    AF_BLUE_STRING_TAMIL_TOP = 2675,
+    AF_BLUE_STRING_TAMIL_BOTTOM = 2707,
+    AF_BLUE_STRING_TELUGU_TOP = 2739,
+    AF_BLUE_STRING_TELUGU_BOTTOM = 2767,
+    AF_BLUE_STRING_THAI_TOP = 2795,
+    AF_BLUE_STRING_THAI_BOTTOM = 2819,
+    AF_BLUE_STRING_THAI_ASCENDER = 2847,
+    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2859,
+    AF_BLUE_STRING_THAI_DESCENDER = 2871,
+    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2887,
+    AF_BLUE_STRING_THAI_DIGIT_TOP = 2895,
+    af_blue_1_1 = 2906,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
     AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203,
@@ -268,13 +272,14 @@ FT_BEGIN_HEADER
     AF_BLUE_STRINGSET_LATP = 110,
     AF_BLUE_STRINGSET_MLYM = 117,
     AF_BLUE_STRINGSET_MYMR = 120,
-    AF_BLUE_STRINGSET_NONE = 125,
-    AF_BLUE_STRINGSET_OLCK = 126,
-    AF_BLUE_STRINGSET_SINH = 129,
-    AF_BLUE_STRINGSET_TAML = 133,
-    AF_BLUE_STRINGSET_TELU = 136,
-    AF_BLUE_STRINGSET_THAI = 139,
-    af_blue_2_1 = 147,
+    AF_BLUE_STRINGSET_NKOO = 125,
+    AF_BLUE_STRINGSET_NONE = 130,
+    AF_BLUE_STRINGSET_OLCK = 131,
+    AF_BLUE_STRINGSET_SINH = 134,
+    AF_BLUE_STRINGSET_TAML = 138,
+    AF_BLUE_STRINGSET_TELU = 141,
+    AF_BLUE_STRINGSET_THAI = 144,
+    af_blue_2_1 = 152,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
     af_blue_2_1_1 = af_blue_2_1 + 2,
diff --git a/src/autofit/afranges.c b/src/autofit/afranges.c
index dceab9a..57236cf 100644
--- a/src/autofit/afranges.c
+++ b/src/autofit/afranges.c
@@ -493,27 +493,40 @@
 
   const AF_Script_UniRangeRec  af_mymr_uniranges[] =
   {
-    AF_UNIRANGE_REC( 0x1000, 0x109F ),    /* Myanmar            */
-    AF_UNIRANGE_REC( 0xA9E0, 0xA9FF ),    /* Myanmar Extended-B */
-    AF_UNIRANGE_REC( 0xAA60, 0xAA7F ),    /* Myanmar Extended-A */
-    AF_UNIRANGE_REC(      0,      0 )
+    AF_UNIRANGE_REC(  0x1000,  0x109F ),    /* Myanmar            */
+    AF_UNIRANGE_REC(  0xA9E0,  0xA9FF ),    /* Myanmar Extended-B */
+    AF_UNIRANGE_REC(  0xAA60,  0xAA7F ),    /* Myanmar Extended-A */
+    AF_UNIRANGE_REC(       0,       0 )
   };
 
   const AF_Script_UniRangeRec  af_mymr_nonbase_uniranges[] =
   {
-    AF_UNIRANGE_REC( 0x102D, 0x1030 ),
-    AF_UNIRANGE_REC( 0x1032, 0x1037 ),
-    AF_UNIRANGE_REC( 0x103A, 0x103A ),
-    AF_UNIRANGE_REC( 0x103D, 0x103E ),
-    AF_UNIRANGE_REC( 0x1058, 0x1059 ),
-    AF_UNIRANGE_REC( 0x105E, 0x1060 ),
-    AF_UNIRANGE_REC( 0x1071, 0x1074 ),
-    AF_UNIRANGE_REC( 0x1082, 0x1082 ),
-    AF_UNIRANGE_REC( 0x1085, 0x1086 ),
-    AF_UNIRANGE_REC( 0x108D, 0x108D ),
-    AF_UNIRANGE_REC( 0xA9E5, 0xA9E5 ),
-    AF_UNIRANGE_REC( 0xAA7C, 0xAA7C ),
-    AF_UNIRANGE_REC(      0,      0 )
+    AF_UNIRANGE_REC(  0x102D,  0x1030 ),
+    AF_UNIRANGE_REC(  0x1032,  0x1037 ),
+    AF_UNIRANGE_REC(  0x103A,  0x103A ),
+    AF_UNIRANGE_REC(  0x103D,  0x103E ),
+    AF_UNIRANGE_REC(  0x1058,  0x1059 ),
+    AF_UNIRANGE_REC(  0x105E,  0x1060 ),
+    AF_UNIRANGE_REC(  0x1071,  0x1074 ),
+    AF_UNIRANGE_REC(  0x1082,  0x1082 ),
+    AF_UNIRANGE_REC(  0x1085,  0x1086 ),
+    AF_UNIRANGE_REC(  0x108D,  0x108D ),
+    AF_UNIRANGE_REC(  0xA9E5,  0xA9E5 ),
+    AF_UNIRANGE_REC(  0xAA7C,  0xAA7C ),
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+
+  const AF_Script_UniRangeRec  af_nkoo_uniranges[] =
+  {
+    AF_UNIRANGE_REC(  0x07C0,  0x07FF ),    /* N'Ko */
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+  const AF_Script_UniRangeRec  af_nkoo_nonbase_uniranges[] =
+  {
+    AF_UNIRANGE_REC(  0x07EB,  0x07F5 ),
+    AF_UNIRANGE_REC(       0,       0 )
   };
 
 
@@ -530,8 +543,8 @@
 
   const AF_Script_UniRangeRec  af_olck_uniranges[] =
   {
-    AF_UNIRANGE_REC( 0x1C50, 0x1C7F ),    /* Ol Chiki */
-    AF_UNIRANGE_REC(      0,      0 )
+    AF_UNIRANGE_REC(  0x1C50,  0x1C7F ),    /* Ol Chiki */
+    AF_UNIRANGE_REC(       0,       0 )
   };
 
   const AF_Script_UniRangeRec  af_olck_nonbase_uniranges[] =
diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h
index 154a7e8..e90ce82 100644
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -171,6 +171,12 @@
           HINTING_BOTTOM_TO_TOP,
           "\xE1\x80\x9D \xE1\x80\x84 \xE1\x80\x82" ) /* ဝ င ဂ */
 
+  SCRIPT( nkoo, NKOO,
+          "N'Ko",
+          HB_SCRIPT_NKO,
+          HINTING_BOTTOM_TO_TOP,
+          "\xDF\x8B \xDF\x80" ) /* ߋ ߀ */
+
   SCRIPT( none, NONE,
           "no script",
           HB_SCRIPT_INVALID,
diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h
index cf283d9..beb0152 100644
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -238,6 +238,13 @@
          AF_BLUE_STRINGSET_MYMR,
          AF_COVERAGE_DEFAULT )
 
+  STYLE( nkoo_dflt, NKOO_DFLT,
+         "N'Ko default style",
+         AF_WRITING_SYSTEM_LATIN,
+         AF_SCRIPT_NKOO,
+         AF_BLUE_STRINGSET_NKOO,
+         AF_COVERAGE_DEFAULT )
+
   STYLE( none_dflt, NONE_DFLT,
          "no style",
          AF_WRITING_SYSTEM_DUMMY,