diff --git a/ChangeLog b/ChangeLog index 53c75b02b..44de09dda 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,40 @@ +2016-04-09 Werner Lemberg + + [autofit] Add support for Georgian scripts. + + Georgian is problematic, since `uppercase' forms of Mkhedruli + (called Mtavruli) are not yet defined in Unicode, which means that + proper blue zones can't be defined. However, there is already a + proposal submitted to Unicode; see + + http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf + + Additionally, due to historical reasons, Unicode treats Khutsuri as + the same script as Mkhedruli, and so does OpenType. However, since + the two scripts have completely different shapes it can happen that + blue zones differ considerably. The tag `geok' used here (derived + from ISO 15924) to differentiate the two scripts is not an OpenType + tag in use. If we now have a font that contains both glyphs for + Mkhedruli and Khutsuri, and it uses OpenType features for both also, + HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence, + blue zones for `geok' are not used for glyphs involved in the + OpenType features. + + An issue not yet resolved is which OpenType feature should be used + to access Mtavruli glyph shapes; right now, FreeType doesn't set up + support for them, but it is easy to add them later on as soon as + more information is available. + + * src/autofit/afblue.dat: Add blue zone data for Georgian. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Georgian standard characters. + + * src/autofit/afranges.c: Add Georgian data. + + * src/autofit/afstyles.h: Add Georgian data. + 2016-04-05 Werner Lemberg [autofit] Provide dummy blue zone for pseudo script `none'. diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c index 13677cc95..f1699a86d 100644 --- a/src/autofit/afblue.c +++ b/src/autofit/afblue.c @@ -54,6 +54,26 @@ '\0', '\xE0', '\xA5', '\x81', ' ', '\xE0', '\xA5', '\x83', /* ु ृ */ '\0', + '\xE1', '\x83', '\x92', ' ', '\xE1', '\x83', '\x93', ' ', '\xE1', '\x83', '\x94', ' ', '\xE1', '\x83', '\x95', ' ', '\xE1', '\x83', '\x97', ' ', '\xE1', '\x83', '\x98', ' ', '\xE1', '\x83', '\x9D', ' ', '\xE1', '\x83', '\xA6', /* გ დ ე ვ თ ი ო ღ */ + '\0', + '\xE1', '\x83', '\x90', ' ', '\xE1', '\x83', '\x96', ' ', '\xE1', '\x83', '\x9B', ' ', '\xE1', '\x83', '\xA1', ' ', '\xE1', '\x83', '\xA8', ' ', '\xE1', '\x83', '\xAB', ' ', '\xE1', '\x83', '\xAE', ' ', '\xE1', '\x83', '\xB0', /* ა ზ მ ს შ ძ ხ ჰ */ + '\0', + '\xE1', '\x83', '\xA1', ' ', '\xE1', '\x83', '\xAE', ' ', '\xE1', '\x83', '\xA5', ' ', '\xE1', '\x83', '\x96', ' ', '\xE1', '\x83', '\x9B', ' ', '\xE1', '\x83', '\xA8', ' ', '\xE1', '\x83', '\xA9', ' ', '\xE1', '\x83', '\xAC', /* ს ხ ქ ზ მ შ ჩ წ */ + '\0', + '\xE1', '\x83', '\x94', ' ', '\xE1', '\x83', '\x95', ' ', '\xE1', '\x83', '\x9F', ' ', '\xE1', '\x83', '\xA2', ' ', '\xE1', '\x83', '\xA3', ' ', '\xE1', '\x83', '\xA4', ' ', '\xE1', '\x83', '\xA5', ' ', '\xE1', '\x83', '\xA7', /* ე ვ ჟ ტ უ ფ ქ ყ */ + '\0', + '\xE1', '\x82', '\xB1', ' ', '\xE1', '\x82', '\xA7', ' ', '\xE1', '\x82', '\xB9', ' ', '\xE1', '\x82', '\xBC', ' ', '\xE1', '\x82', '\xA4', ' ', '\xE1', '\x82', '\xA5', ' ', '\xE1', '\x82', '\xB3', ' ', '\xE1', '\x82', '\xBA', /* Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ Ⴅ Ⴓ Ⴚ */ + '\0', + '\xE1', '\x82', '\xA4', ' ', '\xE1', '\x82', '\xA5', ' ', '\xE1', '\x82', '\xA7', ' ', '\xE1', '\x82', '\xA8', ' ', '\xE1', '\x82', '\xA6', ' ', '\xE1', '\x82', '\xB1', ' ', '\xE1', '\x82', '\xAA', ' ', '\xE1', '\x82', '\xAB', /* Ⴄ Ⴅ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ Ⴋ */ + '\0', + '\xE2', '\xB4', '\x81', ' ', '\xE2', '\xB4', '\x97', ' ', '\xE2', '\xB4', '\x82', ' ', '\xE2', '\xB4', '\x84', ' ', '\xE2', '\xB4', '\x85', ' ', '\xE2', '\xB4', '\x87', ' ', '\xE2', '\xB4', '\x94', ' ', '\xE2', '\xB4', '\x96', /* ⴁ ⴗ ⴂ ⴄ ⴅ ⴇ ⴔ ⴖ */ + '\0', + '\xE2', '\xB4', '\x88', ' ', '\xE2', '\xB4', '\x8C', ' ', '\xE2', '\xB4', '\x96', ' ', '\xE2', '\xB4', '\x8E', ' ', '\xE2', '\xB4', '\x83', ' ', '\xE2', '\xB4', '\x86', ' ', '\xE2', '\xB4', '\x8B', ' ', '\xE2', '\xB4', '\xA2', /* ⴈ ⴌ ⴖ ⴎ ⴃ ⴆ ⴋ ⴢ */ + '\0', + '\xE2', '\xB4', '\x90', ' ', '\xE2', '\xB4', '\x91', ' ', '\xE2', '\xB4', '\x93', ' ', '\xE2', '\xB4', '\x95', ' ', '\xE2', '\xB4', '\x99', ' ', '\xE2', '\xB4', '\x9B', ' ', '\xE2', '\xB4', '\xA1', ' ', '\xE2', '\xB4', '\xA3', /* ⴐ ⴑ ⴓ ⴕ ⴙ ⴛ ⴡ ⴣ */ + '\0', + '\xE2', '\xB4', '\x84', ' ', '\xE2', '\xB4', '\x85', ' ', '\xE2', '\xB4', '\x94', ' ', '\xE2', '\xB4', '\x95', ' ', '\xE2', '\xB4', '\x81', ' ', '\xE2', '\xB4', '\x82', ' ', '\xE2', '\xB4', '\x98', ' ', '\xE2', '\xB4', '\x9D', /* ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ */ + '\0', '\xCE', '\x93', ' ', '\xCE', '\x92', ' ', '\xCE', '\x95', ' ', '\xCE', '\x96', ' ', '\xCE', '\x98', ' ', '\xCE', '\x9F', ' ', '\xCE', '\xA9', /* Γ Β Ε Ζ Θ Ο Ω */ '\0', '\xCE', '\x92', ' ', '\xCE', '\x94', ' ', '\xCE', '\x96', ' ', '\xCE', '\x9E', ' ', '\xCE', '\x98', ' ', '\xCE', '\x9F', /* Β Δ Ζ Ξ Θ Ο */ @@ -243,6 +263,20 @@ { AF_BLUE_STRING_DEVANAGARI_BASE, 0 }, { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM, 0 }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0 }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM, 0 }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_GREEK_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 }, { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat index 39d0598f9..827daeff1 100644 --- a/src/autofit/afblue.dat +++ b/src/autofit/afblue.dat @@ -114,6 +114,29 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_DEVANAGARI_BOTTOM "ु ृ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP + "გ დ ე ვ თ ი ო ღ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM + "ა ზ მ ს შ ძ ხ ჰ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER + "ს ხ ქ ზ მ შ ჩ წ" + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER + "ე ვ ჟ ტ უ ფ ქ ყ" + + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP + "Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ Ⴅ Ⴓ Ⴚ" + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM + "Ⴄ Ⴅ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ Ⴋ" + + AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP + "ⴁ ⴗ ⴂ ⴄ ⴅ ⴇ ⴔ ⴖ" + AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM + "ⴈ ⴌ ⴖ ⴎ ⴃ ⴆ ⴋ ⴢ" + AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER + "ⴐ ⴑ ⴓ ⴕ ⴙ ⴛ ⴡ ⴣ" + AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER + "ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ" + AF_BLUE_STRING_GREEK_CAPITAL_TOP "Γ Β Ε Ζ Θ Ο Ω" AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM @@ -445,6 +468,25 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0 } { AF_BLUE_STRING_MAX, 0 } + // blue zones for Mtavruli are missing (not yet defined in Unicode) + AF_BLUE_STRINGSET_GEOR + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM, 0 } + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } + + AF_BLUE_STRINGSET_GEOK + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0 } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM, 0 } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_GREK { AF_BLUE_STRING_GREEK_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM, 0 } diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h index 274f8cb46..2ec7d828b 100644 --- a/src/autofit/afblue.h +++ b/src/autofit/afblue.h @@ -91,64 +91,74 @@ FT_BEGIN_HEADER AF_BLUE_STRING_DEVANAGARI_TOP = 241, AF_BLUE_STRING_DEVANAGARI_HEAD = 273, AF_BLUE_STRING_DEVANAGARI_BOTTOM = 305, - AF_BLUE_STRING_GREEK_CAPITAL_TOP = 313, - AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 334, - AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 352, - AF_BLUE_STRING_GREEK_SMALL = 370, - AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 394, - AF_BLUE_STRING_HEBREW_TOP = 418, - AF_BLUE_STRING_HEBREW_BOTTOM = 442, - AF_BLUE_STRING_HEBREW_DESCENDER = 460, - AF_BLUE_STRING_KANNADA_TOP = 475, - AF_BLUE_STRING_KANNADA_BOTTOM = 519, - AF_BLUE_STRING_KHMER_TOP = 551, - AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 575, - AF_BLUE_STRING_KHMER_BOTTOM = 615, - AF_BLUE_STRING_KHMER_DESCENDER = 647, - AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 681, - AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 768, - AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 776, - AF_BLUE_STRING_LAO_TOP = 784, - AF_BLUE_STRING_LAO_BOTTOM = 816, - AF_BLUE_STRING_LAO_ASCENDER = 848, - AF_BLUE_STRING_LAO_LARGE_ASCENDER = 864, - AF_BLUE_STRING_LAO_DESCENDER = 876, - AF_BLUE_STRING_LATIN_CAPITAL_TOP = 900, - AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 916, - AF_BLUE_STRING_LATIN_SMALL_F_TOP = 932, - AF_BLUE_STRING_LATIN_SMALL = 946, - AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 960, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 970, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 990, - AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1010, - AF_BLUE_STRING_LATIN_SUBS_SMALL = 1030, - AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 1066, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 1086, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 1117, - AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 1146, - AF_BLUE_STRING_LATIN_SUPS_SMALL = 1172, - AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 1197, - AF_BLUE_STRING_MALAYALAM_TOP = 1208, - AF_BLUE_STRING_MALAYALAM_BOTTOM = 1252, - AF_BLUE_STRING_MYANMAR_TOP = 1284, - AF_BLUE_STRING_MYANMAR_BOTTOM = 1316, - AF_BLUE_STRING_MYANMAR_ASCENDER = 1348, - AF_BLUE_STRING_MYANMAR_DESCENDER = 1376, - AF_BLUE_STRING_SINHALA_TOP = 1408, - AF_BLUE_STRING_SINHALA_BOTTOM = 1440, - AF_BLUE_STRING_SINHALA_DESCENDER = 1472, - AF_BLUE_STRING_TAMIL_TOP = 1516, - AF_BLUE_STRING_TAMIL_BOTTOM = 1548, - AF_BLUE_STRING_TELUGU_TOP = 1580, - AF_BLUE_STRING_TELUGU_BOTTOM = 1608, - AF_BLUE_STRING_THAI_TOP = 1636, - AF_BLUE_STRING_THAI_BOTTOM = 1660, - AF_BLUE_STRING_THAI_ASCENDER = 1688, - AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1700, - AF_BLUE_STRING_THAI_DESCENDER = 1712, - AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1728, - AF_BLUE_STRING_THAI_DIGIT_TOP = 1736, - af_blue_1_1 = 1747, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 313, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 345, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 377, + AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 409, + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 441, + AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 473, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 505, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 537, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 569, + AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 601, + AF_BLUE_STRING_GREEK_CAPITAL_TOP = 633, + AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 654, + AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 672, + AF_BLUE_STRING_GREEK_SMALL = 690, + AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 714, + AF_BLUE_STRING_HEBREW_TOP = 738, + AF_BLUE_STRING_HEBREW_BOTTOM = 762, + AF_BLUE_STRING_HEBREW_DESCENDER = 780, + AF_BLUE_STRING_KANNADA_TOP = 795, + AF_BLUE_STRING_KANNADA_BOTTOM = 839, + AF_BLUE_STRING_KHMER_TOP = 871, + AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 895, + AF_BLUE_STRING_KHMER_BOTTOM = 935, + AF_BLUE_STRING_KHMER_DESCENDER = 967, + AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 1001, + AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 1088, + AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 1096, + AF_BLUE_STRING_LAO_TOP = 1104, + AF_BLUE_STRING_LAO_BOTTOM = 1136, + AF_BLUE_STRING_LAO_ASCENDER = 1168, + AF_BLUE_STRING_LAO_LARGE_ASCENDER = 1184, + AF_BLUE_STRING_LAO_DESCENDER = 1196, + AF_BLUE_STRING_LATIN_CAPITAL_TOP = 1220, + AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 1236, + AF_BLUE_STRING_LATIN_SMALL_F_TOP = 1252, + AF_BLUE_STRING_LATIN_SMALL = 1266, + AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 1280, + AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 1290, + AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 1310, + AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1330, + AF_BLUE_STRING_LATIN_SUBS_SMALL = 1350, + AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 1386, + AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 1406, + AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 1437, + AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 1466, + AF_BLUE_STRING_LATIN_SUPS_SMALL = 1492, + AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 1517, + AF_BLUE_STRING_MALAYALAM_TOP = 1528, + AF_BLUE_STRING_MALAYALAM_BOTTOM = 1572, + AF_BLUE_STRING_MYANMAR_TOP = 1604, + AF_BLUE_STRING_MYANMAR_BOTTOM = 1636, + AF_BLUE_STRING_MYANMAR_ASCENDER = 1668, + AF_BLUE_STRING_MYANMAR_DESCENDER = 1696, + AF_BLUE_STRING_SINHALA_TOP = 1728, + AF_BLUE_STRING_SINHALA_BOTTOM = 1760, + AF_BLUE_STRING_SINHALA_DESCENDER = 1792, + AF_BLUE_STRING_TAMIL_TOP = 1836, + AF_BLUE_STRING_TAMIL_BOTTOM = 1868, + AF_BLUE_STRING_TELUGU_TOP = 1900, + AF_BLUE_STRING_TELUGU_BOTTOM = 1928, + AF_BLUE_STRING_THAI_TOP = 1956, + AF_BLUE_STRING_THAI_BOTTOM = 1980, + AF_BLUE_STRING_THAI_ASCENDER = 2008, + AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2020, + AF_BLUE_STRING_THAI_DESCENDER = 2032, + AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2048, + AF_BLUE_STRING_THAI_DIGIT_TOP = 2056, + af_blue_1_1 = 2067, #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, @@ -211,23 +221,25 @@ FT_BEGIN_HEADER AF_BLUE_STRINGSET_BENG = 4, AF_BLUE_STRINGSET_CYRL = 9, AF_BLUE_STRINGSET_DEVA = 15, - AF_BLUE_STRINGSET_GREK = 21, - AF_BLUE_STRINGSET_HEBR = 28, - AF_BLUE_STRINGSET_KNDA = 32, - AF_BLUE_STRINGSET_KHMR = 35, - AF_BLUE_STRINGSET_KHMS = 41, - AF_BLUE_STRINGSET_LAO = 44, - AF_BLUE_STRINGSET_LATN = 50, - AF_BLUE_STRINGSET_LATB = 57, - AF_BLUE_STRINGSET_LATP = 64, - AF_BLUE_STRINGSET_MLYM = 71, - AF_BLUE_STRINGSET_MYMR = 74, - AF_BLUE_STRINGSET_NONE = 79, - AF_BLUE_STRINGSET_SINH = 80, - AF_BLUE_STRINGSET_TAML = 84, - AF_BLUE_STRINGSET_TELU = 87, - AF_BLUE_STRINGSET_THAI = 90, - af_blue_2_1 = 98, + AF_BLUE_STRINGSET_GEOR = 21, + AF_BLUE_STRINGSET_GEOK = 26, + AF_BLUE_STRINGSET_GREK = 33, + AF_BLUE_STRINGSET_HEBR = 40, + AF_BLUE_STRINGSET_KNDA = 44, + AF_BLUE_STRINGSET_KHMR = 47, + AF_BLUE_STRINGSET_KHMS = 53, + AF_BLUE_STRINGSET_LAO = 56, + AF_BLUE_STRINGSET_LATN = 62, + AF_BLUE_STRINGSET_LATB = 69, + AF_BLUE_STRINGSET_LATP = 76, + AF_BLUE_STRINGSET_MLYM = 83, + AF_BLUE_STRINGSET_MYMR = 86, + AF_BLUE_STRINGSET_NONE = 91, + AF_BLUE_STRINGSET_SINH = 92, + AF_BLUE_STRINGSET_TAML = 96, + AF_BLUE_STRINGSET_TELU = 99, + AF_BLUE_STRINGSET_THAI = 102, + af_blue_2_1 = 110, #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 834047433..e22cb34b3 100644 --- a/src/autofit/afranges.c +++ b/src/autofit/afranges.c @@ -158,6 +158,36 @@ }; + const AF_Script_UniRangeRec af_geor_uniranges[] = + { + AF_UNIRANGE_REC( 0x10D0UL, 0x10FFUL ), /* Georgian (Mkhedruli) */ +#if 0 + /* the following range is proposed for inclusion in Unicode */ + AF_UNIRANGE_REC( 0x1C90UL, 0x1CBFUL ), /* Georgian (Mtavruli) */ +#endif + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_geor_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + + const AF_Script_UniRangeRec af_geok_uniranges[] = + { + /* Khutsuri */ + AF_UNIRANGE_REC( 0x10A0UL, 0x10CDUL ), /* Georgian (Asomtavruli) */ + AF_UNIRANGE_REC( 0x2D00UL, 0x2D2DUL ), /* Georgian (Nuskhuri) */ + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_geok_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_grek_uniranges[] = { AF_UNIRANGE_REC( 0x0370UL, 0x03FFUL ), /* Greek and Coptic */ diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h index 84c2a1450..e19cfcdf3 100644 --- a/src/autofit/afscript.h +++ b/src/autofit/afscript.h @@ -55,6 +55,18 @@ HINTING_TOP_TO_BOTTOM, "\xE0\xA4\xA0 \xE0\xA4\xB5 \xE0\xA4\x9F" ) /* ठ व ट */ + SCRIPT( geor, GEOR, + "Georgian (Mkhedruli)", + HB_SCRIPT_GEORGIAN, + HINTING_BOTTOM_TO_TOP, + "\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90" ) /* ი ე ა */ + + SCRIPT( geok, GEOK, + "Georgian (Khutsuri)", + HB_SCRIPT_INVALID, + HINTING_BOTTOM_TO_TOP, + "\xE1\x82\xB6 \xE1\x82\xB1 \xE2\xB4\x99" ) /* Ⴖ Ⴑ ⴙ */ + SCRIPT( grek, GREK, "Greek", HB_SCRIPT_GREEK, diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h index 199a2a6a1..f85fe8729 100644 --- a/src/autofit/afstyles.h +++ b/src/autofit/afstyles.h @@ -106,6 +106,20 @@ AF_BLUE_STRINGSET_DEVA, AF_COVERAGE_DEFAULT ) + STYLE( geor_dflt, GEOR_DFLT, + "Georgian (Mkhedruli) default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GEOR, + AF_BLUE_STRINGSET_GEOR, + AF_COVERAGE_DEFAULT ) + + STYLE( geok_dflt, GEOK_DFLT, + "Georgian (Khutsuri) default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GEOK, + AF_BLUE_STRINGSET_GEOK, + AF_COVERAGE_DEFAULT ) + META_STYLE_LATIN( grek, GREK, "Greek" ) STYLE( hebr_dflt, HEBR_DFLT,