shithub: freetype+ttf2subf

Download patch

ref: ac0eed864612d67a2fcfb670a9fb8ee6d57b064e
parent: d19859f16f2e760f71ff8631ff36a96d7d3965f3
author: Sascha Brawer <[email protected]>
date: Wed May 10 20:06:37 EDT 2017

[autofit] Add support for Chakma script.

* src/autofit/afblue.dat: Add blue zone data for Chakma.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Chakma standard character.

* src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2017-05-11  Sascha Brawer  <[email protected]>
+	    Werner Lemberg  <[email protected]
+
+	[autofit] Add support for Chakma script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Chakma.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Chakma standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
+
 2017-05-10  Sascha Brawer  <[email protected]>
 	    Werner Lemberg  <[email protected]
 
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -90,6 +90,12 @@
     '\0',
     '\xF0', '\x90', '\x8A', '\xA3', ' ', '\xF0', '\x90', '\x8A', '\xA7', ' ', '\xF0', '\x90', '\x8A', '\xB7', ' ', '\xF0', '\x90', '\x8B', '\x80', ' ', '\xF0', '\x90', '\x8A', '\xAB', ' ', '\xF0', '\x90', '\x8A', '\xB8', ' ', '\xF0', '\x90', '\x8B', '\x89',  /* 𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉 */
     '\0',
+    '\xF0', '\x91', '\x84', '\x83', ' ', '\xF0', '\x91', '\x84', '\x85', ' ', '\xF0', '\x91', '\x84', '\x89', ' ', '\xF0', '\x91', '\x84', '\x99', ' ', '\xF0', '\x91', '\x84', '\x97',  /* 𑄃 𑄅 𑄉 𑄙 𑄗 */
+    '\0',
+    '\xF0', '\x91', '\x84', '\x85', ' ', '\xF0', '\x91', '\x84', '\x9B', ' ', '\xF0', '\x91', '\x84', '\x9D', ' ', '\xF0', '\x91', '\x84', '\x97', ' ', '\xF0', '\x91', '\x84', '\x93',  /* 𑄅 𑄛 𑄝 𑄗 𑄓 */
+    '\0',
+    '\xF0', '\x91', '\x84', '\x96', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\x98', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\x99', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\xA4', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2', ' ', '\xF0', '\x91', '\x84', '\xA5', '\xF0', '\x91', '\x84', '\xB3', '\xF0', '\x91', '\x84', '\xA2',  /* 𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢 */
+    '\0',
     '\xE1', '\x8F', '\x86', ' ', '\xE1', '\x8E', '\xBB', ' ', '\xE1', '\x8E', '\xAC', ' ', '\xE1', '\x8F', '\x83', ' ', '\xE1', '\x8E', '\xA4', ' ', '\xE1', '\x8F', '\xA3', ' ', '\xE1', '\x8E', '\xA6', ' ', '\xE1', '\x8F', '\x95',  /* Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ */
     '\0',
     '\xEA', '\xAE', '\x92', ' ', '\xEA', '\xAE', '\xA4', ' ', '\xEA', '\xAE', '\xB6', ' ', '\xEA', '\xAD', '\xB4', ' ', '\xEA', '\xAD', '\xBE', ' ', '\xEA', '\xAE', '\x97', ' ', '\xEA', '\xAE', '\x9D', ' ', '\xEA', '\xAE', '\xBF',  /* ꮒ ꮤ ꮶ ꭴ ꭾ ꮗ ꮝ ꮿ */
@@ -470,6 +476,10 @@
                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_BUHID_BOTTOM, 0                                 },
     { AF_BLUE_STRING_MAX,          0                                 },
+    { AF_BLUE_STRING_CHAKMA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP },
+    { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          },
+    { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          },
+    { AF_BLUE_STRING_MAX,              0                          },
     { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,             AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,          0                                 },
     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -152,6 +152,13 @@
   AF_BLUE_STRING_CARIAN_BOTTOM
     "𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉"
 
