shithub: freetype+ttf2subf

Download patch

ref: f27ebb1ec45f57c3b79a7bb9c92bb7b05c78ec63
parent: db0fe733312ff6ca0937dae59edc51242a59d664
author: Sascha Brawer <[email protected]>
date: Mon May 8 06:22:26 EDT 2017

[autofit] Add support for Coptic script.

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

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

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

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,18 @@
 2017-05-08  Sascha Brawer  <[email protected]>
 	    Werner Lemberg  <[email protected]
 
+	[autofit] Add support for Coptic script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Coptic.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Coptic standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
+
+2017-05-08  Sascha Brawer  <[email protected]>
+	    Werner Lemberg  <[email protected]
+
 	[autofit] Add support for Carian script.
 
 	* src/autofit/afblue.dat: Add blue zone data for Carian.
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -86,6 +86,14 @@
     '\0',
     '\xE1', '\x8F', '\xB8', ' ', '\xEA', '\xAE', '\x90', ' ', '\xEA', '\xAD', '\xB9', ' ', '\xEA', '\xAD', '\xBB',  /* ᏸ ꮐ ꭹ ꭻ */
     '\0',
+    '\xE2', '\xB2', '\x8C', ' ', '\xE2', '\xB2', '\x8E', ' ', '\xE2', '\xB2', '\xA0', ' ', '\xE2', '\xB3', '\x9E', ' ', '\xE2', '\xB2', '\x9E', ' ', '\xE2', '\xB2', '\x90', ' ', '\xE2', '\xB2', '\xA4', ' ', '\xE2', '\xB3', '\x8A',  /* Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ */
+    '\0',
+    '\xE2', '\xB3', '\x90', ' ', '\xE2', '\xB3', '\x98', ' ', '\xE2', '\xB3', '\x9E', ' ', '\xE2', '\xB2', '\x8E', ' ', '\xE2', '\xB2', '\x9E', ' ', '\xE2', '\xB2', '\x90', ' ', '\xE2', '\xB3', '\x9C', ' ', '\xE2', '\xB2', '\xB0',  /* Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ */
+    '\0',
+    '\xE2', '\xB2', '\x8D', ' ', '\xE2', '\xB2', '\x8F', ' ', '\xE2', '\xB2', '\xA1', ' ', '\xE2', '\xB3', '\x9F', ' ', '\xE2', '\xB2', '\x9F', ' ', '\xE2', '\xB2', '\x91', ' ', '\xE2', '\xB2', '\xA5', ' ', '\xE2', '\xB3', '\x8B',  /* ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ */
+    '\0',
+    '\xE2', '\xB3', '\x91', ' ', '\xE2', '\xB3', '\x99', ' ', '\xE2', '\xB3', '\x9F', ' ', '\xE2', '\xB2', '\x8F', ' ', '\xE2', '\xB2', '\x9F', ' ', '\xE2', '\xB2', '\x91', ' ', '\xE2', '\xB3', '\x9D', ' ', '\xE2', '\xB3', '\x92',  /* ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ */
+    '\0',
     '\xF0', '\x90', '\xA0', '\x8D', ' ', '\xF0', '\x90', '\xA0', '\x99', ' ', '\xF0', '\x90', '\xA0', '\xB3', ' ', '\xF0', '\x90', '\xA0', '\xB1', ' ', '\xF0', '\x90', '\xA0', '\x85', ' ', '\xF0', '\x90', '\xA0', '\x93', ' ', '\xF0', '\x90', '\xA0', '\xA3', ' ', '\xF0', '\x90', '\xA0', '\xA6',  /* 𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦 */
     '\0',
     '\xF0', '\x90', '\xA0', '\x83', ' ', '\xF0', '\x90', '\xA0', '\x8A', ' ', '\xF0', '\x90', '\xA0', '\x9B', ' ', '\xF0', '\x90', '\xA0', '\xA3', ' ', '\xF0', '\x90', '\xA0', '\xB3', ' ', '\xF0', '\x90', '\xA0', '\xB5', ' ', '\xF0', '\x90', '\xA0', '\x90',  /* 𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐 */
