diff --git a/ChangeLog b/ChangeLog index ba8d49207..c58dc1696 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2016-02-25 Werner Lemberg + + [autofit] Add blue-zone support for Tamil script. + + This essentially moves the Tamil script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Tamil. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Tamli standard character and move data + out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Tamil data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Tamil data; in particular, use + AF_WRITING_SYSTEM_LATIN. + 2016-02-18 Werner Lemberg [autofit] Add blue-zone support for Malayalam script. diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c index 2e2397ed7..8b2b05098 100644 --- a/src/autofit/afblue.c +++ b/src/autofit/afblue.c @@ -140,6 +140,10 @@ '\0', '\xE1', '\x80', '\x89', ' ', '\xE1', '\x80', '\x8A', ' ', '\xE1', '\x80', '\xA5', ' ', '\xE1', '\x80', '\xA9', ' ', '\xE1', '\x80', '\xA8', ' ', '\xE1', '\x81', '\x82', ' ', '\xE1', '\x81', '\x85', ' ', '\xE1', '\x81', '\x89', /* ဉ ည ဥ ဩ ဨ ၂ ၅ ၉ */ '\0', + '\xE0', '\xAE', '\x89', ' ', '\xE0', '\xAE', '\x92', ' ', '\xE0', '\xAE', '\x93', ' ', '\xE0', '\xAE', '\xB1', ' ', '\xE0', '\xAE', '\x88', ' ', '\xE0', '\xAE', '\x95', ' ', '\xE0', '\xAE', '\x99', ' ', '\xE0', '\xAE', '\x9A', /* உ ஒ ஓ ற ஈ க ங ச */ + '\0', + '\xE0', '\xAE', '\x95', ' ', '\xE0', '\xAE', '\x9A', ' ', '\xE0', '\xAE', '\xB2', ' ', '\xE0', '\xAE', '\xB6', ' ', '\xE0', '\xAE', '\x89', ' ', '\xE0', '\xAE', '\x99', ' ', '\xE0', '\xAE', '\x9F', ' ', '\xE0', '\xAE', '\xAA', /* க ச ல ஶ உ ங ட ப */ + '\0', '\xE0', '\xB0', '\x87', ' ', '\xE0', '\xB0', '\x8C', ' ', '\xE0', '\xB0', '\x99', ' ', '\xE0', '\xB0', '\x9E', ' ', '\xE0', '\xB0', '\xA3', ' ', '\xE0', '\xB0', '\xB1', ' ', '\xE0', '\xB1', '\xAF', /* ఇ ఌ ఙ ఞ ణ ఱ ౯ */ '\0', '\xE0', '\xB0', '\x85', ' ', '\xE0', '\xB0', '\x95', ' ', '\xE0', '\xB0', '\x9A', ' ', '\xE0', '\xB0', '\xB0', ' ', '\xE0', '\xB0', '\xBD', ' ', '\xE0', '\xB1', '\xA8', ' ', '\xE0', '\xB1', '\xAC', /* అ క చ ర ఽ ౨ ౬ */ @@ -300,6 +304,9 @@ { AF_BLUE_STRING_MYANMAR_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_MYANMAR_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_TAMIL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_TAMIL_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_TELUGU_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat index b122498a9..16117a0d4 100644 --- a/src/autofit/afblue.dat +++ b/src/autofit/afblue.dat @@ -214,6 +214,11 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: AF_BLUE_STRING_MYANMAR_DESCENDER "ဉ ည ဥ ဩ ဨ ၂ ၅ ၉" + AF_BLUE_STRING_TAMIL_TOP + "உ ஒ ஓ ற ஈ க ங ச" + AF_BLUE_STRING_TAMIL_BOTTOM + "க ச ல ஶ உ ங ட ப" + AF_BLUE_STRING_TELUGU_TOP "ఇ ఌ ఙ ఞ ణ ఱ ౯" AF_BLUE_STRING_TELUGU_BOTTOM @@ -522,6 +527,11 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: { AF_BLUE_STRING_MYANMAR_DESCENDER, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_TAML + { AF_BLUE_STRING_TAMIL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_TAMIL_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_TELU { AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_TELUGU_BOTTOM, 0 } diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h index 6fe460de8..58d858566 100644 --- a/src/autofit/afblue.h +++ b/src/autofit/afblue.h @@ -134,16 +134,18 @@ FT_BEGIN_HEADER AF_BLUE_STRING_MYANMAR_BOTTOM = 1316, AF_BLUE_STRING_MYANMAR_ASCENDER = 1348, AF_BLUE_STRING_MYANMAR_DESCENDER = 1376, - AF_BLUE_STRING_TELUGU_TOP = 1408, - AF_BLUE_STRING_TELUGU_BOTTOM = 1436, - AF_BLUE_STRING_THAI_TOP = 1464, - AF_BLUE_STRING_THAI_BOTTOM = 1488, - AF_BLUE_STRING_THAI_ASCENDER = 1516, - AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1528, - AF_BLUE_STRING_THAI_DESCENDER = 1540, - AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1556, - AF_BLUE_STRING_THAI_DIGIT_TOP = 1564, - af_blue_1_1 = 1575, + AF_BLUE_STRING_TAMIL_TOP = 1408, + AF_BLUE_STRING_TAMIL_BOTTOM = 1440, + AF_BLUE_STRING_TELUGU_TOP = 1472, + AF_BLUE_STRING_TELUGU_BOTTOM = 1500, + AF_BLUE_STRING_THAI_TOP = 1528, + AF_BLUE_STRING_THAI_BOTTOM = 1552, + AF_BLUE_STRING_THAI_ASCENDER = 1580, + AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1592, + AF_BLUE_STRING_THAI_DESCENDER = 1604, + AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1620, + AF_BLUE_STRING_THAI_DIGIT_TOP = 1628, + af_blue_1_1 = 1639, #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, @@ -217,9 +219,10 @@ FT_BEGIN_HEADER AF_BLUE_STRINGSET_LATP = 64, AF_BLUE_STRINGSET_MLYM = 71, AF_BLUE_STRINGSET_MYMR = 74, - AF_BLUE_STRINGSET_TELU = 79, - AF_BLUE_STRINGSET_THAI = 82, - af_blue_2_1 = 90, + AF_BLUE_STRINGSET_TAML = 79, + AF_BLUE_STRINGSET_TELU = 82, + AF_BLUE_STRINGSET_THAI = 85, + af_blue_2_1 = 93, #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 a3fbb5a94..d78acdc92 100644 --- a/src/autofit/afranges.c +++ b/src/autofit/afranges.c @@ -406,6 +406,21 @@ }; + const AF_Script_UniRangeRec af_taml_uniranges[] = + { + AF_UNIRANGE_REC( 0x0B80UL, 0x0BFFUL ), /* Tamil */ + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_taml_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0x0B82UL, 0x0B82UL ), + AF_UNIRANGE_REC( 0x0BC0UL, 0x0BC2UL ), + AF_UNIRANGE_REC( 0x0BCDUL, 0x0BCDUL ), + AF_UNIRANGE_REC( 0UL, 0UL ) + }; + + const AF_Script_UniRangeRec af_telu_uniranges[] = { AF_UNIRANGE_REC( 0x0C00UL, 0x0C7FUL ), /* Telugu */ @@ -551,21 +566,6 @@ }; - const AF_Script_UniRangeRec af_taml_uniranges[] = - { - AF_UNIRANGE_REC( 0x0B80UL, 0x0BFFUL ), /* Tamil */ - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_taml_nonbase_uniranges[] = - { - AF_UNIRANGE_REC( 0x0B82UL, 0x0B82UL ), - AF_UNIRANGE_REC( 0x0BC0UL, 0x0BC2UL ), - AF_UNIRANGE_REC( 0x0BCDUL, 0x0BCDUL ), - AF_UNIRANGE_REC( 0UL, 0UL ) - }; - - const AF_Script_UniRangeRec af_tibt_uniranges[] = { AF_UNIRANGE_REC( 0x0F00UL, 0x0FFFUL ), /* Tibetan */ diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h index aad1d22a1..a7f60b806 100644 --- a/src/autofit/afscript.h +++ b/src/autofit/afscript.h @@ -129,6 +129,13 @@ HINTING_BOTTOM_TO_TOP, "" ) + /* only digit zero has a simple (round) shape in the Tamil script */ + SCRIPT( taml, TAML, + "Tamil", + HB_SCRIPT_TAMIL, + HINTING_BOTTOM_TO_TOP, + "\xE0\xAF\xA6" ) /* ௦ */ + /* there are no simple forms for letters; we thus use two digit shapes */ SCRIPT( telu, TELU, "Telugu", @@ -186,12 +193,6 @@ HINTING_BOTTOM_TO_TOP, "o" ) /* XXX */ - SCRIPT( taml, TAML, - "Tamil", - HB_SCRIPT_TAMIL, - HINTING_BOTTOM_TO_TOP, - "o" ) /* XXX */ - SCRIPT( tibt, TIBT, "Tibetan", HB_SCRIPT_TIBETAN, diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h index 32e0c1fcb..c2df7cec8 100644 --- a/src/autofit/afstyles.h +++ b/src/autofit/afstyles.h @@ -189,6 +189,13 @@ (AF_Blue_Stringset)0, AF_COVERAGE_DEFAULT ) + STYLE( taml_dflt, TAML_DFLT, + "Tamil default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_TAML, + AF_BLUE_STRINGSET_TAML, + AF_COVERAGE_DEFAULT ) + STYLE( telu_dflt, TELU_DFLT, "Telugu default style", AF_WRITING_SYSTEM_LATIN, @@ -222,7 +229,6 @@ STYLE_DEFAULT_INDIC( sinh, SINH, "Sinhala" ) STYLE_DEFAULT_INDIC( sund, SUND, "Sundanese" ) STYLE_DEFAULT_INDIC( sylo, SYLO, "Syloti Nagri" ) - STYLE_DEFAULT_INDIC( taml, TAML, "Tamil" ) STYLE_DEFAULT_INDIC( tibt, TIBT, "Tibetan" ) #endif /* AF_CONFIG_OPTION_INDIC */