+  AF_BLUE_STRING_CHAKMA_TOP
+    "𑄃 𑄅 𑄉 𑄙 𑄗"
+  AF_BLUE_STRING_CHAKMA_BOTTOM
+    "𑄅 𑄛 𑄝 𑄗 𑄓"
+  AF_BLUE_STRING_CHAKMA_DESCENDER
+    "𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢"
+
   AF_BLUE_STRING_CHEROKEE_CAPITAL
     "Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ"
   AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER
@@ -709,6 +716,12 @@
                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
     { AF_BLUE_STRING_BUHID_BOTTOM, 0                                 }
     { AF_BLUE_STRING_MAX,          0                                 }
+
+  AF_BLUE_STRINGSET_CAKM
+    { AF_BLUE_STRING_CHAKMA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
+    { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          }
+    { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          }
+    { AF_BLUE_STRING_MAX,              0                          }
 
   AF_BLUE_STRINGSET_CANADIAN_SYLLABICS
     { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,             AF_BLUE_PROPERTY_LATIN_TOP        }
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -109,154 +109,157 @@
     AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM = 688,
     AF_BLUE_STRING_CARIAN_TOP = 720,
     AF_BLUE_STRING_CARIAN_BOTTOM = 760,
-    AF_BLUE_STRING_CHEROKEE_CAPITAL = 795,
-    AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 827,
-    AF_BLUE_STRING_CHEROKEE_SMALL = 859,
-    AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 891,
-    AF_BLUE_STRING_COPTIC_CAPITAL_TOP = 907,
-    AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM = 939,
-    AF_BLUE_STRING_COPTIC_SMALL_TOP = 971,
-    AF_BLUE_STRING_COPTIC_SMALL_BOTTOM = 1003,
-    AF_BLUE_STRING_CYPRIOT_TOP = 1035,
-    AF_BLUE_STRING_CYPRIOT_BOTTOM = 1075,
-    AF_BLUE_STRING_CYPRIOT_SMALL = 1110,
-    AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 1125,
-    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 1149,
-    AF_BLUE_STRING_CYRILLIC_SMALL = 1173,
-    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 1197,
-    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 1206,
-    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 1231,
-    AF_BLUE_STRING_DESERET_SMALL_TOP = 1256,
-    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1281,
-    AF_BLUE_STRING_DEVANAGARI_BASE = 1306,
-    AF_BLUE_STRING_DEVANAGARI_TOP = 1338,
-    AF_BLUE_STRING_DEVANAGARI_HEAD = 1370,
-    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1402,
-    AF_BLUE_STRING_ETHIOPIC_TOP = 1410,
-    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1442,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1474,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1506,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1538,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1570,
-    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1602,
-    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1634,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1666,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1698,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1730,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1762,
-    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1794,
-    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1826,
-    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1858,
-    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 1890,
-    AF_BLUE_STRING_GOTHIC_TOP = 1922,
-    AF_BLUE_STRING_GOTHIC_BOTTOM = 1962,
-    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 1982,
-    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2003,
-    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2021,
-    AF_BLUE_STRING_GREEK_SMALL = 2039,
-    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2063,
-    AF_BLUE_STRING_GUJARATI_TOP = 2087,
-    AF_BLUE_STRING_GUJARATI_BOTTOM = 2119,
-    AF_BLUE_STRING_GUJARATI_ASCENDER = 2151,
-    AF_BLUE_STRING_GUJARATI_DESCENDER = 2201,
-    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2234,
-    AF_BLUE_STRING_GURMUKHI_BASE = 2254,
-    AF_BLUE_STRING_GURMUKHI_HEAD = 2286,
-    AF_BLUE_STRING_GURMUKHI_TOP = 2318,
-    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2350,
-    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2382,
-    AF_BLUE_STRING_HEBREW_TOP = 2402,
-    AF_BLUE_STRING_HEBREW_BOTTOM = 2426,
-    AF_BLUE_STRING_HEBREW_DESCENDER = 2444,
-    AF_BLUE_STRING_KANNADA_TOP = 2459,
-    AF_BLUE_STRING_KANNADA_BOTTOM = 2503,
-    AF_BLUE_STRING_KAYAH_LI_TOP = 2535,
-    AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2559,
-    AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2579,
-    AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2587,
-    AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2599,
-    AF_BLUE_STRING_KHMER_TOP = 2620,
-    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2644,
-    AF_BLUE_STRING_KHMER_BOTTOM = 2684,
-    AF_BLUE_STRING_KHMER_DESCENDER = 2716,
-    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2750,
-    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2837,
-    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2845,
-    AF_BLUE_STRING_LAO_TOP = 2853,
-    AF_BLUE_STRING_LAO_BOTTOM = 2885,
-    AF_BLUE_STRING_LAO_ASCENDER = 2917,
-    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 2933,
-    AF_BLUE_STRING_LAO_DESCENDER = 2945,
-    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 2969,
-    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 2985,
-    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3001,
-    AF_BLUE_STRING_LATIN_SMALL_TOP = 3015,
-    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3031,
-    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3047,
-    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3057,
-    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3077,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3097,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL = 3117,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3153,
-    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3173,
-    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3204,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3233,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL = 3259,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3284,
-    AF_BLUE_STRING_LISU_TOP = 3295,
-    AF_BLUE_STRING_LISU_BOTTOM = 3327,
-    AF_BLUE_STRING_MALAYALAM_TOP = 3359,
-    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3403,
-    AF_BLUE_STRING_MYANMAR_TOP = 3435,
-    AF_BLUE_STRING_MYANMAR_BOTTOM = 3467,
-    AF_BLUE_STRING_MYANMAR_ASCENDER = 3499,
-    AF_BLUE_STRING_MYANMAR_DESCENDER = 3527,
-    AF_BLUE_STRING_NKO_TOP = 3559,
-    AF_BLUE_STRING_NKO_BOTTOM = 3583,
-    AF_BLUE_STRING_NKO_SMALL_TOP = 3598,
-    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3607,
-    AF_BLUE_STRING_OL_CHIKI = 3619,
-    AF_BLUE_STRING_OLD_TURKIC_TOP = 3643,
-    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3658,
-    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3678,
-    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3718,
-    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3748,
-    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3763,
-    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3803,
-    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3843,
-    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3868,
-    AF_BLUE_STRING_OSMANYA_TOP = 3883,
-    AF_BLUE_STRING_OSMANYA_BOTTOM = 3923,
-    AF_BLUE_STRING_SAURASHTRA_TOP = 3963,
-    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 3995,
-    AF_BLUE_STRING_SHAVIAN_TOP = 4015,
-    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4025,
-    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4050,
-    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4060,
-    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4095,
-    AF_BLUE_STRING_SINHALA_TOP = 4110,
-    AF_BLUE_STRING_SINHALA_BOTTOM = 4142,
-    AF_BLUE_STRING_SINHALA_DESCENDER = 4174,
-    AF_BLUE_STRING_SUNDANESE_TOP = 4218,
-    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4242,
-    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4274,
-    AF_BLUE_STRING_TAI_VIET_TOP = 4282,
-    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4302,
-    AF_BLUE_STRING_TAMIL_TOP = 4314,
-    AF_BLUE_STRING_TAMIL_BOTTOM = 4346,
-    AF_BLUE_STRING_TELUGU_TOP = 4378,
-    AF_BLUE_STRING_TELUGU_BOTTOM = 4406,
-    AF_BLUE_STRING_THAI_TOP = 4434,
-    AF_BLUE_STRING_THAI_BOTTOM = 4458,
-    AF_BLUE_STRING_THAI_ASCENDER = 4486,
-    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4498,
-    AF_BLUE_STRING_THAI_DESCENDER = 4510,
-    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4526,
-    AF_BLUE_STRING_THAI_DIGIT_TOP = 4534,
-    AF_BLUE_STRING_TIFINAGH = 4546,
-    AF_BLUE_STRING_VAI_TOP = 4578,
-    AF_BLUE_STRING_VAI_BOTTOM = 4610,
-    af_blue_1_1 = 4641,
+    AF_BLUE_STRING_CHAKMA_TOP = 795,
+    AF_BLUE_STRING_CHAKMA_BOTTOM = 820,
+    AF_BLUE_STRING_CHAKMA_DESCENDER = 845,
+    AF_BLUE_STRING_CHEROKEE_CAPITAL = 910,
+    AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 942,
+    AF_BLUE_STRING_CHEROKEE_SMALL = 974,
+    AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 1006,
+    AF_BLUE_STRING_COPTIC_CAPITAL_TOP = 1022,
+    AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM = 1054,
+    AF_BLUE_STRING_COPTIC_SMALL_TOP = 1086,
+    AF_BLUE_STRING_COPTIC_SMALL_BOTTOM = 1118,
+    AF_BLUE_STRING_CYPRIOT_TOP = 1150,
+    AF_BLUE_STRING_CYPRIOT_BOTTOM = 1190,
+    AF_BLUE_STRING_CYPRIOT_SMALL = 1225,
+    AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 1240,
+    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 1264,
+    AF_BLUE_STRING_CYRILLIC_SMALL = 1288,
+    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 1312,
+    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 1321,
+    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 1346,
+    AF_BLUE_STRING_DESERET_SMALL_TOP = 1371,
+    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1396,
+    AF_BLUE_STRING_DEVANAGARI_BASE = 1421,
+    AF_BLUE_STRING_DEVANAGARI_TOP = 1453,
+    AF_BLUE_STRING_DEVANAGARI_HEAD = 1485,
+    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1517,
+    AF_BLUE_STRING_ETHIOPIC_TOP = 1525,
+    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1557,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1589,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1621,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1653,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1685,
+    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1717,
+    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1749,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1781,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1813,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1845,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1877,
+    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1909,
+    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1941,
+    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1973,
+    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 2005,
+    AF_BLUE_STRING_GOTHIC_TOP = 2037,
+    AF_BLUE_STRING_GOTHIC_BOTTOM = 2077,
+    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 2097,
+    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2118,
+    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2136,
+    AF_BLUE_STRING_GREEK_SMALL = 2154,
+    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2178,
+    AF_BLUE_STRING_GUJARATI_TOP = 2202,
+    AF_BLUE_STRING_GUJARATI_BOTTOM = 2234,
+    AF_BLUE_STRING_GUJARATI_ASCENDER = 2266,
+    AF_BLUE_STRING_GUJARATI_DESCENDER = 2316,
+    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2349,
+    AF_BLUE_STRING_GURMUKHI_BASE = 2369,
+    AF_BLUE_STRING_GURMUKHI_HEAD = 2401,
+    AF_BLUE_STRING_GURMUKHI_TOP = 2433,
+    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2465,
+    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2497,
+    AF_BLUE_STRING_HEBREW_TOP = 2517,
+    AF_BLUE_STRING_HEBREW_BOTTOM = 2541,
+    AF_BLUE_STRING_HEBREW_DESCENDER = 2559,
+    AF_BLUE_STRING_KANNADA_TOP = 2574,
+    AF_BLUE_STRING_KANNADA_BOTTOM = 2618,
+    AF_BLUE_STRING_KAYAH_LI_TOP = 2650,
+    AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2674,
+    AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2694,
+    AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2702,
+    AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2714,
+    AF_BLUE_STRING_KHMER_TOP = 2735,
+    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2759,
+    AF_BLUE_STRING_KHMER_BOTTOM = 2799,
+    AF_BLUE_STRING_KHMER_DESCENDER = 2831,
+    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2865,
+    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2952,
+    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2960,
+    AF_BLUE_STRING_LAO_TOP = 2968,
+    AF_BLUE_STRING_LAO_BOTTOM = 3000,
+    AF_BLUE_STRING_LAO_ASCENDER = 3032,
+    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 3048,
+    AF_BLUE_STRING_LAO_DESCENDER = 3060,
+    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 3084,
+    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 3100,
+    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3116,
+    AF_BLUE_STRING_LATIN_SMALL_TOP = 3130,
+    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3146,
+    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3162,
+    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3172,
+    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3192,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3212,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL = 3232,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3268,
+    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3288,
+    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3319,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3348,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL = 3374,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3399,
+    AF_BLUE_STRING_LISU_TOP = 3410,
+    AF_BLUE_STRING_LISU_BOTTOM = 3442,
+    AF_BLUE_STRING_MALAYALAM_TOP = 3474,
+    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3518,
+    AF_BLUE_STRING_MYANMAR_TOP = 3550,
+    AF_BLUE_STRING_MYANMAR_BOTTOM = 3582,
+    AF_BLUE_STRING_MYANMAR_ASCENDER = 3614,
+    AF_BLUE_STRING_MYANMAR_DESCENDER = 3642,
+    AF_BLUE_STRING_NKO_TOP = 3674,
+    AF_BLUE_STRING_NKO_BOTTOM = 3698,
+    AF_BLUE_STRING_NKO_SMALL_TOP = 3713,
+    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3722,
+    AF_BLUE_STRING_OL_CHIKI = 3734,
+    AF_BLUE_STRING_OLD_TURKIC_TOP = 3758,
+    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3773,
+    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3793,
+    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3833,
+    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3863,
+    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3878,
+    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3918,
+    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3958,
+    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3983,
+    AF_BLUE_STRING_OSMANYA_TOP = 3998,
+    AF_BLUE_STRING_OSMANYA_BOTTOM = 4038,
+    AF_BLUE_STRING_SAURASHTRA_TOP = 4078,
+    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4110,
+    AF_BLUE_STRING_SHAVIAN_TOP = 4130,
+    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4140,
+    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4165,
+    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4175,
+    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4210,
+    AF_BLUE_STRING_SINHALA_TOP = 4225,
+    AF_BLUE_STRING_SINHALA_BOTTOM = 4257,
+    AF_BLUE_STRING_SINHALA_DESCENDER = 4289,
+    AF_BLUE_STRING_SUNDANESE_TOP = 4333,
+    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4357,
+    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4389,
+    AF_BLUE_STRING_TAI_VIET_TOP = 4397,
+    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4417,
+    AF_BLUE_STRING_TAMIL_TOP = 4429,
+    AF_BLUE_STRING_TAMIL_BOTTOM = 4461,
+    AF_BLUE_STRING_TELUGU_TOP = 4493,
+    AF_BLUE_STRING_TELUGU_BOTTOM = 4521,
+    AF_BLUE_STRING_THAI_TOP = 4549,
+    AF_BLUE_STRING_THAI_BOTTOM = 4573,
+    AF_BLUE_STRING_THAI_ASCENDER = 4601,
+    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4613,
+    AF_BLUE_STRING_THAI_DESCENDER = 4625,
+    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4641,
+    AF_BLUE_STRING_THAI_DIGIT_TOP = 4649,
+    AF_BLUE_STRING_TIFINAGH = 4661,
+    AF_BLUE_STRING_VAI_TOP = 4693,
+    AF_BLUE_STRING_VAI_BOTTOM = 4725,
+    af_blue_1_1 = 4756,
 #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,
@@ -322,51 +325,52 @@
     AF_BLUE_STRINGSET_BAMU = 19,
     AF_BLUE_STRINGSET_BENG = 22,
     AF_BLUE_STRINGSET_BUHD = 27,
-    AF_BLUE_STRINGSET_CANADIAN_SYLLABICS = 32,
-    AF_BLUE_STRINGSET_CARI = 39,
-    AF_BLUE_STRINGSET_CHER = 42,
-    AF_BLUE_STRINGSET_COPT = 49,
-    AF_BLUE_STRINGSET_CPRT = 54,
-    AF_BLUE_STRINGSET_CYRL = 59,
-    AF_BLUE_STRINGSET_DEVA = 65,
-    AF_BLUE_STRINGSET_DSRT = 71,
-    AF_BLUE_STRINGSET_ETHI = 76,
-    AF_BLUE_STRINGSET_GEOR = 79,
-    AF_BLUE_STRINGSET_GEOK = 84,
-    AF_BLUE_STRINGSET_GLAG = 91,
-    AF_BLUE_STRINGSET_GOTH = 96,
-    AF_BLUE_STRINGSET_GREK = 99,
-    AF_BLUE_STRINGSET_GUJR = 106,
-    AF_BLUE_STRINGSET_GURU = 112,
-    AF_BLUE_STRINGSET_HEBR = 118,
-    AF_BLUE_STRINGSET_KALI = 122,
-    AF_BLUE_STRINGSET_KNDA = 128,
-    AF_BLUE_STRINGSET_KHMR = 131,
-    AF_BLUE_STRINGSET_KHMS = 137,
-    AF_BLUE_STRINGSET_LAO = 140,
-    AF_BLUE_STRINGSET_LATN = 146,
-    AF_BLUE_STRINGSET_LATB = 153,
-    AF_BLUE_STRINGSET_LATP = 160,
-    AF_BLUE_STRINGSET_LISU = 167,
-    AF_BLUE_STRINGSET_MLYM = 170,
-    AF_BLUE_STRINGSET_MYMR = 173,
-    AF_BLUE_STRINGSET_NKOO = 178,
-    AF_BLUE_STRINGSET_NONE = 183,
-    AF_BLUE_STRINGSET_OLCK = 184,
-    AF_BLUE_STRINGSET_ORKH = 187,
-    AF_BLUE_STRINGSET_OSGE = 190,
-    AF_BLUE_STRINGSET_OSMA = 198,
-    AF_BLUE_STRINGSET_SAUR = 201,
-    AF_BLUE_STRINGSET_SHAW = 204,
-    AF_BLUE_STRINGSET_SINH = 210,
-    AF_BLUE_STRINGSET_SUND = 214,
-    AF_BLUE_STRINGSET_TAML = 218,
-    AF_BLUE_STRINGSET_TAVT = 221,
-    AF_BLUE_STRINGSET_TELU = 224,
-    AF_BLUE_STRINGSET_THAI = 227,
-    AF_BLUE_STRINGSET_TFNG = 235,
-    AF_BLUE_STRINGSET_VAII = 238,
-    af_blue_2_1 = 241,
+    AF_BLUE_STRINGSET_CAKM = 32,
+    AF_BLUE_STRINGSET_CANADIAN_SYLLABICS = 36,
+    AF_BLUE_STRINGSET_CARI = 43,
+    AF_BLUE_STRINGSET_CHER = 46,
+    AF_BLUE_STRINGSET_COPT = 53,
+    AF_BLUE_STRINGSET_CPRT = 58,
+    AF_BLUE_STRINGSET_CYRL = 63,
+    AF_BLUE_STRINGSET_DEVA = 69,
+    AF_BLUE_STRINGSET_DSRT = 75,
+    AF_BLUE_STRINGSET_ETHI = 80,
+    AF_BLUE_STRINGSET_GEOR = 83,
+    AF_BLUE_STRINGSET_GEOK = 88,
+    AF_BLUE_STRINGSET_GLAG = 95,
+    AF_BLUE_STRINGSET_GOTH = 100,
+    AF_BLUE_STRINGSET_GREK = 103,
+    AF_BLUE_STRINGSET_GUJR = 110,
+    AF_BLUE_STRINGSET_GURU = 116,
+    AF_BLUE_STRINGSET_HEBR = 122,
+    AF_BLUE_STRINGSET_KALI = 126,
+    AF_BLUE_STRINGSET_KNDA = 132,
+    AF_BLUE_STRINGSET_KHMR = 135,
+    AF_BLUE_STRINGSET_KHMS = 141,
+    AF_BLUE_STRINGSET_LAO = 144,
+    AF_BLUE_STRINGSET_LATN = 150,
+    AF_BLUE_STRINGSET_LATB = 157,
+    AF_BLUE_STRINGSET_LATP = 164,
+    AF_BLUE_STRINGSET_LISU = 171,
+    AF_BLUE_STRINGSET_MLYM = 174,
+    AF_BLUE_STRINGSET_MYMR = 177,
+    AF_BLUE_STRINGSET_NKOO = 182,
+    AF_BLUE_STRINGSET_NONE = 187,
+    AF_BLUE_STRINGSET_OLCK = 188,
+    AF_BLUE_STRINGSET_ORKH = 191,
+    AF_BLUE_STRINGSET_OSGE = 194,
+    AF_BLUE_STRINGSET_OSMA = 202,
+    AF_BLUE_STRINGSET_SAUR = 205,
+    AF_BLUE_STRINGSET_SHAW = 208,
+    AF_BLUE_STRINGSET_SINH = 214,
+    AF_BLUE_STRINGSET_SUND = 218,
+    AF_BLUE_STRINGSET_TAML = 222,
+    AF_BLUE_STRINGSET_TAVT = 225,
+    AF_BLUE_STRINGSET_TELU = 228,
+    AF_BLUE_STRINGSET_THAI = 231,
+    AF_BLUE_STRINGSET_TFNG = 239,
+    AF_BLUE_STRINGSET_VAII = 242,
+    af_blue_2_1 = 245,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
     af_blue_2_1_1 = af_blue_2_1 + 2,
--- a/src/autofit/afranges.c
+++ b/src/autofit/afranges.c
@@ -180,6 +180,20 @@
   };
 
 