@@ -428,6 +436,12 @@
     { AF_BLUE_STRING_CHEROKEE_SMALL,           0                                 },
     { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0                                 },
     { AF_BLUE_STRING_MAX,                      0                                 },
+    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 },
+    { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
+    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 },
+    { AF_BLUE_STRING_MAX,                   0                                 },
     { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_CYPRIOT_BOTTOM, 0                          },
     { AF_BLUE_STRING_CYPRIOT_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP },
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -147,6 +147,15 @@
   AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER
     "ᏸ ꮐ ꭹ ꭻ"
 
+  AF_BLUE_STRING_COPTIC_CAPITAL_TOP
+    "Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ"
+  AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM
+    "Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ"
+  AF_BLUE_STRING_COPTIC_SMALL_TOP
+    "ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ"
+  AF_BLUE_STRING_COPTIC_SMALL_BOTTOM
+    "ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ"
+
   AF_BLUE_STRING_CYPRIOT_TOP
     "𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦"
   AF_BLUE_STRING_CYPRIOT_BOTTOM
@@ -661,6 +670,14 @@
     { AF_BLUE_STRING_CHEROKEE_SMALL,           0                                 }
     { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0                                 }
     { AF_BLUE_STRING_MAX,                      0                                 }
+
+  AF_BLUE_STRINGSET_COPT
+    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 }
+    { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
+    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 }
+    { AF_BLUE_STRING_MAX,                   0                                 }
 
   AF_BLUE_STRINGSET_CPRT
     { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -107,130 +107,134 @@
     AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 699,
     AF_BLUE_STRING_CHEROKEE_SMALL = 731,
     AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 763,
-    AF_BLUE_STRING_CYPRIOT_TOP = 779,
-    AF_BLUE_STRING_CYPRIOT_BOTTOM = 819,
-    AF_BLUE_STRING_CYPRIOT_SMALL = 854,
-    AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 869,
-    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 893,
-    AF_BLUE_STRING_CYRILLIC_SMALL = 917,
-    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 941,
-    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 950,
-    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 975,
-    AF_BLUE_STRING_DESERET_SMALL_TOP = 1000,
-    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1025,
-    AF_BLUE_STRING_DEVANAGARI_BASE = 1050,
-    AF_BLUE_STRING_DEVANAGARI_TOP = 1082,
-    AF_BLUE_STRING_DEVANAGARI_HEAD = 1114,
-    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1146,
-    AF_BLUE_STRING_ETHIOPIC_TOP = 1154,
-    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1186,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1218,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1250,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1282,
-    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1314,
-    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1346,
-    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1378,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1410,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1442,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1474,
-    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1506,
-    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1538,
-    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1570,
-    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1602,
-    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 1634,
-    AF_BLUE_STRING_GOTHIC_TOP = 1666,
-    AF_BLUE_STRING_GOTHIC_BOTTOM = 1706,
-    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 1726,
-    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 1747,
-    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 1765,
-    AF_BLUE_STRING_GREEK_SMALL = 1783,
-    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 1807,
-    AF_BLUE_STRING_GUJARATI_TOP = 1831,
-    AF_BLUE_STRING_GUJARATI_BOTTOM = 1863,
-    AF_BLUE_STRING_GUJARATI_ASCENDER = 1895,
-    AF_BLUE_STRING_GUJARATI_DESCENDER = 1945,
-    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 1978,
-    AF_BLUE_STRING_GURMUKHI_BASE = 1998,
-    AF_BLUE_STRING_GURMUKHI_HEAD = 2030,
-    AF_BLUE_STRING_GURMUKHI_TOP = 2062,
-    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2094,
-    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2126,
-    AF_BLUE_STRING_HEBREW_TOP = 2146,
-    AF_BLUE_STRING_HEBREW_BOTTOM = 2170,
-    AF_BLUE_STRING_HEBREW_DESCENDER = 2188,
-    AF_BLUE_STRING_KANNADA_TOP = 2203,
-    AF_BLUE_STRING_KANNADA_BOTTOM = 2247,
-    AF_BLUE_STRING_KHMER_TOP = 2279,
-    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2303,
-    AF_BLUE_STRING_KHMER_BOTTOM = 2343,
-    AF_BLUE_STRING_KHMER_DESCENDER = 2375,
-    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2409,
-    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2496,
-    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2504,
-    AF_BLUE_STRING_LAO_TOP = 2512,
-    AF_BLUE_STRING_LAO_BOTTOM = 2544,
-    AF_BLUE_STRING_LAO_ASCENDER = 2576,
-    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 2592,
-    AF_BLUE_STRING_LAO_DESCENDER = 2604,
-    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 2628,
-    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 2644,
-    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 2660,
-    AF_BLUE_STRING_LATIN_SMALL_TOP = 2674,
-    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 2690,
-    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 2706,
-    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 2716,
-    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 2736,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 2756,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL = 2776,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 2812,
-    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 2832,
-    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 2863,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 2892,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL = 2918,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 2943,
-    AF_BLUE_STRING_LISU_TOP = 2954,
-    AF_BLUE_STRING_LISU_BOTTOM = 2986,
-    AF_BLUE_STRING_MALAYALAM_TOP = 3018,
-    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3062,
-    AF_BLUE_STRING_MYANMAR_TOP = 3094,
-    AF_BLUE_STRING_MYANMAR_BOTTOM = 3126,
-    AF_BLUE_STRING_MYANMAR_ASCENDER = 3158,
-    AF_BLUE_STRING_MYANMAR_DESCENDER = 3186,
-    AF_BLUE_STRING_NKO_TOP = 3218,
-    AF_BLUE_STRING_NKO_BOTTOM = 3242,
-    AF_BLUE_STRING_NKO_SMALL_TOP = 3257,
-    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3266,
-    AF_BLUE_STRING_OL_CHIKI = 3278,
-    AF_BLUE_STRING_OLD_TURKIC_TOP = 3302,
-    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3317,
-    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3337,
-    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3377,
-    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3407,
-    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3422,
-    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3462,
-    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3502,
-    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3527,
-    AF_BLUE_STRING_SINHALA_TOP = 3542,
-    AF_BLUE_STRING_SINHALA_BOTTOM = 3574,
-    AF_BLUE_STRING_SINHALA_DESCENDER = 3606,
-    AF_BLUE_STRING_SUNDANESE_TOP = 3650,
-    AF_BLUE_STRING_SUNDANESE_BOTTOM = 3674,
-    AF_BLUE_STRING_SUNDANESE_DESCENDER = 3706,
-    AF_BLUE_STRING_TAI_VIET_TOP = 3714,
-    AF_BLUE_STRING_TAI_VIET_BOTTOM = 3734,
-    AF_BLUE_STRING_TAMIL_TOP = 3746,
-    AF_BLUE_STRING_TAMIL_BOTTOM = 3778,
-    AF_BLUE_STRING_TELUGU_TOP = 3810,
-    AF_BLUE_STRING_TELUGU_BOTTOM = 3838,
-    AF_BLUE_STRING_THAI_TOP = 3866,
-    AF_BLUE_STRING_THAI_BOTTOM = 3890,
-    AF_BLUE_STRING_THAI_ASCENDER = 3918,
-    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 3930,
-    AF_BLUE_STRING_THAI_DESCENDER = 3942,
-    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 3958,
-    AF_BLUE_STRING_THAI_DIGIT_TOP = 3966,
-    AF_BLUE_STRING_TIFINAGH = 3978,
-    af_blue_1_1 = 4009,
+    AF_BLUE_STRING_COPTIC_CAPITAL_TOP = 779,
+    AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM = 811,
+    AF_BLUE_STRING_COPTIC_SMALL_TOP = 843,
+    AF_BLUE_STRING_COPTIC_SMALL_BOTTOM = 875,
+    AF_BLUE_STRING_CYPRIOT_TOP = 907,
+    AF_BLUE_STRING_CYPRIOT_BOTTOM = 947,
+    AF_BLUE_STRING_CYPRIOT_SMALL = 982,
+    AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 997,
+    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 1021,
+    AF_BLUE_STRING_CYRILLIC_SMALL = 1045,
+    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 1069,
+    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 1078,
+    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 1103,
+    AF_BLUE_STRING_DESERET_SMALL_TOP = 1128,
+    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1153,
+    AF_BLUE_STRING_DEVANAGARI_BASE = 1178,
+    AF_BLUE_STRING_DEVANAGARI_TOP = 1210,
+    AF_BLUE_STRING_DEVANAGARI_HEAD = 1242,
+    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1274,
+    AF_BLUE_STRING_ETHIOPIC_TOP = 1282,
+    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1314,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1346,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1378,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1410,
+    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1442,
+    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1474,
+    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1506,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1538,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1570,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1602,
+    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1634,
+    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1666,
+    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1698,
+    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1730,
+    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 1762,
+    AF_BLUE_STRING_GOTHIC_TOP = 1794,
+    AF_BLUE_STRING_GOTHIC_BOTTOM = 1834,
+    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 1854,
+    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 1875,
+    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 1893,
+    AF_BLUE_STRING_GREEK_SMALL = 1911,
+    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 1935,
+    AF_BLUE_STRING_GUJARATI_TOP = 1959,
+    AF_BLUE_STRING_GUJARATI_BOTTOM = 1991,
+    AF_BLUE_STRING_GUJARATI_ASCENDER = 2023,
+    AF_BLUE_STRING_GUJARATI_DESCENDER = 2073,
+    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2106,
+    AF_BLUE_STRING_GURMUKHI_BASE = 2126,
+    AF_BLUE_STRING_GURMUKHI_HEAD = 2158,
+    AF_BLUE_STRING_GURMUKHI_TOP = 2190,
+    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2222,
+    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2254,
+    AF_BLUE_STRING_HEBREW_TOP = 2274,
+    AF_BLUE_STRING_HEBREW_BOTTOM = 2298,
+    AF_BLUE_STRING_HEBREW_DESCENDER = 2316,
+    AF_BLUE_STRING_KANNADA_TOP = 2331,
+    AF_BLUE_STRING_KANNADA_BOTTOM = 2375,
+    AF_BLUE_STRING_KHMER_TOP = 2407,
+    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2431,
+    AF_BLUE_STRING_KHMER_BOTTOM = 2471,
+    AF_BLUE_STRING_KHMER_DESCENDER = 2503,
+    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2537,
+    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2624,
+    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2632,
+    AF_BLUE_STRING_LAO_TOP = 2640,
+    AF_BLUE_STRING_LAO_BOTTOM = 2672,
+    AF_BLUE_STRING_LAO_ASCENDER = 2704,
+    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 2720,
+    AF_BLUE_STRING_LAO_DESCENDER = 2732,
+    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 2756,
+    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 2772,
+    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 2788,
+    AF_BLUE_STRING_LATIN_SMALL_TOP = 2802,
+    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 2818,
+    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 2834,
+    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 2844,
+    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 2864,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 2884,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL = 2904,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 2940,
+    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 2960,
+    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 2991,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3020,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL = 3046,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3071,
+    AF_BLUE_STRING_LISU_TOP = 3082,
+    AF_BLUE_STRING_LISU_BOTTOM = 3114,
+    AF_BLUE_STRING_MALAYALAM_TOP = 3146,
+    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3190,
+    AF_BLUE_STRING_MYANMAR_TOP = 3222,
+    AF_BLUE_STRING_MYANMAR_BOTTOM = 3254,
+    AF_BLUE_STRING_MYANMAR_ASCENDER = 3286,
+    AF_BLUE_STRING_MYANMAR_DESCENDER = 3314,
+    AF_BLUE_STRING_NKO_TOP = 3346,
+    AF_BLUE_STRING_NKO_BOTTOM = 3370,
+    AF_BLUE_STRING_NKO_SMALL_TOP = 3385,
+    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3394,
+    AF_BLUE_STRING_OL_CHIKI = 3406,
+    AF_BLUE_STRING_OLD_TURKIC_TOP = 3430,
+    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3445,
+    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3465,
+    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3505,
+    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3535,
+    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3550,
+    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3590,
+    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3630,
+    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3655,
+    AF_BLUE_STRING_SINHALA_TOP = 3670,
+    AF_BLUE_STRING_SINHALA_BOTTOM = 3702,
+    AF_BLUE_STRING_SINHALA_DESCENDER = 3734,
+    AF_BLUE_STRING_SUNDANESE_TOP = 3778,
+    AF_BLUE_STRING_SUNDANESE_BOTTOM = 3802,
+    AF_BLUE_STRING_SUNDANESE_DESCENDER = 3834,
+    AF_BLUE_STRING_TAI_VIET_TOP = 3842,
+    AF_BLUE_STRING_TAI_VIET_BOTTOM = 3862,
+    AF_BLUE_STRING_TAMIL_TOP = 3874,
+    AF_BLUE_STRING_TAMIL_BOTTOM = 3906,
+    AF_BLUE_STRING_TELUGU_TOP = 3938,
+    AF_BLUE_STRING_TELUGU_BOTTOM = 3966,
+    AF_BLUE_STRING_THAI_TOP = 3994,
+    AF_BLUE_STRING_THAI_BOTTOM = 4018,
+    AF_BLUE_STRING_THAI_ASCENDER = 4046,
+    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4058,
+    AF_BLUE_STRING_THAI_DESCENDER = 4070,
+    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4086,
+    AF_BLUE_STRING_THAI_DIGIT_TOP = 4094,
+    AF_BLUE_STRING_TIFINAGH = 4106,
+    af_blue_1_1 = 4137,
 #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,
@@ -297,42 +301,43 @@
     AF_BLUE_STRINGSET_CANADIAN_SYLLABICS = 24,
     AF_BLUE_STRINGSET_CARI = 31,
     AF_BLUE_STRINGSET_CHER = 34,
-    AF_BLUE_STRINGSET_CPRT = 41,
-    AF_BLUE_STRINGSET_CYRL = 46,
-    AF_BLUE_STRINGSET_DEVA = 52,
-    AF_BLUE_STRINGSET_DSRT = 58,
-    AF_BLUE_STRINGSET_ETHI = 63,
-    AF_BLUE_STRINGSET_GEOR = 66,
-    AF_BLUE_STRINGSET_GEOK = 71,
-    AF_BLUE_STRINGSET_GLAG = 78,
-    AF_BLUE_STRINGSET_GOTH = 83,
-    AF_BLUE_STRINGSET_GREK = 86,
-    AF_BLUE_STRINGSET_GUJR = 93,
-    AF_BLUE_STRINGSET_GURU = 99,
-    AF_BLUE_STRINGSET_HEBR = 105,
-    AF_BLUE_STRINGSET_KNDA = 109,
-    AF_BLUE_STRINGSET_KHMR = 112,
-    AF_BLUE_STRINGSET_KHMS = 118,
-    AF_BLUE_STRINGSET_LAO = 121,
-    AF_BLUE_STRINGSET_LATN = 127,
-    AF_BLUE_STRINGSET_LATB = 134,
-    AF_BLUE_STRINGSET_LATP = 141,
-    AF_BLUE_STRINGSET_LISU = 148,
-    AF_BLUE_STRINGSET_MLYM = 151,
-    AF_BLUE_STRINGSET_MYMR = 154,
-    AF_BLUE_STRINGSET_NKOO = 159,
-    AF_BLUE_STRINGSET_NONE = 164,
-    AF_BLUE_STRINGSET_OLCK = 165,
-    AF_BLUE_STRINGSET_ORKH = 168,
-    AF_BLUE_STRINGSET_OSGE = 171,
-    AF_BLUE_STRINGSET_SINH = 179,
-    AF_BLUE_STRINGSET_SUND = 183,
-    AF_BLUE_STRINGSET_TAML = 187,
-    AF_BLUE_STRINGSET_TAVT = 190,
-    AF_BLUE_STRINGSET_TELU = 193,
-    AF_BLUE_STRINGSET_THAI = 196,
-    AF_BLUE_STRINGSET_TFNG = 204,
-    af_blue_2_1 = 207,
+    AF_BLUE_STRINGSET_COPT = 41,
+    AF_BLUE_STRINGSET_CPRT = 46,
+    AF_BLUE_STRINGSET_CYRL = 51,
+    AF_BLUE_STRINGSET_DEVA = 57,
+    AF_BLUE_STRINGSET_DSRT = 63,
+    AF_BLUE_STRINGSET_ETHI = 68,
+    AF_BLUE_STRINGSET_GEOR = 71,
+    AF_BLUE_STRINGSET_GEOK = 76,
+    AF_BLUE_STRINGSET_GLAG = 83,
+    AF_BLUE_STRINGSET_GOTH = 88,
+    AF_BLUE_STRINGSET_GREK = 91,
+    AF_BLUE_STRINGSET_GUJR = 98,
+    AF_BLUE_STRINGSET_GURU = 104,
+    AF_BLUE_STRINGSET_HEBR = 110,
+    AF_BLUE_STRINGSET_KNDA = 114,
+    AF_BLUE_STRINGSET_KHMR = 117,
+    AF_BLUE_STRINGSET_KHMS = 123,
+    AF_BLUE_STRINGSET_LAO = 126,
+    AF_BLUE_STRINGSET_LATN = 132,
+    AF_BLUE_STRINGSET_LATB = 139,
+    AF_BLUE_STRINGSET_LATP = 146,
+    AF_BLUE_STRINGSET_LISU = 153,
+    AF_BLUE_STRINGSET_MLYM = 156,
+    AF_BLUE_STRINGSET_MYMR = 159,
+    AF_BLUE_STRINGSET_NKOO = 164,
+    AF_BLUE_STRINGSET_NONE = 169,
+    AF_BLUE_STRINGSET_OLCK = 170,
+    AF_BLUE_STRINGSET_ORKH = 173,
+    AF_BLUE_STRINGSET_OSGE = 176,
+    AF_BLUE_STRINGSET_SINH = 184,
+    AF_BLUE_STRINGSET_SUND = 188,
+    AF_BLUE_STRINGSET_TAML = 192,
+    AF_BLUE_STRINGSET_TAVT = 195,
+    AF_BLUE_STRINGSET_TELU = 198,
+    AF_BLUE_STRINGSET_THAI = 201,
+    AF_BLUE_STRINGSET_TFNG = 209,
+    af_blue_2_1 = 212,
 #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
@@ -187,6 +187,19 @@
   };
 
 
