diff --git a/ChangeLog b/ChangeLog index bdc2df1c3..15169c11c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2016-01-28 Werner Lemberg + + [autofit] Add blue-zone support for Kannada script. + + This essentially moves the Kannada script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Kannada. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Kannada standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Kannada data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Kannada data; in particular, use + AF_WRITING_SYSTEM_LATIN. + 2016-01-22 Alexei Podtelezhnikov Better access to 64-bit integers for C99 compilers. diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c index b75b3d9fa..7d9646c3a 100644 --- a/src/autofit/afblue.c +++ b/src/autofit/afblue.c @@ -34,7 +34,7 @@ '\0', '\xE0', '\xA6', '\x85', ' ', '\xE0', '\xA6', '\xA1', ' ', '\xE0', '\xA6', '\xA4', ' ', '\xE0', '\xA6', '\xA8', ' ', '\xE0', '\xA6', '\xAC', ' ', '\xE0', '\xA6', '\xAD', ' ', '\xE0', '\xA6', '\xB2', ' ', '\xE0', '\xA6', '\x95', /* অ ড ত ন ব ভ ল ক */ '\0', - '\xE0', '\xA6', '\x87', ' ', '\xE0', '\xA6', '\x9F', ' ', '\xE0', '\xA6', '\xA0', ' ', '\xE0', '\xA6', '\xBF', ' ', '\xE0', '\xA7', '\x80', ' ', '\xE0', '\xA7', '\x88', ' ', '\xE0', '\xA7', '\x97', ' ', /* ই ট ঠ ি ী ৈ ৗ */ + '\xE0', '\xA6', '\x87', ' ', '\xE0', '\xA6', '\x9F', ' ', '\xE0', '\xA6', '\xA0', ' ', '\xE0', '\xA6', '\xBF', ' ', '\xE0', '\xA7', '\x80', ' ', '\xE0', '\xA7', '\x88', ' ', '\xE0', '\xA7', '\x97', /* ই ট ঠ ি ী ৈ ৗ */ '\0', '\xE0', '\xA6', '\x93', ' ', '\xE0', '\xA6', '\x8F', ' ', '\xE0', '\xA6', '\xA1', ' ', '\xE0', '\xA6', '\xA4', ' ', '\xE0', '\xA6', '\xA8', ' ', '\xE0', '\xA6', '\xAC', ' ', '\xE0', '\xA6', '\xB2', ' ', '\xE0', '\xA6', '\x95', /* ও এ ড ত ন ব ল ক */ '\0', @@ -70,6 +70,10 @@ '\0', '\xD7', '\xA7', ' ', '\xD7', '\x9A', ' ', '\xD7', '\x9F', ' ', '\xD7', '\xA3', ' ', '\xD7', '\xA5', /* ק ך ן ף ץ */ '\0', + '\xE0', '\xB2', '\x87', ' ', '\xE0', '\xB2', '\x8A', ' ', '\xE0', '\xB2', '\x90', ' ', '\xE0', '\xB2', '\xA3', ' ', '\xE0', '\xB2', '\xB8', '\xE0', '\xB2', '\xBE', ' ', '\xE0', '\xB2', '\xA8', '\xE0', '\xB2', '\xBE', ' ', '\xE0', '\xB2', '\xA6', '\xE0', '\xB2', '\xBE', ' ', '\xE0', '\xB2', '\xB0', '\xE0', '\xB2', '\xBE', /* ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ */ + '\0', + '\xE0', '\xB2', '\x85', ' ', '\xE0', '\xB2', '\x89', ' ', '\xE0', '\xB2', '\x8E', ' ', '\xE0', '\xB2', '\xB2', ' ', '\xE0', '\xB3', '\xA6', ' ', '\xE0', '\xB3', '\xA8', ' ', '\xE0', '\xB3', '\xAC', ' ', '\xE0', '\xB3', '\xAD', /* ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭ */ + '\0', '\xE1', '\x9E', '\x81', ' ', '\xE1', '\x9E', '\x91', ' ', '\xE1', '\x9E', '\x93', ' ', '\xE1', '\x9E', '\xA7', ' ', '\xE1', '\x9E', '\xA9', ' ', '\xE1', '\x9E', '\xB6', /* ខ ទ ន ឧ ឩ ា */ '\0', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x80', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x81', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x82', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x90', /* ក្ក ក្ខ ក្គ ក្ថ */ @@ -238,6 +242,9 @@ { AF_BLUE_STRING_HEBREW_BOTTOM, 0 }, { AF_BLUE_STRING_HEBREW_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_KANNADA_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_KHMER_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP, AF_BLUE_PROPERTY_LATIN_SUB_TOP }, diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat index dffb2aff3..9a7757c22 100644 --- a/src/autofit/afblue.dat +++ b/src/autofit/afblue.dat @@ -132,6 +132,11 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_HEBREW_DESCENDER "ק ך ן ף ץ" + AF_BLUE_STRING_KANNADA_TOP + "ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ" + AF_BLUE_STRING_KANNADA_BOTTOM + "ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭" + AF_BLUE_STRING_KHMER_TOP "ខ ទ ន ឧ ឩ ា" AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP @@ -440,6 +445,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_HEBREW_DESCENDER, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_KNDA + { AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_KANNADA_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_KHMR { AF_BLUE_STRING_KHMER_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT } diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h index eb41a3f64..75cd6c3fa 100644 --- a/src/autofit/afblue.h +++ b/src/autofit/afblue.h @@ -82,64 +82,66 @@ FT_BEGIN_HEADER AF_BLUE_STRING_ARABIC_JOIN = 33, AF_BLUE_STRING_BENGALI_BASE = 36, AF_BLUE_STRING_BENGALI_TOP = 68, - AF_BLUE_STRING_BENGALI_HEAD = 97, - AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 129, - AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 153, - AF_BLUE_STRING_CYRILLIC_SMALL = 177, - AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 201, - AF_BLUE_STRING_DEVANAGARI_BASE = 210, - AF_BLUE_STRING_DEVANAGARI_TOP = 242, - AF_BLUE_STRING_DEVANAGARI_HEAD = 274, - AF_BLUE_STRING_DEVANAGARI_BOTTOM = 306, - AF_BLUE_STRING_GREEK_CAPITAL_TOP = 314, - AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 335, - AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 353, - AF_BLUE_STRING_GREEK_SMALL = 371, - AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 395, - AF_BLUE_STRING_HEBREW_TOP = 419, - AF_BLUE_STRING_HEBREW_BOTTOM = 443, - AF_BLUE_STRING_HEBREW_DESCENDER = 461, - AF_BLUE_STRING_KHMER_TOP = 476, - AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 500, - AF_BLUE_STRING_KHMER_BOTTOM = 540, - AF_BLUE_STRING_KHMER_DESCENDER = 572, - AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 606, - AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 693, - AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 701, - AF_BLUE_STRING_LAO_TOP = 709, - AF_BLUE_STRING_LAO_BOTTOM = 741, - AF_BLUE_STRING_LAO_ASCENDER = 773, - AF_BLUE_STRING_LAO_LARGE_ASCENDER = 789, - AF_BLUE_STRING_LAO_DESCENDER = 801, - AF_BLUE_STRING_LATIN_CAPITAL_TOP = 825, - AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 841, - AF_BLUE_STRING_LATIN_SMALL_F_TOP = 857, - AF_BLUE_STRING_LATIN_SMALL = 871, - AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 885, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 895, - AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 915, - AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 935, - AF_BLUE_STRING_LATIN_SUBS_SMALL = 955, - AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 991, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 1011, - AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 1042, - AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 1071, - AF_BLUE_STRING_LATIN_SUPS_SMALL = 1097, - AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 1122, - AF_BLUE_STRING_MYANMAR_TOP = 1133, - AF_BLUE_STRING_MYANMAR_BOTTOM = 1165, - AF_BLUE_STRING_MYANMAR_ASCENDER = 1197, - AF_BLUE_STRING_MYANMAR_DESCENDER = 1225, - AF_BLUE_STRING_TELUGU_TOP = 1257, - AF_BLUE_STRING_TELUGU_BOTTOM = 1285, - AF_BLUE_STRING_THAI_TOP = 1313, - AF_BLUE_STRING_THAI_BOTTOM = 1337, - AF_BLUE_STRING_THAI_ASCENDER = 1365, - AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1377, - AF_BLUE_STRING_THAI_DESCENDER = 1389, - AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1405, - AF_BLUE_STRING_THAI_DIGIT_TOP = 1413, - af_blue_1_1 = 1424, + AF_BLUE_STRING_BENGALI_HEAD = 96, + AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 128, + AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 152, + AF_BLUE_STRING_CYRILLIC_SMALL = 176, + AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 200, + AF_BLUE_STRING_DEVANAGARI_BASE = 209, + 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_MYANMAR_TOP = 1208, + AF_BLUE_STRING_MYANMAR_BOTTOM = 1240, + AF_BLUE_STRING_MYANMAR_ASCENDER = 1272, + AF_BLUE_STRING_MYANMAR_DESCENDER = 1300, + AF_BLUE_STRING_TELUGU_TOP = 1332, + AF_BLUE_STRING_TELUGU_BOTTOM = 1360, + AF_BLUE_STRING_THAI_TOP = 1388, + AF_BLUE_STRING_THAI_BOTTOM = 1412, + AF_BLUE_STRING_THAI_ASCENDER = 1440, + AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1452, + AF_BLUE_STRING_THAI_DESCENDER = 1464, + AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1480, + AF_BLUE_STRING_THAI_DIGIT_TOP = 1488, + af_blue_1_1 = 1499, #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, @@ -204,16 +206,17 @@ FT_BEGIN_HEADER AF_BLUE_STRINGSET_DEVA = 15, AF_BLUE_STRINGSET_GREK = 21, AF_BLUE_STRINGSET_HEBR = 28, - AF_BLUE_STRINGSET_KHMR = 32, - AF_BLUE_STRINGSET_KHMS = 38, - AF_BLUE_STRINGSET_LAO = 41, - AF_BLUE_STRINGSET_LATN = 47, - AF_BLUE_STRINGSET_LATB = 54, - AF_BLUE_STRINGSET_LATP = 61, - AF_BLUE_STRINGSET_MYMR = 68, - AF_BLUE_STRINGSET_TELU = 73, - AF_BLUE_STRINGSET_THAI = 76, - af_blue_2_1 = 84, + 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_MYMR = 71, + AF_BLUE_STRINGSET_TELU = 76, + AF_BLUE_STRINGSET_THAI = 79, + af_blue_2_1 = 87, #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 2de67f98a..4e81e7828 100644 --- a/src/autofit/afranges.c +++ b/src/autofit/afranges.c @@ -196,6 +196,24 @@ }; + const AF_Script_UniRangeRec af_knda_uniranges[] = + { + AF_UNIRANGE_REC( 0x0C80UL, 0x0CFFUL ), /* Kannada */ + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_knda_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x0C81UL, 0x0C81UL ), + AF_UNIRANGE_REC( 0x0CBCUL, 0x0CBCUL ), + AF_UNIRANGE_REC( 0x0CBFUL, 0x0CBFUL ), + AF_UNIRANGE_REC( 0x0CC6UL, 0x0CC6UL ), + AF_UNIRANGE_REC( 0x0CCCUL, 0x0CCDUL ), + AF_UNIRANGE_REC( 0x0CE2UL, 0x0CE3UL ), + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_khmr_uniranges[] = { AF_UNIRANGE_REC( 0x1780UL, 0x17FFUL ), /* Khmer */ @@ -440,24 +458,6 @@ }; - const AF_Script_UniRangeRec af_knda_uniranges[] = - { - AF_UNIRANGE_REC( 0x0C80UL, 0x0CFFUL ), /* Kannada */ - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_knda_nonbase_uniranges[] = - { - AF_UNIRANGE_REC( 0x0C81UL, 0x0C81UL ), - AF_UNIRANGE_REC( 0x0CBCUL, 0x0CBCUL ), - AF_UNIRANGE_REC( 0x0CBFUL, 0x0CBFUL ), - AF_UNIRANGE_REC( 0x0CC6UL, 0x0CC6UL ), - AF_UNIRANGE_REC( 0x0CCCUL, 0x0CCDUL ), - AF_UNIRANGE_REC( 0x0CE2UL, 0x0CE3UL ), - 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 e8f4b9a22..9bbb6f3b4 100644 --- a/src/autofit/afscript.h +++ b/src/autofit/afscript.h @@ -67,6 +67,12 @@ HINTING_BOTTOM_TO_TOP, "\xD7\x9D" ) /* ם */ + SCRIPT( knda, KNDA, + "Kannada", + HB_SCRIPT_KANNADA, + HINTING_BOTTOM_TO_TOP, + "\xE0\xB3\xA6 \xE0\xB2\xAC" ) /* ೦ ಬ */ + /* only digit zero has a simple shape in the Khmer script */ SCRIPT( khmr, KHMR, "Khmer", @@ -144,12 +150,6 @@ HINTING_BOTTOM_TO_TOP, "o" ) /* XXX */ - SCRIPT( knda, KNDA, - "Kannada", - HB_SCRIPT_KANNADA, - 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 0f6a94365..38b99935d 100644 --- a/src/autofit/afstyles.h +++ b/src/autofit/afstyles.h @@ -115,6 +115,13 @@ AF_BLUE_STRINGSET_HEBR, AF_COVERAGE_DEFAULT ) + STYLE( knda_dflt, KNDA_DFLT, + "KANNADA default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_KNDA, + AF_BLUE_STRINGSET_KNDA, + AF_COVERAGE_DEFAULT ) + STYLE( khmr_dflt, KHMR_DFLT, "Khmer default style", AF_WRITING_SYSTEM_LATIN, @@ -203,7 +210,6 @@ STYLE_DEFAULT_INDIC( gujr, GUJR, "Gujarati" ) STYLE_DEFAULT_INDIC( guru, GURU, "Gurmukhi" ) - STYLE_DEFAULT_INDIC( knda, KNDA, "Kannada" ) STYLE_DEFAULT_INDIC( limb, LIMB, "Limbu" ) STYLE_DEFAULT_INDIC( mlym, MLYM, "Malayalam" ) STYLE_DEFAULT_INDIC( orya, ORYA, "Oriya" )