diff --git a/ChangeLog b/ChangeLog index 76521e757..5d549d141 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2016-05-22 Werner Lemberg + + [autofit] Add blue-zone support for Gurmukhi script. + + This essentially moves the Gurmukhi script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Gurmukhi. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Gurmukhi standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Gurmukhi data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use + AF_WRITING_SYSTEM_LATIN. + 2016-05-21 Werner Lemberg Minor clang++ fixes. diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c index 7e0b20ac8..00289702c 100644 --- a/src/autofit/afblue.c +++ b/src/autofit/afblue.c @@ -94,6 +94,16 @@ '\0', '\xE0', '\xAB', '\xA6', ' ', '\xE0', '\xAB', '\xA7', ' ', '\xE0', '\xAB', '\xA8', ' ', '\xE0', '\xAB', '\xA9', ' ', '\xE0', '\xAB', '\xAD', /* ૦ ૧ ૨ ૩ ૭ */ '\0', + '\xE0', '\xA8', '\x95', ' ', '\xE0', '\xA8', '\x97', ' ', '\xE0', '\xA8', '\x99', ' ', '\xE0', '\xA8', '\x9A', ' ', '\xE0', '\xA8', '\x9C', ' ', '\xE0', '\xA8', '\xA4', ' ', '\xE0', '\xA8', '\xA7', ' ', '\xE0', '\xA8', '\xB8', /* ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ */ + '\0', + '\xE0', '\xA8', '\x95', ' ', '\xE0', '\xA8', '\x97', ' ', '\xE0', '\xA8', '\x99', ' ', '\xE0', '\xA8', '\x9A', ' ', '\xE0', '\xA8', '\x9C', ' ', '\xE0', '\xA8', '\xA4', ' ', '\xE0', '\xA8', '\xA7', ' ', '\xE0', '\xA8', '\xB8', /* ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ */ + '\0', + '\xE0', '\xA8', '\x87', ' ', '\xE0', '\xA8', '\x88', ' ', '\xE0', '\xA8', '\x89', ' ', '\xE0', '\xA8', '\x8F', ' ', '\xE0', '\xA8', '\x93', ' ', '\xE0', '\xA9', '\xB3', ' ', '\xE0', '\xA8', '\xBF', ' ', '\xE0', '\xA9', '\x80', /* ਇ ਈ ਉ ਏ ਓ ੳ ਿ ੀ */ + '\0', + '\xE0', '\xA8', '\x85', ' ', '\xE0', '\xA8', '\x8F', ' ', '\xE0', '\xA8', '\x93', ' ', '\xE0', '\xA8', '\x97', ' ', '\xE0', '\xA8', '\x9C', ' ', '\xE0', '\xA8', '\xA0', ' ', '\xE0', '\xA8', '\xB0', ' ', '\xE0', '\xA8', '\xB8', /* ਅ ਏ ਓ ਗ ਜ ਠ ਰ ਸ */ + '\0', + '\xE0', '\xA9', '\xA6', ' ', '\xE0', '\xA9', '\xA7', ' ', '\xE0', '\xA9', '\xA8', ' ', '\xE0', '\xA9', '\xA9', ' ', '\xE0', '\xA9', '\xAD', /* ੦ ੧ ੨ ੩ ੭ */ + '\0', '\xD7', '\x91', ' ', '\xD7', '\x93', ' ', '\xD7', '\x94', ' ', '\xD7', '\x97', ' ', '\xD7', '\x9A', ' ', '\xD7', '\x9B', ' ', '\xD7', '\x9D', ' ', '\xD7', '\xA1', /* ב ד ה ח ך כ ם ס */ '\0', '\xD7', '\x91', ' ', '\xD7', '\x98', ' ', '\xD7', '\x9B', ' ', '\xD7', '\x9D', ' ', '\xD7', '\xA1', ' ', '\xD7', '\xA6', /* ב ט כ ם ס צ */ @@ -302,6 +312,14 @@ { AF_BLUE_STRING_GUJARATI_DESCENDER, 0 }, { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_GURMUKHI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GURMUKHI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_GURMUKHI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_NEUTRAL | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_GURMUKHI_BOTTOM, 0 }, + { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_HEBREW_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_LONG }, { AF_BLUE_STRING_HEBREW_BOTTOM, 0 }, diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat index 3d17c26bd..65e1f9850 100644 --- a/src/autofit/afblue.dat +++ b/src/autofit/afblue.dat @@ -159,6 +159,17 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_GUJARATI_DIGIT_TOP "૦ ૧ ૨ ૩ ૭" + AF_BLUE_STRING_GURMUKHI_BASE + "ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ" + AF_BLUE_STRING_GURMUKHI_HEAD + "ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ" + AF_BLUE_STRING_GURMUKHI_TOP + "ਇ ਈ ਉ ਏ ਓ ੳ ਿ ੀ" + AF_BLUE_STRING_GURMUKHI_BOTTOM + "ਅ ਏ ਓ ਗ ਜ ਠ ਰ ਸ" + AF_BLUE_STRING_GURMUKHI_DIGIT_TOP + "੦ ੧ ੨ ੩ ੭" + AF_BLUE_STRING_HEBREW_TOP "ב ד ה ח ך כ ם ס" AF_BLUE_STRING_HEBREW_BOTTOM @@ -517,6 +528,16 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_GURU + { AF_BLUE_STRING_GURMUKHI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GURMUKHI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_GURMUKHI_BASE, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_NEUTRAL | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_GURMUKHI_BOTTOM, 0 } + { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_HEBR { AF_BLUE_STRING_HEBREW_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_LONG } diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h index 51a2cab2c..974a96111 100644 --- a/src/autofit/afblue.h +++ b/src/autofit/afblue.h @@ -111,59 +111,64 @@ FT_BEGIN_HEADER AF_BLUE_STRING_GUJARATI_ASCENDER = 802, AF_BLUE_STRING_GUJARATI_DESCENDER = 852, AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 885, - AF_BLUE_STRING_HEBREW_TOP = 905, - AF_BLUE_STRING_HEBREW_BOTTOM = 929, - AF_BLUE_STRING_HEBREW_DESCENDER = 947, - AF_BLUE_STRING_KANNADA_TOP = 962, - AF_BLUE_STRING_KANNADA_BOTTOM = 1006, - AF_BLUE_STRING_KHMER_TOP = 1038, - AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 1062, - AF_BLUE_STRING_KHMER_BOTTOM = 1102, - AF_BLUE_STRING_KHMER_DESCENDER = 1134, - AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 1168, - AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 1255, - AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 1263, - AF_BLUE_STRING_LAO_TOP = 1271, - AF_BLUE_STRING_LAO_BOTTOM = 1303, - AF_BLUE_STRING_LAO_ASCENDER = 1335, - AF_BLUE_STRING_LAO_LARGE_ASCENDER = 1351, - AF_BLUE_STRING_LAO_DESCENDER = 1363, - AF_BLUE_STRING_LATIN_CAPITAL_TOP = 1387, - AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 1403, - AF_BLUE_STRING_LATIN_SMALL_F_TOP = 1419, - AF_BLUE_STRING_LATIN_SMALL = 1433, - AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 1447, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 1457, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 1477, - AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1497, - AF_BLUE_STRING_LATIN_SUBS_SMALL = 1517, - AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 1553, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 1573, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 1604, - AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 1633, - AF_BLUE_STRING_LATIN_SUPS_SMALL = 1659, - AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 1684, - AF_BLUE_STRING_MALAYALAM_TOP = 1695, - AF_BLUE_STRING_MALAYALAM_BOTTOM = 1739, - AF_BLUE_STRING_MYANMAR_TOP = 1771, - AF_BLUE_STRING_MYANMAR_BOTTOM = 1803, - AF_BLUE_STRING_MYANMAR_ASCENDER = 1835, - AF_BLUE_STRING_MYANMAR_DESCENDER = 1863, - AF_BLUE_STRING_SINHALA_TOP = 1895, - AF_BLUE_STRING_SINHALA_BOTTOM = 1927, - AF_BLUE_STRING_SINHALA_DESCENDER = 1959, - AF_BLUE_STRING_TAMIL_TOP = 2003, - AF_BLUE_STRING_TAMIL_BOTTOM = 2035, - AF_BLUE_STRING_TELUGU_TOP = 2067, - AF_BLUE_STRING_TELUGU_BOTTOM = 2095, - AF_BLUE_STRING_THAI_TOP = 2123, - AF_BLUE_STRING_THAI_BOTTOM = 2147, - AF_BLUE_STRING_THAI_ASCENDER = 2175, - AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2187, - AF_BLUE_STRING_THAI_DESCENDER = 2199, - AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2215, - AF_BLUE_STRING_THAI_DIGIT_TOP = 2223, - af_blue_1_1 = 2234, + AF_BLUE_STRING_GURMUKHI_BASE = 905, + AF_BLUE_STRING_GURMUKHI_HEAD = 937, + AF_BLUE_STRING_GURMUKHI_TOP = 969, + AF_BLUE_STRING_GURMUKHI_BOTTOM = 1001, + AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 1033, + AF_BLUE_STRING_HEBREW_TOP = 1053, + AF_BLUE_STRING_HEBREW_BOTTOM = 1077, + AF_BLUE_STRING_HEBREW_DESCENDER = 1095, + AF_BLUE_STRING_KANNADA_TOP = 1110, + AF_BLUE_STRING_KANNADA_BOTTOM = 1154, + AF_BLUE_STRING_KHMER_TOP = 1186, + AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 1210, + AF_BLUE_STRING_KHMER_BOTTOM = 1250, + AF_BLUE_STRING_KHMER_DESCENDER = 1282, + AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 1316, + AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 1403, + AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 1411, + AF_BLUE_STRING_LAO_TOP = 1419, + AF_BLUE_STRING_LAO_BOTTOM = 1451, + AF_BLUE_STRING_LAO_ASCENDER = 1483, + AF_BLUE_STRING_LAO_LARGE_ASCENDER = 1499, + AF_BLUE_STRING_LAO_DESCENDER = 1511, + AF_BLUE_STRING_LATIN_CAPITAL_TOP = 1535, + AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 1551, + AF_BLUE_STRING_LATIN_SMALL_F_TOP = 1567, + AF_BLUE_STRING_LATIN_SMALL = 1581, + AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 1595, + AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 1605, + AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 1625, + AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 1645, + AF_BLUE_STRING_LATIN_SUBS_SMALL = 1665, + AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 1701, + AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 1721, + AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 1752, + AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 1781, + AF_BLUE_STRING_LATIN_SUPS_SMALL = 1807, + AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 1832, + AF_BLUE_STRING_MALAYALAM_TOP = 1843, + AF_BLUE_STRING_MALAYALAM_BOTTOM = 1887, + AF_BLUE_STRING_MYANMAR_TOP = 1919, + AF_BLUE_STRING_MYANMAR_BOTTOM = 1951, + AF_BLUE_STRING_MYANMAR_ASCENDER = 1983, + AF_BLUE_STRING_MYANMAR_DESCENDER = 2011, + AF_BLUE_STRING_SINHALA_TOP = 2043, + AF_BLUE_STRING_SINHALA_BOTTOM = 2075, + AF_BLUE_STRING_SINHALA_DESCENDER = 2107, + AF_BLUE_STRING_TAMIL_TOP = 2151, + AF_BLUE_STRING_TAMIL_BOTTOM = 2183, + AF_BLUE_STRING_TELUGU_TOP = 2215, + AF_BLUE_STRING_TELUGU_BOTTOM = 2243, + AF_BLUE_STRING_THAI_TOP = 2271, + AF_BLUE_STRING_THAI_BOTTOM = 2295, + AF_BLUE_STRING_THAI_ASCENDER = 2323, + AF_BLUE_STRING_THAI_LARGE_ASCENDER = 2335, + AF_BLUE_STRING_THAI_DESCENDER = 2347, + AF_BLUE_STRING_THAI_LARGE_DESCENDER = 2363, + AF_BLUE_STRING_THAI_DIGIT_TOP = 2371, + af_blue_1_1 = 2382, #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, @@ -230,22 +235,23 @@ FT_BEGIN_HEADER AF_BLUE_STRINGSET_GEOK = 26, AF_BLUE_STRINGSET_GREK = 33, AF_BLUE_STRINGSET_GUJR = 40, - AF_BLUE_STRINGSET_HEBR = 46, - AF_BLUE_STRINGSET_KNDA = 50, - AF_BLUE_STRINGSET_KHMR = 53, - AF_BLUE_STRINGSET_KHMS = 59, - AF_BLUE_STRINGSET_LAO = 62, - AF_BLUE_STRINGSET_LATN = 68, - AF_BLUE_STRINGSET_LATB = 75, - AF_BLUE_STRINGSET_LATP = 82, - AF_BLUE_STRINGSET_MLYM = 89, - AF_BLUE_STRINGSET_MYMR = 92, - AF_BLUE_STRINGSET_NONE = 97, - AF_BLUE_STRINGSET_SINH = 98, - AF_BLUE_STRINGSET_TAML = 102, - AF_BLUE_STRINGSET_TELU = 105, - AF_BLUE_STRINGSET_THAI = 108, - af_blue_2_1 = 116, + AF_BLUE_STRINGSET_GURU = 46, + AF_BLUE_STRINGSET_HEBR = 52, + AF_BLUE_STRINGSET_KNDA = 56, + AF_BLUE_STRINGSET_KHMR = 59, + AF_BLUE_STRINGSET_KHMS = 65, + AF_BLUE_STRINGSET_LAO = 68, + AF_BLUE_STRINGSET_LATN = 74, + AF_BLUE_STRINGSET_LATB = 81, + AF_BLUE_STRINGSET_LATP = 88, + AF_BLUE_STRINGSET_MLYM = 95, + AF_BLUE_STRINGSET_MYMR = 98, + AF_BLUE_STRINGSET_NONE = 103, + AF_BLUE_STRINGSET_SINH = 104, + AF_BLUE_STRINGSET_TAML = 108, + AF_BLUE_STRINGSET_TELU = 111, + AF_BLUE_STRINGSET_THAI = 114, + af_blue_2_1 = 122, #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 bfef96c96..58618c6cc 100644 --- a/src/autofit/afranges.c +++ b/src/autofit/afranges.c @@ -225,6 +225,23 @@ }; + const AF_Script_UniRangeRec af_guru_uniranges[] = + { + AF_UNIRANGE_REC( 0x0A00UL, 0x0A7FUL ), /* Gurmukhi */ + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_guru_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x0A01UL, 0x0A02UL ), + AF_UNIRANGE_REC( 0x0A3CUL, 0x0A3EUL ), + AF_UNIRANGE_REC( 0x0A41UL, 0x0A51UL ), + AF_UNIRANGE_REC( 0x0A70UL, 0x0A71UL ), + AF_UNIRANGE_REC( 0x0A75UL, 0x0A75UL ), + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_hebr_uniranges[] = { AF_UNIRANGE_REC( 0x0590UL, 0x05FFUL ), /* Hebrew */ @@ -515,23 +532,6 @@ #ifdef AF_CONFIG_OPTION_INDIC - const AF_Script_UniRangeRec af_guru_uniranges[] = - { - AF_UNIRANGE_REC( 0x0A00UL, 0x0A7FUL ), /* Gurmukhi */ - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_guru_nonbase_uniranges[] = - { - AF_UNIRANGE_REC( 0x0A01UL, 0x0A02UL ), - AF_UNIRANGE_REC( 0x0A3CUL, 0x0A3EUL ), - AF_UNIRANGE_REC( 0x0A41UL, 0x0A51UL ), - AF_UNIRANGE_REC( 0x0A70UL, 0x0A71UL ), - AF_UNIRANGE_REC( 0x0A75UL, 0x0A75UL ), - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_limb_uniranges[] = { AF_UNIRANGE_REC( 0x1900UL, 0x194FUL ), /* Limbu */ diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h index 029939c44..64a79459e 100644 --- a/src/autofit/afscript.h +++ b/src/autofit/afscript.h @@ -79,6 +79,12 @@ HINTING_BOTTOM_TO_TOP, "\xE0\xAA\x9F \xE0\xAB\xA6" ) /* ટ ૦ */ + SCRIPT( guru, GURU, + "Gurmukhi", + HB_SCRIPT_GURMUKHI, + HINTING_TOP_TO_BOTTOM, + "\xE0\xA8\xA0 \xE0\xA8\xB0 \xE0\xA9\xA6" ) /* ਠ ਰ ੦*/ + SCRIPT( hebr, HEBR, "Hebrew", HB_SCRIPT_HEBREW, @@ -175,12 +181,6 @@ #ifdef AF_CONFIG_OPTION_INDIC - SCRIPT( guru, GURU, - "Gurmukhi", - HB_SCRIPT_GURMUKHI, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - SCRIPT( limb, LIMB, "Limbu", HB_SCRIPT_LIMBU, diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h index 49d7fc55e..79d386908 100644 --- a/src/autofit/afstyles.h +++ b/src/autofit/afstyles.h @@ -129,6 +129,13 @@ AF_BLUE_STRINGSET_GUJR, AF_COVERAGE_DEFAULT ) + STYLE( guru_dflt, GURU_DFLT, + "Gurmukhi default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_GURU, + AF_BLUE_STRINGSET_GURU, + AF_COVERAGE_DEFAULT ) + STYLE( hebr_dflt, HEBR_DFLT, "Hebrew default style", AF_WRITING_SYSTEM_LATIN, @@ -250,7 +257,6 @@ (AF_Blue_Stringset)0, \ AF_COVERAGE_DEFAULT ) - STYLE_DEFAULT_INDIC( guru, GURU, "Gurmukhi" ) STYLE_DEFAULT_INDIC( limb, LIMB, "Limbu" ) STYLE_DEFAULT_INDIC( orya, ORYA, "Oriya" ) STYLE_DEFAULT_INDIC( sund, SUND, "Sundanese" )