+  const AF_Script_UniRangeRec  af_copt_uniranges[] =
+  {
+    AF_UNIRANGE_REC(  0x2C80,  0x2CFF ),   /* Coptic */
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+  const AF_Script_UniRangeRec  af_copt_nonbase_uniranges[] =
+  {
+    AF_UNIRANGE_REC(  0x2CEF,  0x2CF1 ),
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+
   const AF_Script_UniRangeRec  af_cprt_uniranges[] =
   {
     AF_UNIRANGE_REC( 0x10800, 0x1083F ),   /* Cypriot */
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -79,6 +79,12 @@
           HINTING_BOTTOM_TO_TOP,
           "\xE1\x8E\xA4 \xE1\x8F\x85 \xEA\xAE\x95" ) /* Ꭴ Ꮕ ꮕ */
 
+  SCRIPT( copt, COPT,
+          "Coptic",
+          HB_SCRIPT_COPTIC,
+          HINTING_BOTTOM_TO_TOP,
+          "\xE2\xB2\x9E \xE2\xB2\x9F" ) /* Ⲟ ⲟ */
+
   SCRIPT( cprt, CPRT,
           "Cypriot",
           HB_SCRIPT_CYPRIOT,
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -139,6 +139,13 @@
          AF_BLUE_STRINGSET_CHER,
          AF_COVERAGE_DEFAULT )
 
+  STYLE( copt_dflt, COPT_DFLT,
+         "Coptic default style",
+         AF_WRITING_SYSTEM_LATIN,
+         AF_SCRIPT_COPT,
+         AF_BLUE_STRINGSET_COPT,
+         AF_COVERAGE_DEFAULT )
+
   STYLE( cprt_dflt, CPRT_DFLT,
          "Cypriot default style",
          AF_WRITING_SYSTEM_LATIN,