+  const AF_Script_UniRangeRec  af_cakm_uniranges[] =
+  {
+    AF_UNIRANGE_REC( 0x11100, 0x1114F ),   /* Chakma */
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+  const AF_Script_UniRangeRec  af_cakm_nonbase_uniranges[] =
+  {
+    AF_UNIRANGE_REC( 0x11100, 0x11102 ),
+    AF_UNIRANGE_REC( 0x11127, 0x11134 ),
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+
   const AF_Script_UniRangeRec  af_cans_uniranges[] =
   {
     AF_UNIRANGE_REC(  0x1400,  0x167F ), /* Unified Canadian Aboriginal Syllabics          */
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -73,6 +73,12 @@
           HINTING_BOTTOM_TO_TOP,
           "\xE1\x9D\x8B \xE1\x9D\x8F" ) /* ᝋ ᝏ */
 
+  SCRIPT( cakm, CAKM,
+          "Chakma",
+          HB_SCRIPT_CHAKMA,
+          HINTING_BOTTOM_TO_TOP,
+          "\xF0\x91\x84\xA4 \xF0\x91\x84\x89 \xF0\x91\x84\x9B" ) /* 𑄤 𑄉 𑄛 */
+
   SCRIPT( cans, CANS,
           "Canadian Syllabics",
           HB_SCRIPT_CANADIAN_SYLLABICS,
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -132,6 +132,13 @@
          AF_BLUE_STRINGSET_BUHD,
          AF_COVERAGE_DEFAULT )
 
+  STYLE( cakm_dflt, CAKM_DFLT,
+         "Chakma default style",
+         AF_WRITING_SYSTEM_LATIN,
+         AF_SCRIPT_CAKM,
+         AF_BLUE_STRINGSET_CAKM,
+         AF_COVERAGE_DEFAULT )
+
   STYLE( cans_dflt, CANS_DFLT,
          "Canadian Syllabics default style",
          AF_WRITING_SYSTEM_LATIN,