[autofit] Add support for Khmer script.
We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and `Khmer symbols' (`khms', U+19E0-U+19FF). * src/autofit/afblue.dat: Add blue zone data for Khmer. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. * src/autofit/afscript.h: Add Khmer standard characters. * src/autofit/afranges.c: Add Khmer data. * src/autofit/afstyles.h: Add Khmer data.
This commit is contained in:
parent
24aa9c665e
commit
facb79abdc
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,20 @@
|
|||
2015-12-06 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[autofit] Add support for Khmer script.
|
||||
|
||||
We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
|
||||
`Khmer symbols' (`khms', U+19E0-U+19FF).
|
||||
|
||||
* src/autofit/afblue.dat: Add blue zone data for Khmer.
|
||||
|
||||
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
|
||||
|
||||
* src/autofit/afscript.h: Add Khmer standard characters.
|
||||
|
||||
* src/autofit/afranges.c: Add Khmer data.
|
||||
|
||||
* src/autofit/afstyles.h: Add Khmer data.
|
||||
|
||||
2015-12-06 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[autofit] Rewrite HarfBuzz interface to support character clusters.
|
||||
|
|
|
@ -64,6 +64,18 @@
|
|||
'\0',
|
||||
'\xD7', '\xA7', ' ', '\xD7', '\x9A', ' ', '\xD7', '\x9F', ' ', '\xD7', '\xA3', ' ', '\xD7', '\xA5', /* ק ך ן ף ץ */
|
||||
'\0',
|
||||
'\xE1', '\x9E', '\x81', ' ', '\xE1', '\x9E', '\x91', ' ', '\xE1', '\x9E', '\x93', ' ', '\xE1', '\x9E', '\xA7', ' ', '\xE1', '\x9E', '\xA9', ' ', '\xE1', '\x9E', '\xB6', /* ខ ទ ន ឧ ឩ ា */
|
||||
'\0',
|
||||
'\xE1', '\x9E', '\x81', ' ', '\xE1', '\x9E', '\x83', ' ', '\xE1', '\x9E', '\x85', ' ', '\xE1', '\x9E', '\x8B', ' ', '\xE1', '\x9E', '\x94', ' ', '\xE1', '\x9E', '\x98', ' ', '\xE1', '\x9E', '\x99', ' ', '\xE1', '\x9E', '\xB2', /* ខ ឃ ច ឋ ប ម យ ឲ */
|
||||
'\0',
|
||||
'\xE1', '\x9E', '\x8F', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x9A', ' ', '\xE1', '\x9E', '\x9A', '\xE1', '\x9F', '\x80', ' ', '\xE1', '\x9E', '\xB2', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x99', /* ត្រ រៀ ឲ្យ */
|
||||
'\0',
|
||||
'\xE1', '\x9E', '\x84', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x81', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x99', ' ', '\xE1', '\x9E', '\x80', '\xE1', '\x9F', '\x92', '\xE1', '\x9E', '\x94', '\xE1', '\x9F', '\x80', /* ង្ខ្យ ក្បៀ */
|
||||
'\0',
|
||||
'\xE1', '\xA7', '\xA0', ' ', '\xE1', '\xA7', '\xA1', /* ᧠ ᧡ */
|
||||
'\0',
|
||||
'\xE1', '\xA7', '\xB6', ' ', '\xE1', '\xA7', '\xB9', /* ᧶ ᧹ */
|
||||
'\0',
|
||||
'\xE0', '\xBA', '\xB2', ' ', '\xE0', '\xBA', '\x94', ' ', '\xE0', '\xBA', '\xAD', ' ', '\xE0', '\xBA', '\xA1', ' ', '\xE0', '\xBA', '\xA5', ' ', '\xE0', '\xBA', '\xA7', ' ', '\xE0', '\xBA', '\xA3', ' ', '\xE0', '\xBA', '\x87', /* າ ດ ອ ມ ລ ວ ຣ ງ */
|
||||
'\0',
|
||||
'\xE0', '\xBA', '\xB2', ' ', '\xE0', '\xBA', '\xAD', ' ', '\xE0', '\xBA', '\x9A', ' ', '\xE0', '\xBA', '\x8D', ' ', '\xE0', '\xBA', '\xA3', ' ', '\xE0', '\xBA', '\xAE', ' ', '\xE0', '\xBA', '\xA7', ' ', '\xE0', '\xBA', '\xA2', /* າ ອ ບ ຍ ຣ ຮ ວ ຢ */
|
||||
|
@ -203,6 +215,16 @@
|
|||
{ AF_BLUE_STRING_HEBREW_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_HEBREW_DESCENDER, 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_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_KHMER_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_KHMER_LARGE_DESCENDER, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 },
|
||||
{ AF_BLUE_STRING_MAX, 0 },
|
||||
{ AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT },
|
||||
{ AF_BLUE_STRING_LAO_BOTTOM, 0 },
|
||||
|
|
|
@ -125,6 +125,20 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
AF_BLUE_STRING_HEBREW_DESCENDER
|
||||
"ק ך ן ף ץ"
|
||||
|
||||
AF_BLUE_STRING_KHMER_TOP
|
||||
"ខ ទ ន ឧ ឩ ា"
|
||||
AF_BLUE_STRING_KHMER_BOTTOM
|
||||
"ខ ឃ ច ឋ ប ម យ ឲ"
|
||||
AF_BLUE_STRING_KHMER_DESCENDER
|
||||
"ត្រ រៀ ឲ្យ"
|
||||
AF_BLUE_STRING_KHMER_LARGE_DESCENDER
|
||||
"ង្ខ្យ ក្បៀ"
|
||||
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP
|
||||
"᧠ ᧡"
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM
|
||||
"᧶ ᧹"
|
||||
|
||||
AF_BLUE_STRING_LAO_TOP
|
||||
"າ ດ ອ ມ ລ ວ ຣ ງ"
|
||||
AF_BLUE_STRING_LAO_BOTTOM
|
||||
|
@ -265,6 +279,14 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
|
|||
// respectively. Only horizontal blue zones (i.e., adjusting vertical
|
||||
// coordinate values) are supported.
|
||||
//
|
||||
// Some scripts like Khmer need character composition to get all necessary
|
||||
// blue zones, since Unicode only provides an abstract data model that
|
||||
// doesn't represent all possible glyph shapes. For such character
|
||||
// clusters, the HarfBuzz library is used to convert them into the
|
||||
// corresponding glyphs. The largest glyph element (where `largest' can be
|
||||
// either `largest ascender' or `largest descender') then defines the
|
||||
// corresponding flat or round extremum.
|
||||
//
|
||||
// For the latin auto-hinter, the overshoot should be larger than the
|
||||
// reference for top zones, and vice versa for bottom zones.
|
||||
//
|
||||
|
@ -376,6 +398,20 @@ 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_KHMR
|
||||
{ AF_BLUE_STRING_KHMER_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_KHMER_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_KHMER_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_KHMER_LARGE_DESCENDER, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_KHMS
|
||||
{ AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
{ AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 }
|
||||
{ AF_BLUE_STRING_MAX, 0 }
|
||||
|
||||
AF_BLUE_STRINGSET_LAO
|
||||
{ AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP |
|
||||
AF_BLUE_PROPERTY_LATIN_X_HEIGHT }
|
||||
|
|
|
@ -96,36 +96,42 @@ FT_BEGIN_HEADER
|
|||
AF_BLUE_STRING_HEBREW_TOP = 326,
|
||||
AF_BLUE_STRING_HEBREW_BOTTOM = 350,
|
||||
AF_BLUE_STRING_HEBREW_DESCENDER = 368,
|
||||
AF_BLUE_STRING_LAO_TOP = 383,
|
||||
AF_BLUE_STRING_LAO_BOTTOM = 415,
|
||||
AF_BLUE_STRING_LAO_ASCENDER = 447,
|
||||
AF_BLUE_STRING_LAO_LARGE_ASCENDER = 463,
|
||||
AF_BLUE_STRING_LAO_DESCENDER = 475,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_TOP = 499,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 515,
|
||||
AF_BLUE_STRING_LATIN_SMALL_F_TOP = 531,
|
||||
AF_BLUE_STRING_LATIN_SMALL = 545,
|
||||
AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 559,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 569,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 589,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 609,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL = 629,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 665,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 685,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 716,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 745,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL = 771,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 796,
|
||||
AF_BLUE_STRING_TELUGU_TOP = 807,
|
||||
AF_BLUE_STRING_TELUGU_BOTTOM = 835,
|
||||
AF_BLUE_STRING_THAI_TOP = 863,
|
||||
AF_BLUE_STRING_THAI_BOTTOM = 887,
|
||||
AF_BLUE_STRING_THAI_ASCENDER = 915,
|
||||
AF_BLUE_STRING_THAI_LARGE_ASCENDER = 927,
|
||||
AF_BLUE_STRING_THAI_DESCENDER = 939,
|
||||
AF_BLUE_STRING_THAI_LARGE_DESCENDER = 955,
|
||||
AF_BLUE_STRING_THAI_DIGIT_TOP = 963,
|
||||
af_blue_1_1 = 974,
|
||||
AF_BLUE_STRING_KHMER_TOP = 383,
|
||||
AF_BLUE_STRING_KHMER_BOTTOM = 407,
|
||||
AF_BLUE_STRING_KHMER_DESCENDER = 439,
|
||||
AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 466,
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 495,
|
||||
AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 503,
|
||||
AF_BLUE_STRING_LAO_TOP = 511,
|
||||
AF_BLUE_STRING_LAO_BOTTOM = 543,
|
||||
AF_BLUE_STRING_LAO_ASCENDER = 575,
|
||||
AF_BLUE_STRING_LAO_LARGE_ASCENDER = 591,
|
||||
AF_BLUE_STRING_LAO_DESCENDER = 603,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_TOP = 627,
|
||||
AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 643,
|
||||
AF_BLUE_STRING_LATIN_SMALL_F_TOP = 659,
|
||||
AF_BLUE_STRING_LATIN_SMALL = 673,
|
||||
AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 687,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 697,
|
||||
AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 717,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 737,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL = 757,
|
||||
AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 793,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 813,
|
||||
AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 844,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 873,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL = 899,
|
||||
AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 924,
|
||||
AF_BLUE_STRING_TELUGU_TOP = 935,
|
||||
AF_BLUE_STRING_TELUGU_BOTTOM = 963,
|
||||
AF_BLUE_STRING_THAI_TOP = 991,
|
||||
AF_BLUE_STRING_THAI_BOTTOM = 1015,
|
||||
AF_BLUE_STRING_THAI_ASCENDER = 1043,
|
||||
AF_BLUE_STRING_THAI_LARGE_ASCENDER = 1055,
|
||||
AF_BLUE_STRING_THAI_DESCENDER = 1067,
|
||||
AF_BLUE_STRING_THAI_LARGE_DESCENDER = 1083,
|
||||
AF_BLUE_STRING_THAI_DIGIT_TOP = 1091,
|
||||
af_blue_1_1 = 1102,
|
||||
#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,
|
||||
|
@ -188,13 +194,15 @@ FT_BEGIN_HEADER
|
|||
AF_BLUE_STRINGSET_DEVA = 10,
|
||||
AF_BLUE_STRINGSET_GREK = 16,
|
||||
AF_BLUE_STRINGSET_HEBR = 23,
|
||||
AF_BLUE_STRINGSET_LAO = 27,
|
||||
AF_BLUE_STRINGSET_LATN = 33,
|
||||
AF_BLUE_STRINGSET_LATB = 40,
|
||||
AF_BLUE_STRINGSET_LATP = 47,
|
||||
AF_BLUE_STRINGSET_TELU = 54,
|
||||
AF_BLUE_STRINGSET_THAI = 57,
|
||||
af_blue_2_1 = 65,
|
||||
AF_BLUE_STRINGSET_KHMR = 27,
|
||||
AF_BLUE_STRINGSET_KHMS = 32,
|
||||
AF_BLUE_STRINGSET_LAO = 35,
|
||||
AF_BLUE_STRINGSET_LATN = 41,
|
||||
AF_BLUE_STRINGSET_LATB = 48,
|
||||
AF_BLUE_STRINGSET_LATP = 55,
|
||||
AF_BLUE_STRINGSET_TELU = 62,
|
||||
AF_BLUE_STRINGSET_THAI = 65,
|
||||
af_blue_2_1 = 73,
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
|
||||
af_blue_2_1_1 = af_blue_2_1 + 2,
|
||||
|
|
|
@ -179,6 +179,34 @@
|
|||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_khmr_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x1780UL, 0x17FFUL ), /* Khmer */
|
||||
AF_UNIRANGE_REC( 0UL, 0UL )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_khmr_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x17B7UL, 0x17BDUL ),
|
||||
AF_UNIRANGE_REC( 0x17C6UL, 0x17C6UL ),
|
||||
AF_UNIRANGE_REC( 0x17C9UL, 0x17D3UL ),
|
||||
AF_UNIRANGE_REC( 0x17DDUL, 0x17DDUL ),
|
||||
AF_UNIRANGE_REC( 0UL, 0UL )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_khms_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x19E0UL, 0x19FFUL ), /* Khmer Symbols */
|
||||
AF_UNIRANGE_REC( 0UL, 0UL )
|
||||
};
|
||||
|
||||
const AF_Script_UniRangeRec af_khms_nonbase_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0UL, 0UL )
|
||||
};
|
||||
|
||||
|
||||
const AF_Script_UniRangeRec af_lao_uniranges[] =
|
||||
{
|
||||
AF_UNIRANGE_REC( 0x0E80UL, 0x0EFFUL ), /* Lao */
|
||||
|
|
|
@ -61,6 +61,17 @@
|
|||
HB_SCRIPT_LAO,
|
||||
"\xE0\xBB\x90" ) /* ໐ */
|
||||
|
||||
/* only digit zero has a simple shape in the Khmer script */
|
||||
SCRIPT( khmr, KHMR,
|
||||
"Khmer",
|
||||
HB_SCRIPT_KHMER,
|
||||
"\xE1\x9F\xA0" ) /* ០ */
|
||||
|
||||
SCRIPT( khms, KHMS,
|
||||
"Khmer Symbols",
|
||||
HB_SCRIPT_INVALID,
|
||||
"\xE1\xA7\xA1 \xE1\xA7\xAA" ) /* ᧡ ᧪ */
|
||||
|
||||
SCRIPT( latn, LATN,
|
||||
"Latin",
|
||||
HB_SCRIPT_LATIN,
|
||||
|
|
|
@ -108,6 +108,20 @@
|
|||
AF_BLUE_STRINGSET_HEBR,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( khmr_dflt, KHMR_DFLT,
|
||||
"Khmer default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_KHMR,
|
||||
AF_BLUE_STRINGSET_KHMR,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( khms_dflt, KHMS_DFLT,
|
||||
"Khmer Symbols default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
AF_SCRIPT_KHMS,
|
||||
AF_BLUE_STRINGSET_KHMS,
|
||||
AF_COVERAGE_DEFAULT )
|
||||
|
||||
STYLE( lao_dflt, LAO_DFLT,
|
||||
"Lao default style",
|
||||
AF_WRITING_SYSTEM_LATIN,
|
||||
|
|
Loading…
Reference in New Issue