Merge pull request #2264 from harfbuzz/unicode-13
Update to Unicode 13.0.0
This commit is contained in:
commit
c15146448b
|
@ -267,7 +267,7 @@ unicode-tables: \
|
||||||
tag-table \
|
tag-table \
|
||||||
ucd-table \
|
ucd-table \
|
||||||
use-table \
|
use-table \
|
||||||
emoji-table \
|
vowel-constraints \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
|
arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
|
||||||
|
|
|
@ -5,7 +5,7 @@ import io, os.path, sys
|
||||||
if len (sys.argv) != 4:
|
if len (sys.argv) != 4:
|
||||||
print ("""usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
|
print ("""usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
|
||||||
|
|
||||||
Input files, as of Unicode 12:
|
Input files:
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt
|
* https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt
|
* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt
|
||||||
|
@ -65,7 +65,7 @@ def print_joining_table(f):
|
||||||
values[u] = value
|
values[u] = value
|
||||||
|
|
||||||
short_value = {}
|
short_value = {}
|
||||||
for value in set([v for v in values.values()] + ['JOINING_TYPE_X']):
|
for value in sorted (set ([v for v in values.values ()] + ['JOINING_TYPE_X'])):
|
||||||
short = ''.join(x[0] for x in value.split('_')[2:])
|
short = ''.join(x[0] for x in value.split('_')[2:])
|
||||||
assert short not in short_value.values()
|
assert short not in short_value.values()
|
||||||
short_value[value] = short
|
short_value[value] = short
|
||||||
|
|
|
@ -8,8 +8,8 @@ import packTab
|
||||||
if len (sys.argv) != 2:
|
if len (sys.argv) != 2:
|
||||||
print("""usage: ./gen-emoji-table.py emoji-data.txt
|
print("""usage: ./gen-emoji-table.py emoji-data.txt
|
||||||
|
|
||||||
Input file, as of Unicode 12:
|
Input file:
|
||||||
* https://www.unicode.org/Public/emoji/12.0/emoji-data.txt""", file=sys.stderr)
|
* https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt""", file=sys.stderr)
|
||||||
sys.exit (1)
|
sys.exit (1)
|
||||||
|
|
||||||
f = open(sys.argv[1])
|
f = open(sys.argv[1])
|
||||||
|
|
|
@ -5,7 +5,7 @@ import io, sys
|
||||||
if len (sys.argv) != 4:
|
if len (sys.argv) != 4:
|
||||||
print ("""usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
|
print ("""usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
|
||||||
|
|
||||||
Input files, as of Unicode 12:
|
Input files:
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt
|
* https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt
|
* https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt""", file=sys.stderr)
|
* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt""", file=sys.stderr)
|
||||||
|
|
|
@ -32,7 +32,7 @@ import unicodedata
|
||||||
if len (sys.argv) != 3:
|
if len (sys.argv) != 3:
|
||||||
print ('''usage: ./gen-tag-table.py languagetags language-subtag-registry
|
print ('''usage: ./gen-tag-table.py languagetags language-subtag-registry
|
||||||
|
|
||||||
Input files, as of Unicode 12:
|
Input files:
|
||||||
* https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
|
* https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
|
||||||
* https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry''', file=sys.stderr)
|
* https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry''', file=sys.stderr)
|
||||||
sys.exit (1)
|
sys.exit (1)
|
||||||
|
@ -807,6 +807,7 @@ disambiguation = {
|
||||||
'HAL': 'cfm',
|
'HAL': 'cfm',
|
||||||
'HND': 'hnd',
|
'HND': 'hnd',
|
||||||
'KIS': 'kqs',
|
'KIS': 'kqs',
|
||||||
|
'KUI': 'uki',
|
||||||
'LRC': 'bqi',
|
'LRC': 'bqi',
|
||||||
'NDB': 'nd',
|
'NDB': 'nd',
|
||||||
'NIS': 'njz',
|
'NIS': 'njz',
|
||||||
|
|
|
@ -7,7 +7,7 @@ logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
|
||||||
if len (sys.argv) not in (2, 3):
|
if len (sys.argv) not in (2, 3):
|
||||||
print("""usage: ./gen-ucd-table ucd.nounihan.grouped.xml [/path/to/hb-common.h]
|
print("""usage: ./gen-ucd-table ucd.nounihan.grouped.xml [/path/to/hb-common.h]
|
||||||
|
|
||||||
Input file, as of Unicode 12:
|
Input file:
|
||||||
* https://unicode.org/Public/UCD/latest/ucdxml/ucd.nounihan.grouped.zip""", file=sys.stderr)
|
* https://unicode.org/Public/UCD/latest/ucdxml/ucd.nounihan.grouped.zip""", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import sys
|
||||||
if len (sys.argv) != 5:
|
if len (sys.argv) != 5:
|
||||||
print ("""usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
|
print ("""usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
|
||||||
|
|
||||||
Input file, as of Unicode 12:
|
Input file:
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt
|
* https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt
|
* https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
||||||
|
@ -142,6 +142,7 @@ property_names = [
|
||||||
'Top',
|
'Top',
|
||||||
'Bottom',
|
'Bottom',
|
||||||
'Top_And_Bottom',
|
'Top_And_Bottom',
|
||||||
|
'Top_And_Bottom_And_Left',
|
||||||
'Top_And_Right',
|
'Top_And_Right',
|
||||||
'Top_And_Left',
|
'Top_And_Left',
|
||||||
'Top_And_Left_And_Right',
|
'Top_And_Left_And_Right',
|
||||||
|
@ -297,9 +298,9 @@ use_positions = {
|
||||||
},
|
},
|
||||||
'M': {
|
'M': {
|
||||||
'Abv': [Top],
|
'Abv': [Top],
|
||||||
'Blw': [Bottom, Bottom_And_Left],
|
'Blw': [Bottom, Bottom_And_Left, Bottom_And_Right],
|
||||||
'Pst': [Right],
|
'Pst': [Right],
|
||||||
'Pre': [Left],
|
'Pre': [Left, Top_And_Bottom_And_Left],
|
||||||
},
|
},
|
||||||
'CM': {
|
'CM': {
|
||||||
'Abv': [Top],
|
'Abv': [Top],
|
||||||
|
@ -339,11 +340,11 @@ def map_to_use(data):
|
||||||
|
|
||||||
# Resolve Indic_Syllabic_Category
|
# Resolve Indic_Syllabic_Category
|
||||||
|
|
||||||
# TODO: These don't have UISC assigned in Unicode 12.0, but have UIPC
|
# TODO: These don't have UISC assigned in Unicode 13.0.0, but have UIPC
|
||||||
if 0x1CE2 <= U <= 0x1CE8: UISC = Cantillation_Mark
|
if 0x1CE2 <= U <= 0x1CE8: UISC = Cantillation_Mark
|
||||||
|
|
||||||
# Tibetan:
|
# Tibetan:
|
||||||
# TODO: These don't have UISC assigned in Unicode 12.0, but have UIPC
|
# TODO: These don't have UISC assigned in Unicode 13.0.0, but have UIPC
|
||||||
if 0x0F18 <= U <= 0x0F19 or 0x0F3E <= U <= 0x0F3F: UISC = Vowel_Dependent
|
if 0x0F18 <= U <= 0x0F19 or 0x0F3E <= U <= 0x0F3F: UISC = Vowel_Dependent
|
||||||
if 0x0F86 <= U <= 0x0F87: UISC = Tone_Mark
|
if 0x0F86 <= U <= 0x0F87: UISC = Tone_Mark
|
||||||
# Overrides to allow NFC order matching syllable
|
# Overrides to allow NFC order matching syllable
|
||||||
|
@ -376,24 +377,21 @@ def map_to_use(data):
|
||||||
|
|
||||||
# Resolve Indic_Positional_Category
|
# Resolve Indic_Positional_Category
|
||||||
|
|
||||||
# TODO: These should die, but have UIPC in Unicode 12.0
|
# TODO: These should die, but have UIPC in Unicode 13.0.0
|
||||||
if U in [0x953, 0x954]: UIPC = Not_Applicable
|
if U in [0x953, 0x954]: UIPC = Not_Applicable
|
||||||
|
|
||||||
# TODO: In USE's override list but not in Unicode 12.0
|
|
||||||
if U == 0x103C: UIPC = Left
|
|
||||||
|
|
||||||
# TODO: https://github.com/harfbuzz/harfbuzz/pull/2012
|
# TODO: https://github.com/harfbuzz/harfbuzz/pull/2012
|
||||||
if U == 0x1C29: UIPC = Left
|
if U == 0x1C29: UIPC = Left
|
||||||
|
|
||||||
# TODO: These are not in USE's override list that we have, nor are they in Unicode 12.0
|
# TODO: These are not in USE's override list that we have, nor are they in Unicode 13.0.0
|
||||||
if 0xA926 <= U <= 0xA92A: UIPC = Top
|
if 0xA926 <= U <= 0xA92A: UIPC = Top
|
||||||
# TODO: https://github.com/harfbuzz/harfbuzz/pull/1037
|
# TODO: https://github.com/harfbuzz/harfbuzz/pull/1037
|
||||||
# and https://github.com/harfbuzz/harfbuzz/issues/1631
|
# and https://github.com/harfbuzz/harfbuzz/issues/1631
|
||||||
if U in [0x11302, 0x11303, 0x114C1]: UIPC = Top
|
if U in [0x11302, 0x11303, 0x114C1]: UIPC = Top
|
||||||
if U == 0x1171E: UIPC = Left
|
|
||||||
if 0x1CF8 <= U <= 0x1CF9: UIPC = Top
|
if 0x1CF8 <= U <= 0x1CF9: UIPC = Top
|
||||||
|
|
||||||
assert (UIPC in [Not_Applicable, Visual_Order_Left] or
|
assert (UIPC in [Not_Applicable, Visual_Order_Left] or
|
||||||
|
USE == 'R' or
|
||||||
USE in use_positions), "%s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC)
|
USE in use_positions), "%s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC)
|
||||||
|
|
||||||
pos_mapping = use_positions.get(USE, None)
|
pos_mapping = use_positions.get(USE, None)
|
||||||
|
|
|
@ -21,7 +21,7 @@ import sys
|
||||||
if len (sys.argv) != 3:
|
if len (sys.argv) != 3:
|
||||||
print ("""usage: ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt
|
print ("""usage: ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt
|
||||||
|
|
||||||
Input file, as of Unicode 12:
|
Input file:
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/Scripts.txt""", file=sys.stderr)
|
* https://unicode.org/Public/UCD/latest/ucd/Scripts.txt""", file=sys.stderr)
|
||||||
sys.exit (1)
|
sys.exit (1)
|
||||||
|
|
||||||
|
@ -103,9 +103,9 @@ class ConstraintSet (object):
|
||||||
s.append ('{}0x{:04X}u == buffer->cur ({}).codepoint{}\n'.format (
|
s.append ('{}0x{:04X}u == buffer->cur ({}).codepoint{}\n'.format (
|
||||||
self._indent (depth + 2), cp, index + i, ')' if i == len (self._c) - 1 else ' &&'))
|
self._indent (depth + 2), cp, index + i, ')' if i == len (self._c) - 1 else ' &&'))
|
||||||
s.append ('{}{{\n'.format (indent))
|
s.append ('{}{{\n'.format (indent))
|
||||||
for i in range (index + 1):
|
for i in range (index):
|
||||||
s.append ('{}buffer->next_glyph ();\n'.format (self._indent (depth + 1)))
|
s.append ('{}buffer->next_glyph ();\n'.format (self._indent (depth + 1)))
|
||||||
s.append ('{}_output_dotted_circle (buffer);\n'.format (self._indent (depth + 1)))
|
s.append ('{}matched = true;\n'.format (self._indent (depth + 1)))
|
||||||
s.append ('{}}}\n'.format (indent))
|
s.append ('{}}}\n'.format (indent))
|
||||||
else:
|
else:
|
||||||
s.append ('{}switch (buffer->cur ({}).codepoint)\n'.format(indent, index or ''))
|
s.append ('{}switch (buffer->cur ({}).codepoint)\n'.format(indent, index or ''))
|
||||||
|
|
|
@ -574,6 +574,13 @@ hb_script_get_horizontal_direction (hb_script_t script)
|
||||||
case HB_SCRIPT_OLD_SOGDIAN:
|
case HB_SCRIPT_OLD_SOGDIAN:
|
||||||
case HB_SCRIPT_SOGDIAN:
|
case HB_SCRIPT_SOGDIAN:
|
||||||
|
|
||||||
|
/* Unicode-12.0 additions */
|
||||||
|
case HB_SCRIPT_ELYMAIC:
|
||||||
|
|
||||||
|
/* Unicode-13.0 additions */
|
||||||
|
case HB_SCRIPT_CHORASMIAN:
|
||||||
|
case HB_SCRIPT_YEZIDI:
|
||||||
|
|
||||||
return HB_DIRECTION_RTL;
|
return HB_DIRECTION_RTL;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -367,6 +367,14 @@ typedef enum
|
||||||
/*12.0*/HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'),
|
/*12.0*/HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'),
|
||||||
/*12.0*/HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'),
|
/*12.0*/HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Since REPLACEME
|
||||||
|
*/
|
||||||
|
/*13.0*/HB_SCRIPT_CHORASMIAN = HB_TAG ('C','h','r','s'),
|
||||||
|
/*13.0*/HB_SCRIPT_DIVES_AKURU = HB_TAG ('D','i','a','k'),
|
||||||
|
/*13.0*/HB_SCRIPT_KHITAN_SMALL_SCRIPT = HB_TAG ('K','i','t','s'),
|
||||||
|
/*13.0*/HB_SCRIPT_YEZIDI = HB_TAG ('Y','e','z','i'),
|
||||||
|
|
||||||
/* No script set. */
|
/* No script set. */
|
||||||
HB_SCRIPT_INVALID = HB_TAG_NONE,
|
HB_SCRIPT_INVALID = HB_TAG_NONE,
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
*
|
*
|
||||||
* on files with these headers:
|
* on files with these headers:
|
||||||
*
|
*
|
||||||
* # ArabicShaping-12.0.0.txt
|
* # ArabicShaping-13.0.0.txt
|
||||||
* # Date: 2018-09-22, 23:54:00 GMT [KW, RP]
|
* # Date: 2020-01-31, 23:55:00 GMT [KW, RP]
|
||||||
* # Blocks-12.0.0.txt
|
* # Blocks-13.0.0.txt
|
||||||
* # Date: 2018-07-30, 19:40:00 GMT [KW]
|
* # Date: 2019-07-10, 19:06:00 GMT [KW]
|
||||||
* UnicodeData.txt does not have a header.
|
* UnicodeData.txt does not have a header.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -17,15 +17,15 @@
|
||||||
#define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
|
#define HB_OT_SHAPE_COMPLEX_ARABIC_TABLE_HH
|
||||||
|
|
||||||
|
|
||||||
#define X JOINING_TYPE_X
|
#define A JOINING_GROUP_ALAPH
|
||||||
|
#define DR JOINING_GROUP_DALATH_RISH
|
||||||
|
#define C JOINING_TYPE_C
|
||||||
|
#define D JOINING_TYPE_D
|
||||||
|
#define L JOINING_TYPE_L
|
||||||
#define R JOINING_TYPE_R
|
#define R JOINING_TYPE_R
|
||||||
#define T JOINING_TYPE_T
|
#define T JOINING_TYPE_T
|
||||||
#define U JOINING_TYPE_U
|
#define U JOINING_TYPE_U
|
||||||
#define A JOINING_GROUP_ALAPH
|
#define X JOINING_TYPE_X
|
||||||
#define DR JOINING_GROUP_DALATH_RISH
|
|
||||||
#define L JOINING_TYPE_L
|
|
||||||
#define C JOINING_TYPE_C
|
|
||||||
#define D JOINING_TYPE_D
|
|
||||||
|
|
||||||
static const uint8_t joining_table[] =
|
static const uint8_t joining_table[] =
|
||||||
{
|
{
|
||||||
|
@ -71,7 +71,7 @@ static const uint8_t joining_table[] =
|
||||||
|
|
||||||
/* Mandaic */
|
/* Mandaic */
|
||||||
|
|
||||||
/* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X,
|
/* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,R,R,R,X,X,X,X,X,X,X,
|
||||||
|
|
||||||
/* Syriac Supplement */
|
/* Syriac Supplement */
|
||||||
|
|
||||||
|
@ -80,8 +80,8 @@ static const uint8_t joining_table[] =
|
||||||
|
|
||||||
/* Arabic Extended-A */
|
/* Arabic Extended-A */
|
||||||
|
|
||||||
/* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,X,D,D,D,R,D,D,D,D,X,X,
|
/* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,X,D,D,D,R,D,D,D,D,D,D,
|
||||||
/* 08C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
|
/* 08C0 */ D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
|
||||||
/* 08E0 */ X,X,U,
|
/* 08E0 */ X,X,U,
|
||||||
|
|
||||||
#define joining_offset_0x1806u 739
|
#define joining_offset_0x1806u 739
|
||||||
|
@ -139,14 +139,21 @@ static const uint8_t joining_table[] =
|
||||||
/* 10F20 */ D,D,D,R,D,D,D,D,D,D,D,D,D,D,D,D,
|
/* 10F20 */ D,D,D,R,D,D,D,D,D,D,D,D,D,D,D,D,
|
||||||
/* 10F40 */ D,D,D,D,D,U,X,X,X,X,X,X,X,X,X,X,X,D,D,D,R,
|
/* 10F40 */ D,D,D,D,D,U,X,X,X,X,X,X,X,X,X,X,X,D,D,D,R,
|
||||||
|
|
||||||
#define joining_offset_0x110bdu 1219
|
#define joining_offset_0x10fb0u 1219
|
||||||
|
|
||||||
|
/* Chorasmian */
|
||||||
|
|
||||||
|
/* 10FA0 */ D,U,D,D,R,R,R,U,D,R,R,D,D,R,D,D,
|
||||||
|
/* 10FC0 */ U,D,R,R,D,U,U,U,U,R,D,L,
|
||||||
|
|
||||||
|
#define joining_offset_0x110bdu 1247
|
||||||
|
|
||||||
/* Kaithi */
|
/* Kaithi */
|
||||||
|
|
||||||
/* 110A0 */ U,X,X,
|
/* 110A0 */ U,X,X,
|
||||||
/* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U,
|
/* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U,
|
||||||
|
|
||||||
#define joining_offset_0x1e900u 1236
|
#define joining_offset_0x1e900u 1264
|
||||||
|
|
||||||
/* Adlam */
|
/* Adlam */
|
||||||
|
|
||||||
|
@ -154,7 +161,7 @@ static const uint8_t joining_table[] =
|
||||||
/* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
|
/* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
|
||||||
/* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T,
|
/* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T,
|
||||||
|
|
||||||
}; /* Table items: 1312; occupancy: 56% */
|
}; /* Table items: 1340; occupancy: 57% */
|
||||||
|
|
||||||
|
|
||||||
static unsigned int
|
static unsigned int
|
||||||
|
@ -183,6 +190,7 @@ joining_type (hb_codepoint_t u)
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x10D00u, 0x10D23u)) return joining_table[u - 0x10D00u + joining_offset_0x10d00u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x10D00u, 0x10D23u)) return joining_table[u - 0x10D00u + joining_offset_0x10d00u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x10F30u, 0x10F54u)) return joining_table[u - 0x10F30u + joining_offset_0x10f30u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x10F30u, 0x10F54u)) return joining_table[u - 0x10F30u + joining_offset_0x10f30u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10FB0u, 0x10FCBu)) return joining_table[u - 0x10FB0u + joining_offset_0x10fb0u];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x11u:
|
case 0x11u:
|
||||||
|
@ -199,15 +207,15 @@ joining_type (hb_codepoint_t u)
|
||||||
return X;
|
return X;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef X
|
#undef A
|
||||||
|
#undef DR
|
||||||
|
#undef C
|
||||||
|
#undef D
|
||||||
|
#undef L
|
||||||
#undef R
|
#undef R
|
||||||
#undef T
|
#undef T
|
||||||
#undef U
|
#undef U
|
||||||
#undef A
|
#undef X
|
||||||
#undef DR
|
|
||||||
#undef L
|
|
||||||
#undef C
|
|
||||||
#undef D
|
|
||||||
|
|
||||||
|
|
||||||
static const uint16_t shaping_table[][4] =
|
static const uint16_t shaping_table[][4] =
|
||||||
|
@ -406,16 +414,16 @@ static const struct ligature_set_t {
|
||||||
} ligature_table[] =
|
} ligature_table[] =
|
||||||
{
|
{
|
||||||
{ 0xFEDFu, {
|
{ 0xFEDFu, {
|
||||||
{ 0xFE88u, 0xFEF9u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM */
|
|
||||||
{ 0xFE82u, 0xFEF5u }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM */
|
{ 0xFE82u, 0xFEF5u }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM */
|
||||||
{ 0xFE8Eu, 0xFEFBu }, /* ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM */
|
|
||||||
{ 0xFE84u, 0xFEF7u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM */
|
{ 0xFE84u, 0xFEF7u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM */
|
||||||
|
{ 0xFE88u, 0xFEF9u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM */
|
||||||
|
{ 0xFE8Eu, 0xFEFBu }, /* ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM */
|
||||||
}},
|
}},
|
||||||
{ 0xFEE0u, {
|
{ 0xFEE0u, {
|
||||||
{ 0xFE88u, 0xFEFAu }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM */
|
|
||||||
{ 0xFE82u, 0xFEF6u }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM */
|
{ 0xFE82u, 0xFEF6u }, /* ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM */
|
||||||
{ 0xFE8Eu, 0xFEFCu }, /* ARABIC LIGATURE LAM WITH ALEF FINAL FORM */
|
|
||||||
{ 0xFE84u, 0xFEF8u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM */
|
{ 0xFE84u, 0xFEF8u }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM */
|
||||||
|
{ 0xFE88u, 0xFEFAu }, /* ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM */
|
||||||
|
{ 0xFE8Eu, 0xFEFCu }, /* ARABIC LIGATURE LAM WITH ALEF FINAL FORM */
|
||||||
}},
|
}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
*
|
*
|
||||||
* on files with these headers:
|
* on files with these headers:
|
||||||
*
|
*
|
||||||
* # IndicSyllabicCategory-12.0.0.txt
|
* # IndicSyllabicCategory-13.0.0.txt
|
||||||
* # Date: 2019-01-31, 02:26:00 GMT [KW, RP]
|
* # Date: 2019-07-22, 19:55:00 GMT [KW, RP]
|
||||||
* # IndicPositionalCategory-12.0.0.txt
|
* # IndicPositionalCategory-13.0.0.txt
|
||||||
* # Date: 2019-01-31, 02:26:00 GMT [KW, RP]
|
* # Date: 2019-07-23, 00:01:00 GMT [KW, RP]
|
||||||
* # Blocks-12.0.0.txt
|
* # Blocks-13.0.0.txt
|
||||||
* # Date: 2018-07-30, 19:40:00 GMT [KW]
|
* # Date: 2019-07-10, 19:06:00 GMT [KW]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "hb.hh"
|
#include "hb.hh"
|
||||||
|
@ -24,32 +24,32 @@
|
||||||
#pragma GCC diagnostic ignored "-Wunused-macros"
|
#pragma GCC diagnostic ignored "-Wunused-macros"
|
||||||
|
|
||||||
#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 17 chars; Avagraha */
|
#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 17 chars; Avagraha */
|
||||||
#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 86 chars; Bindu */
|
#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 91 chars; Bindu */
|
||||||
#define ISC_BJN INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER /* 20 chars; Brahmi_Joining_Number */
|
#define ISC_BJN INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER /* 20 chars; Brahmi_Joining_Number */
|
||||||
#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 59 chars; Cantillation_Mark */
|
#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 59 chars; Cantillation_Mark */
|
||||||
#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 2160 chars; Consonant */
|
#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 2195 chars; Consonant */
|
||||||
#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 12 chars; Consonant_Dead */
|
#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 12 chars; Consonant_Dead */
|
||||||
#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 67 chars; Consonant_Final */
|
#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 67 chars; Consonant_Final */
|
||||||
#define ISC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER /* 5 chars; Consonant_Head_Letter */
|
#define ISC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER /* 5 chars; Consonant_Head_Letter */
|
||||||
#define ISC_CIP INDIC_SYLLABIC_CATEGORY_CONSONANT_INITIAL_POSTFIXED /* 1 chars; Consonant_Initial_Postfixed */
|
#define ISC_CIP INDIC_SYLLABIC_CATEGORY_CONSONANT_INITIAL_POSTFIXED /* 1 chars; Consonant_Initial_Postfixed */
|
||||||
#define ISC_CK INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER /* 2 chars; Consonant_Killer */
|
#define ISC_CK INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER /* 2 chars; Consonant_Killer */
|
||||||
#define ISC_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 29 chars; Consonant_Medial */
|
#define ISC_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 31 chars; Consonant_Medial */
|
||||||
#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 22 chars; Consonant_Placeholder */
|
#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 22 chars; Consonant_Placeholder */
|
||||||
#define ISC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA /* 2 chars; Consonant_Preceding_Repha */
|
#define ISC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA /* 3 chars; Consonant_Preceding_Repha */
|
||||||
#define ISC_CPrf INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED /* 9 chars; Consonant_Prefixed */
|
#define ISC_CPrf INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED /* 10 chars; Consonant_Prefixed */
|
||||||
#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED /* 94 chars; Consonant_Subjoined */
|
#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED /* 94 chars; Consonant_Subjoined */
|
||||||
#define ISC_CSR INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA /* 4 chars; Consonant_Succeeding_Repha */
|
#define ISC_CSR INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA /* 4 chars; Consonant_Succeeding_Repha */
|
||||||
#define ISC_CWS INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER /* 6 chars; Consonant_With_Stacker */
|
#define ISC_CWS INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER /* 8 chars; Consonant_With_Stacker */
|
||||||
#define ISC_GM INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK /* 3 chars; Gemination_Mark */
|
#define ISC_GM INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK /* 3 chars; Gemination_Mark */
|
||||||
#define ISC_IS INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER /* 11 chars; Invisible_Stacker */
|
#define ISC_IS INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER /* 12 chars; Invisible_Stacker */
|
||||||
#define ISC_ZWJ INDIC_SYLLABIC_CATEGORY_JOINER /* 1 chars; Joiner */
|
#define ISC_ZWJ INDIC_SYLLABIC_CATEGORY_JOINER /* 1 chars; Joiner */
|
||||||
#define ISC_ML INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER /* 1 chars; Modifying_Letter */
|
#define ISC_ML INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER /* 1 chars; Modifying_Letter */
|
||||||
#define ISC_ZWNJ INDIC_SYLLABIC_CATEGORY_NON_JOINER /* 1 chars; Non_Joiner */
|
#define ISC_ZWNJ INDIC_SYLLABIC_CATEGORY_NON_JOINER /* 1 chars; Non_Joiner */
|
||||||
#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 30 chars; Nukta */
|
#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 31 chars; Nukta */
|
||||||
#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 481 chars; Number */
|
#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 491 chars; Number */
|
||||||
#define ISC_NJ INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER /* 1 chars; Number_Joiner */
|
#define ISC_NJ INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER /* 1 chars; Number_Joiner */
|
||||||
#define ISC_x INDIC_SYLLABIC_CATEGORY_OTHER /* 1 chars; Other */
|
#define ISC_x INDIC_SYLLABIC_CATEGORY_OTHER /* 1 chars; Other */
|
||||||
#define ISC_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 21 chars; Pure_Killer */
|
#define ISC_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 23 chars; Pure_Killer */
|
||||||
#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 2 chars; Register_Shifter */
|
#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 2 chars; Register_Shifter */
|
||||||
#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER /* 25 chars; Syllable_Modifier */
|
#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER /* 25 chars; Syllable_Modifier */
|
||||||
#define ISC_TL INDIC_SYLLABIC_CATEGORY_TONE_LETTER /* 7 chars; Tone_Letter */
|
#define ISC_TL INDIC_SYLLABIC_CATEGORY_TONE_LETTER /* 7 chars; Tone_Letter */
|
||||||
|
@ -57,19 +57,20 @@
|
||||||
#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA /* 27 chars; Virama */
|
#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA /* 27 chars; Virama */
|
||||||
#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA /* 35 chars; Visarga */
|
#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA /* 35 chars; Visarga */
|
||||||
#define ISC_Vo INDIC_SYLLABIC_CATEGORY_VOWEL /* 30 chars; Vowel */
|
#define ISC_Vo INDIC_SYLLABIC_CATEGORY_VOWEL /* 30 chars; Vowel */
|
||||||
#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 673 chars; Vowel_Dependent */
|
#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 683 chars; Vowel_Dependent */
|
||||||
#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 476 chars; Vowel_Independent */
|
#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 484 chars; Vowel_Independent */
|
||||||
|
|
||||||
#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 349 chars; Bottom */
|
#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 351 chars; Bottom */
|
||||||
#define IMC_BL INDIC_MATRA_CATEGORY_BOTTOM_AND_LEFT /* 1 chars; Bottom_And_Left */
|
#define IMC_BL INDIC_MATRA_CATEGORY_BOTTOM_AND_LEFT /* 1 chars; Bottom_And_Left */
|
||||||
#define IMC_BR INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT /* 2 chars; Bottom_And_Right */
|
#define IMC_BR INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT /* 4 chars; Bottom_And_Right */
|
||||||
#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 61 chars; Left */
|
#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 64 chars; Left */
|
||||||
#define IMC_LR INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT /* 21 chars; Left_And_Right */
|
#define IMC_LR INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT /* 22 chars; Left_And_Right */
|
||||||
#define IMC_x INDIC_MATRA_CATEGORY_NOT_APPLICABLE /* 1 chars; Not_Applicable */
|
#define IMC_x INDIC_MATRA_CATEGORY_NOT_APPLICABLE /* 1 chars; Not_Applicable */
|
||||||
#define IMC_O INDIC_MATRA_CATEGORY_OVERSTRUCK /* 10 chars; Overstruck */
|
#define IMC_O INDIC_MATRA_CATEGORY_OVERSTRUCK /* 10 chars; Overstruck */
|
||||||
#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 281 chars; Right */
|
#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 288 chars; Right */
|
||||||
#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 398 chars; Top */
|
#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 415 chars; Top */
|
||||||
#define IMC_TB INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM /* 10 chars; Top_And_Bottom */
|
#define IMC_TB INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM /* 10 chars; Top_And_Bottom */
|
||||||
|
#define IMC_TBL INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_LEFT /* 2 chars; Top_And_Bottom_And_Left */
|
||||||
#define IMC_TBR INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT /* 1 chars; Top_And_Bottom_And_Right */
|
#define IMC_TBR INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT /* 1 chars; Top_And_Bottom_And_Right */
|
||||||
#define IMC_TL INDIC_MATRA_CATEGORY_TOP_AND_LEFT /* 6 chars; Top_And_Left */
|
#define IMC_TL INDIC_MATRA_CATEGORY_TOP_AND_LEFT /* 6 chars; Top_And_Left */
|
||||||
#define IMC_TLR INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT /* 4 chars; Top_And_Left_And_Right */
|
#define IMC_TLR INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT /* 4 chars; Top_And_Left_And_Right */
|
||||||
|
@ -195,7 +196,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
|
||||||
/* 0B38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,T),
|
/* 0B38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,T),
|
||||||
/* 0B40 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), _(M,L),
|
/* 0B40 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), _(M,L),
|
||||||
/* 0B48 */ _(M,TL), _(x,x), _(x,x), _(M,LR),_(M,TLR), _(V,B), _(x,x), _(x,x),
|
/* 0B48 */ _(M,TL), _(x,x), _(x,x), _(M,LR),_(M,TLR), _(V,B), _(x,x), _(x,x),
|
||||||
/* 0B50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,TR),
|
/* 0B50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,T), _(M,TR),
|
||||||
/* 0B58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x),
|
/* 0B58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x),
|
||||||
/* 0B60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
|
/* 0B60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
|
||||||
/* 0B68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
|
/* 0B68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
|
||||||
|
@ -261,7 +262,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
|
||||||
|
|
||||||
/* Malayalam */
|
/* Malayalam */
|
||||||
|
|
||||||
/* 0D00 */ _(Bi,T), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
|
/* 0D00 */ _(Bi,T), _(Bi,T), _(Bi,R), _(Vs,R), _(Bi,x), _(VI,x), _(VI,x), _(VI,x),
|
||||||
/* 0D08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x),
|
/* 0D08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x),
|
||||||
/* 0D10 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
|
/* 0D10 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
|
||||||
/* 0D18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
|
/* 0D18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
|
||||||
|
@ -270,7 +271,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
|
||||||
/* 0D30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
|
/* 0D30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
|
||||||
/* 0D38 */ _(C,x), _(C,x), _(C,x), _(PK,T), _(PK,T), _(A,x), _(M,R), _(M,R),
|
/* 0D38 */ _(C,x), _(C,x), _(C,x), _(PK,T), _(PK,T), _(A,x), _(M,R), _(M,R),
|
||||||
/* 0D40 */ _(M,R), _(M,R), _(M,R), _(M,B), _(M,B), _(x,x), _(M,L), _(M,L),
|
/* 0D40 */ _(M,R), _(M,R), _(M,R), _(M,B), _(M,B), _(x,x), _(M,L), _(M,L),
|
||||||
/* 0D48 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T),_(CPR,x), _(x,x),
|
/* 0D48 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T),_(CPR,T), _(x,x),
|
||||||
/* 0D50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(CD,x), _(CD,x), _(CD,x), _(M,R),
|
/* 0D50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(CD,x), _(CD,x), _(CD,x), _(M,R),
|
||||||
/* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,x),
|
/* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,x),
|
||||||
/* 0D60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
|
/* 0D60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
|
||||||
|
@ -280,7 +281,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
|
||||||
|
|
||||||
/* Sinhala */
|
/* Sinhala */
|
||||||
|
|
||||||
/* 0D80 */ _(x,x), _(x,x), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
|
/* 0D80 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
|
||||||
/* 0D88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
|
/* 0D88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
|
||||||
/* 0D90 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x),
|
/* 0D90 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x),
|
||||||
/* 0D98 */ _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
|
/* 0D98 */ _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
|
||||||
|
@ -308,7 +309,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
|
||||||
/* 1020 */ _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
|
/* 1020 */ _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
|
||||||
/* 1028 */ _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R), _(M,T), _(M,T), _(M,B),
|
/* 1028 */ _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R), _(M,T), _(M,T), _(M,B),
|
||||||
/* 1030 */ _(M,B), _(M,L), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,T), _(TM,B),
|
/* 1030 */ _(M,B), _(M,L), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,T), _(TM,B),
|
||||||
/* 1038 */ _(Vs,R), _(IS,x), _(PK,T), _(CM,R), _(CM,x), _(CM,B), _(CM,B), _(C,x),
|
/* 1038 */ _(Vs,R), _(IS,x), _(PK,T), _(CM,R),_(CM,TBL), _(CM,B), _(CM,B), _(C,x),
|
||||||
/* 1040 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
|
/* 1040 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
|
||||||
/* 1048 */ _(Nd,x), _(Nd,x), _(x,x), _(CP,x), _(x,x), _(x,x), _(CP,x), _(x,x),
|
/* 1048 */ _(Nd,x), _(Nd,x), _(x,x), _(CP,x), _(x,x), _(x,x), _(CP,x), _(x,x),
|
||||||
/* 1050 */ _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R),
|
/* 1050 */ _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R),
|
||||||
|
@ -488,6 +489,7 @@ hb_indic_get_categories (hb_codepoint_t u)
|
||||||
#undef IMC_R
|
#undef IMC_R
|
||||||
#undef IMC_T
|
#undef IMC_T
|
||||||
#undef IMC_TB
|
#undef IMC_TB
|
||||||
|
#undef IMC_TBL
|
||||||
#undef IMC_TBR
|
#undef IMC_TBR
|
||||||
#undef IMC_TL
|
#undef IMC_TL
|
||||||
#undef IMC_TLR
|
#undef IMC_TLR
|
||||||
|
|
|
@ -165,6 +165,7 @@ enum indic_matra_category_t {
|
||||||
INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
||||||
INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
||||||
INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM = INDIC_MATRA_CATEGORY_BOTTOM,
|
INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM = INDIC_MATRA_CATEGORY_BOTTOM,
|
||||||
|
INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_LEFT = INDIC_MATRA_CATEGORY_BOTTOM,
|
||||||
INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
||||||
INDIC_MATRA_CATEGORY_TOP_AND_LEFT = INDIC_MATRA_CATEGORY_TOP,
|
INDIC_MATRA_CATEGORY_TOP_AND_LEFT = INDIC_MATRA_CATEGORY_TOP,
|
||||||
INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT = INDIC_MATRA_CATEGORY_RIGHT,
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
*
|
*
|
||||||
* on files with these headers:
|
* on files with these headers:
|
||||||
*
|
*
|
||||||
* # IndicSyllabicCategory-12.0.0.txt
|
* # IndicSyllabicCategory-13.0.0.txt
|
||||||
* # Date: 2019-01-31, 02:26:00 GMT [KW, RP]
|
* # Date: 2019-07-22, 19:55:00 GMT [KW, RP]
|
||||||
* # IndicPositionalCategory-12.0.0.txt
|
* # IndicPositionalCategory-13.0.0.txt
|
||||||
* # Date: 2019-01-31, 02:26:00 GMT [KW, RP]
|
* # Date: 2019-07-23, 00:01:00 GMT [KW, RP]
|
||||||
* # Blocks-12.0.0.txt
|
* # Blocks-13.0.0.txt
|
||||||
* # Date: 2018-07-30, 19:40:00 GMT [KW]
|
* # Date: 2019-07-10, 19:06:00 GMT [KW]
|
||||||
* UnicodeData.txt does not have a header.
|
* UnicodeData.txt does not have a header.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -42,28 +42,28 @@
|
||||||
#define WJ USE_WJ /* Word_Joiner */
|
#define WJ USE_WJ /* Word_Joiner */
|
||||||
#define ZWJ USE_ZWJ /* ZWJ */
|
#define ZWJ USE_ZWJ /* ZWJ */
|
||||||
#define ZWNJ USE_ZWNJ /* ZWNJ */
|
#define ZWNJ USE_ZWNJ /* ZWNJ */
|
||||||
#define CMBlw USE_CMBlw
|
|
||||||
#define CMAbv USE_CMAbv
|
#define CMAbv USE_CMAbv
|
||||||
|
#define CMBlw USE_CMBlw
|
||||||
|
#define FAbv USE_FAbv
|
||||||
#define FBlw USE_FBlw
|
#define FBlw USE_FBlw
|
||||||
#define FPst USE_FPst
|
#define FPst USE_FPst
|
||||||
#define FAbv USE_FAbv
|
#define FMAbv USE_FMAbv
|
||||||
#define FMBlw USE_FMBlw
|
#define FMBlw USE_FMBlw
|
||||||
#define FMPst USE_FMPst
|
#define FMPst USE_FMPst
|
||||||
#define FMAbv USE_FMAbv
|
#define MAbv USE_MAbv
|
||||||
#define MPre USE_MPre
|
|
||||||
#define MBlw USE_MBlw
|
#define MBlw USE_MBlw
|
||||||
#define MPst USE_MPst
|
#define MPst USE_MPst
|
||||||
#define MAbv USE_MAbv
|
#define MPre USE_MPre
|
||||||
#define SMBlw USE_SMBlw
|
|
||||||
#define SMAbv USE_SMAbv
|
#define SMAbv USE_SMAbv
|
||||||
#define VPre USE_VPre
|
#define SMBlw USE_SMBlw
|
||||||
|
#define VAbv USE_VAbv
|
||||||
#define VBlw USE_VBlw
|
#define VBlw USE_VBlw
|
||||||
#define VPst USE_VPst
|
#define VPst USE_VPst
|
||||||
#define VAbv USE_VAbv
|
#define VPre USE_VPre
|
||||||
#define VMPre USE_VMPre
|
#define VMAbv USE_VMAbv
|
||||||
#define VMBlw USE_VMBlw
|
#define VMBlw USE_VMBlw
|
||||||
#define VMPst USE_VMPst
|
#define VMPst USE_VMPst
|
||||||
#define VMAbv USE_VMAbv
|
#define VMPre USE_VMPre
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
|
@ -146,7 +146,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 0B20 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
/* 0B20 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
||||||
/* 0B30 */ B, O, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VAbv,
|
/* 0B30 */ B, O, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VAbv,
|
||||||
/* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPst, O, O, VPst, VPst, H, O, O,
|
/* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPst, O, O, VPst, VPst, H, O, O,
|
||||||
/* 0B50 */ O, O, O, O, O, O, VAbv, VAbv, O, O, O, O, B, B, O, B,
|
/* 0B50 */ O, O, O, O, O, VAbv, VAbv, VAbv, O, O, O, O, B, B, O, B,
|
||||||
/* 0B60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
/* 0B60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0B70 */ O, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 0B70 */ O, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
|
|
||||||
/* Malayalam */
|
/* Malayalam */
|
||||||
|
|
||||||
/* 0D00 */ VMAbv, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, B, B,
|
/* 0D00 */ VMAbv, VMAbv, VMPst, VMPst, B, B, B, B, B, B, B, B, B, O, B, B,
|
||||||
/* 0D10 */ B, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0D10 */ B, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0D20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0D20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0D30 */ B, B, B, B, B, B, B, B, B, B, B, VAbv, VAbv, B, VPst, VPst,
|
/* 0D30 */ B, B, B, B, B, B, B, B, B, B, B, VAbv, VAbv, B, VPst, VPst,
|
||||||
|
@ -196,7 +196,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
|
|
||||||
/* Sinhala */
|
/* Sinhala */
|
||||||
|
|
||||||
/* 0D80 */ O, O, VMPst, VMPst, O, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0D80 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0D90 */ B, B, B, B, B, B, B, O, O, O, B, B, B, B, B, B,
|
/* 0D90 */ B, B, B, B, B, B, B, O, O, O, B, B, B, B, B, B,
|
||||||
/* 0DA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0DA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0DB0 */ B, B, O, B, B, B, B, B, B, B, B, B, O, B, O, O,
|
/* 0DB0 */ B, B, O, B, B, B, B, B, B, B, B, B, O, B, O, O,
|
||||||
|
@ -402,7 +402,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
|
|
||||||
/* A800 */ B, B, VAbv, B, B, B, H, B, B, B, B, VMAbv, B, B, B, B,
|
/* A800 */ B, B, VAbv, B, B, B, H, B, B, B, B, VMAbv, B, B, B, B,
|
||||||
/* A810 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* A810 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* A820 */ B, B, B, VPst, VPst, VBlw, VAbv, VPst, O, O, O, O, O, O, O, O,
|
/* A820 */ B, B, B, VPst, VPst, VBlw, VAbv, VPst, O, O, O, O, VBlw, O, O, O,
|
||||||
/* A830 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* A830 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
/* Phags-pa */
|
/* Phags-pa */
|
||||||
|
@ -445,7 +445,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* A980 */ VMAbv, VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* A980 */ VMAbv, VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* A990 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* A990 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* A9A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* A9A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* A9B0 */ B, B, B, CMAbv, VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VPre, VAbv, MBlw, MPst, MBlw,
|
/* A9B0 */ B, B, B, CMAbv, VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VPre, VAbv, MBlw, MBlw, MBlw,
|
||||||
/* A9C0 */ H, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* A9C0 */ H, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
/* A9D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* A9D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
@ -540,7 +540,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11120 */ B, B, B, B, B, B, B, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VBlw, VAbv, VAbv,
|
/* 11120 */ B, B, B, B, B, B, B, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VBlw, VAbv, VAbv,
|
||||||
/* 11130 */ VBlw, VAbv, VAbv, H, CMBlw, O, B, B, B, B, B, B, B, B, B, B,
|
/* 11130 */ VBlw, VAbv, VAbv, H, CMBlw, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11140 */ O, O, O, O, B, VPst, VPst, O, O, O, O, O, O, O, O, O,
|
/* 11140 */ O, O, O, O, B, VPst, VPst, B, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
/* Mahajani */
|
/* Mahajani */
|
||||||
|
|
||||||
|
@ -554,7 +554,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11190 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11190 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 111A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 111A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 111B0 */ B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv,
|
/* 111B0 */ B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv,
|
||||||
/* 111C0 */ H, B, R, R, O, O, O, O, GB, FMBlw, CMBlw, VAbv, VBlw, O, O, O,
|
/* 111C0 */ H, B, R, R, O, O, O, O, GB, FMBlw, CMBlw, VAbv, VBlw, O, VPre, VMAbv,
|
||||||
/* 111D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* 111D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
/* Sinhala Archaic Numbers */
|
/* Sinhala Archaic Numbers */
|
||||||
|
@ -608,7 +608,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11430 */ B, B, B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv,
|
/* 11430 */ B, B, B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv,
|
||||||
/* 11440 */ VPst, VPst, H, VMAbv, VMAbv, VMPst, CMBlw, B, O, O, O, O, O, O, O, O,
|
/* 11440 */ VPst, VPst, H, VMAbv, VMAbv, VMPst, CMBlw, B, O, O, O, O, O, O, O, O,
|
||||||
/* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, FMAbv, B,
|
/* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, FMAbv, B,
|
||||||
/* 11460 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 11460 */ CS, CS, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
/* 11470 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 11470 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
/* Tirhuta */
|
/* Tirhuta */
|
||||||
|
@ -673,7 +673,19 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11820 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPre, VPst, VBlw,
|
/* 11820 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPre, VPst, VBlw,
|
||||||
/* 11830 */ VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VMAbv, VMPst, H, CMBlw, O, O, O, O, O,
|
/* 11830 */ VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VMAbv, VMPst, H, CMBlw, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x119a0u 5232
|
#define use_offset_0x11900u 5232
|
||||||
|
|
||||||
|
|
||||||
|
/* Dives Akuru */
|
||||||
|
|
||||||
|
/* 11900 */ B, B, B, B, B, B, B, O, O, B, O, O, B, B, B, B,
|
||||||
|
/* 11910 */ B, B, B, B, O, B, B, O, B, B, B, B, B, B, B, B,
|
||||||
|
/* 11920 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, O, VPre, VPst, O, O, VMAbv, VMAbv, VPst, H, R,
|
||||||
|
/* 11940 */ MPst, R, MBlw, CMBlw, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
/* 11950 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x119a0u 5328
|
||||||
|
|
||||||
|
|
||||||
/* Nandinagari */
|
/* Nandinagari */
|
||||||
|
@ -701,7 +713,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11A80 */ B, B, B, B, R, R, R, R, R, R, FBlw, FBlw, FBlw, FBlw, FBlw, FBlw,
|
/* 11A80 */ B, B, B, B, R, R, R, R, R, R, FBlw, FBlw, FBlw, FBlw, FBlw, FBlw,
|
||||||
/* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, H, O, O, O, B, O, O,
|
/* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, H, O, O, O, B, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11c00u 5488
|
#define use_offset_0x11c00u 5584
|
||||||
|
|
||||||
|
|
||||||
/* Bhaiksuki */
|
/* Bhaiksuki */
|
||||||
|
@ -722,7 +734,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11CA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
/* 11CA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
||||||
/* 11CB0 */ VBlw, VPre, VBlw, VAbv, VPst, VMAbv, VMAbv, O,
|
/* 11CB0 */ VBlw, VPre, VBlw, VAbv, VPst, VMAbv, VMAbv, O,
|
||||||
|
|
||||||
#define use_offset_0x11d00u 5672
|
#define use_offset_0x11d00u 5768
|
||||||
|
|
||||||
|
|
||||||
/* Masaram Gondi */
|
/* Masaram Gondi */
|
||||||
|
@ -742,7 +754,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11D90 */ VAbv, VAbv, O, VPst, VPst, VMAbv, VMPst, H, O, O, O, O, O, O, O, O,
|
/* 11D90 */ VAbv, VAbv, O, VPst, VPst, VMAbv, VMPst, H, O, O, O, O, O, O, O, O,
|
||||||
/* 11DA0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* 11DA0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11ee0u 5848
|
#define use_offset_0x11ee0u 5944
|
||||||
|
|
||||||
|
|
||||||
/* Makasar */
|
/* Makasar */
|
||||||
|
@ -750,7 +762,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11EE0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11EE0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11EF0 */ B, B, GB, VAbv, VBlw, VPre, VPst, O,
|
/* 11EF0 */ B, B, GB, VAbv, VBlw, VPre, VPst, O,
|
||||||
|
|
||||||
}; /* Table items: 5872; occupancy: 74% */
|
}; /* Table items: 5968; occupancy: 74% */
|
||||||
|
|
||||||
USE_TABLE_ELEMENT_TYPE
|
USE_TABLE_ELEMENT_TYPE
|
||||||
hb_use_get_category (hb_codepoint_t u)
|
hb_use_get_category (hb_codepoint_t u)
|
||||||
|
@ -801,6 +813,7 @@ hb_use_get_category (hb_codepoint_t u)
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11400u, 0x114DFu)) return use_table[u - 0x11400u + use_offset_0x11400u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11400u, 0x114DFu)) return use_table[u - 0x11400u + use_offset_0x11400u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11580u, 0x1173Fu)) return use_table[u - 0x11580u + use_offset_0x11580u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11580u, 0x1173Fu)) return use_table[u - 0x11580u + use_offset_0x11580u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11800u, 0x1183Fu)) return use_table[u - 0x11800u + use_offset_0x11800u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11800u, 0x1183Fu)) return use_table[u - 0x11800u + use_offset_0x11800u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x11900u, 0x1195Fu)) return use_table[u - 0x11900u + use_offset_0x11900u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x119A0u, 0x11A9Fu)) return use_table[u - 0x119A0u + use_offset_0x119a0u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x119A0u, 0x11A9Fu)) return use_table[u - 0x119A0u + use_offset_0x119a0u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11C00u, 0x11CB7u)) return use_table[u - 0x11C00u + use_offset_0x11c00u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11C00u, 0x11CB7u)) return use_table[u - 0x11C00u + use_offset_0x11c00u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11D00u, 0x11DAFu)) return use_table[u - 0x11D00u + use_offset_0x11d00u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11D00u, 0x11DAFu)) return use_table[u - 0x11D00u + use_offset_0x11d00u];
|
||||||
|
@ -832,28 +845,28 @@ hb_use_get_category (hb_codepoint_t u)
|
||||||
#undef WJ
|
#undef WJ
|
||||||
#undef ZWJ
|
#undef ZWJ
|
||||||
#undef ZWNJ
|
#undef ZWNJ
|
||||||
#undef CMBlw
|
|
||||||
#undef CMAbv
|
#undef CMAbv
|
||||||
|
#undef CMBlw
|
||||||
|
#undef FAbv
|
||||||
#undef FBlw
|
#undef FBlw
|
||||||
#undef FPst
|
#undef FPst
|
||||||
#undef FAbv
|
#undef FMAbv
|
||||||
#undef FMBlw
|
#undef FMBlw
|
||||||
#undef FMPst
|
#undef FMPst
|
||||||
#undef FMAbv
|
#undef MAbv
|
||||||
#undef MPre
|
|
||||||
#undef MBlw
|
#undef MBlw
|
||||||
#undef MPst
|
#undef MPst
|
||||||
#undef MAbv
|
#undef MPre
|
||||||
#undef SMBlw
|
|
||||||
#undef SMAbv
|
#undef SMAbv
|
||||||
#undef VPre
|
#undef SMBlw
|
||||||
|
#undef VAbv
|
||||||
#undef VBlw
|
#undef VBlw
|
||||||
#undef VPst
|
#undef VPst
|
||||||
#undef VAbv
|
#undef VPre
|
||||||
#undef VMPre
|
#undef VMAbv
|
||||||
#undef VMBlw
|
#undef VMBlw
|
||||||
#undef VMPst
|
#undef VMPst
|
||||||
#undef VMAbv
|
#undef VMPre
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
* # Date: 2015-03-12, 21:17:00 GMT [AG]
|
* # Date: 2015-03-12, 21:17:00 GMT [AG]
|
||||||
* # Date: 2019-11-08, 23:22:00 GMT [AG]
|
* # Date: 2019-11-08, 23:22:00 GMT [AG]
|
||||||
*
|
*
|
||||||
* # Scripts-12.1.0.txt
|
* # Scripts-13.0.0.txt
|
||||||
* # Date: 2019-04-01, 09:10:42 GMT
|
* # Date: 2020-01-22, 00:07:43 GMT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "hb.hh"
|
#include "hb.hh"
|
||||||
|
@ -98,8 +98,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
||||||
0x0907u == buffer->cur (2).codepoint)
|
0x0907u == buffer->cur (2).codepoint)
|
||||||
{
|
{
|
||||||
buffer->next_glyph ();
|
buffer->next_glyph ();
|
||||||
buffer->next_glyph ();
|
matched = true;
|
||||||
_output_dotted_circle (buffer);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -219,8 +218,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
||||||
if (0x0B85u == buffer->cur ().codepoint &&
|
if (0x0B85u == buffer->cur ().codepoint &&
|
||||||
0x0BC2u == buffer->cur (1).codepoint)
|
0x0BC2u == buffer->cur (1).codepoint)
|
||||||
{
|
{
|
||||||
buffer->next_glyph ();
|
matched = true;
|
||||||
_output_dotted_circle (buffer);
|
|
||||||
}
|
}
|
||||||
buffer->next_glyph ();
|
buffer->next_glyph ();
|
||||||
if (matched) _output_with_dotted_circle (buffer);
|
if (matched) _output_with_dotted_circle (buffer);
|
||||||
|
|
|
@ -381,6 +381,10 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
||||||
/* Unicode-12.0 additions */
|
/* Unicode-12.0 additions */
|
||||||
case HB_SCRIPT_NANDINAGARI:
|
case HB_SCRIPT_NANDINAGARI:
|
||||||
|
|
||||||
|
/* Unicode-13.0 additions */
|
||||||
|
case HB_SCRIPT_CHORASMIAN:
|
||||||
|
case HB_SCRIPT_DIVES_AKURU:
|
||||||
|
|
||||||
/* If the designer designed the font for the 'DFLT' script,
|
/* If the designer designed the font for the 'DFLT' script,
|
||||||
* (or we ended up arbitrarily pick 'latn'), use the default shaper.
|
* (or we ended up arbitrarily pick 'latn'), use the default shaper.
|
||||||
* Otherwise, use the specific shaper.
|
* Otherwise, use the specific shaper.
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
*
|
*
|
||||||
* on files with these headers:
|
* on files with these headers:
|
||||||
*
|
*
|
||||||
* <meta name="updated_at" content="2018-11-18 05:25 AM" />
|
* <meta name="updated_at" content="2019-05-22 06:05 PM" />
|
||||||
* File-Date: 2019-04-03
|
* File-Date: 2020-05-12
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef HB_OT_TAG_TABLE_HH
|
#ifndef HB_OT_TAG_TABLE_HH
|
||||||
|
@ -95,7 +95,7 @@ static const LangTag ot_languages[] = {
|
||||||
/*{"ban", HB_TAG('B','A','N',' ')},*/ /* Balinese */
|
/*{"ban", HB_TAG('B','A','N',' ')},*/ /* Balinese */
|
||||||
/*{"bar", HB_TAG('B','A','R',' ')},*/ /* Bavarian */
|
/*{"bar", HB_TAG('B','A','R',' ')},*/ /* Bavarian */
|
||||||
/*{"bbc", HB_TAG('B','B','C',' ')},*/ /* Batak Toba */
|
/*{"bbc", HB_TAG('B','B','C',' ')},*/ /* Batak Toba */
|
||||||
{"bbz", HB_TAG('A','R','A',' ')}, /* Babalia Creole Arabic -> Arabic */
|
{"bbz", HB_TAG('A','R','A',' ')}, /* Babalia Creole Arabic (retired code) -> Arabic */
|
||||||
{"bcc", HB_TAG('B','L','I',' ')}, /* Southern Balochi -> Baluchi */
|
{"bcc", HB_TAG('B','L','I',' ')}, /* Southern Balochi -> Baluchi */
|
||||||
{"bci", HB_TAG('B','A','U',' ')}, /* Baoulé -> Baulé */
|
{"bci", HB_TAG('B','A','U',' ')}, /* Baoulé -> Baulé */
|
||||||
{"bcl", HB_TAG('B','I','K',' ')}, /* Central Bikol -> Bikol */
|
{"bcl", HB_TAG('B','I','K',' ')}, /* Central Bikol -> Bikol */
|
||||||
|
@ -199,6 +199,7 @@ static const LangTag ot_languages[] = {
|
||||||
{"cnh", HB_TAG('Q','I','N',' ')}, /* Hakha Chin -> Chin */
|
{"cnh", HB_TAG('Q','I','N',' ')}, /* Hakha Chin -> Chin */
|
||||||
{"cnk", HB_TAG('Q','I','N',' ')}, /* Khumi Chin -> Chin */
|
{"cnk", HB_TAG('Q','I','N',' ')}, /* Khumi Chin -> Chin */
|
||||||
{"cnl", HB_TAG('C','C','H','N')}, /* Lalana Chinantec -> Chinantec */
|
{"cnl", HB_TAG('C','C','H','N')}, /* Lalana Chinantec -> Chinantec */
|
||||||
|
{"cnp", HB_TAG('Z','H','S',' ')}, /* Northern Ping Chinese -> Chinese Simplified */
|
||||||
{"cnt", HB_TAG('C','C','H','N')}, /* Tepetotutla Chinantec -> Chinantec */
|
{"cnt", HB_TAG('C','C','H','N')}, /* Tepetotutla Chinantec -> Chinantec */
|
||||||
{"cnw", HB_TAG('Q','I','N',' ')}, /* Ngawn Chin -> Chin */
|
{"cnw", HB_TAG('Q','I','N',' ')}, /* Ngawn Chin -> Chin */
|
||||||
{"co", HB_TAG('C','O','S',' ')}, /* Corsican */
|
{"co", HB_TAG('C','O','S',' ')}, /* Corsican */
|
||||||
|
@ -228,6 +229,7 @@ static const LangTag ot_languages[] = {
|
||||||
/*{"csb", HB_TAG('C','S','B',' ')},*/ /* Kashubian */
|
/*{"csb", HB_TAG('C','S','B',' ')},*/ /* Kashubian */
|
||||||
{"csh", HB_TAG('Q','I','N',' ')}, /* Asho Chin -> Chin */
|
{"csh", HB_TAG('Q','I','N',' ')}, /* Asho Chin -> Chin */
|
||||||
{"cso", HB_TAG('C','C','H','N')}, /* Sochiapam Chinantec -> Chinantec */
|
{"cso", HB_TAG('C','C','H','N')}, /* Sochiapam Chinantec -> Chinantec */
|
||||||
|
{"csp", HB_TAG('Z','H','S',' ')}, /* Southern Ping Chinese -> Chinese Simplified */
|
||||||
{"csw", HB_TAG('N','C','R',' ')}, /* Swampy Cree -> N-Cree */
|
{"csw", HB_TAG('N','C','R',' ')}, /* Swampy Cree -> N-Cree */
|
||||||
{"csw", HB_TAG('N','H','C',' ')}, /* Swampy Cree -> Norway House Cree */
|
{"csw", HB_TAG('N','H','C',' ')}, /* Swampy Cree -> Norway House Cree */
|
||||||
{"csy", HB_TAG('Q','I','N',' ')}, /* Siyin Chin -> Chin */
|
{"csy", HB_TAG('Q','I','N',' ')}, /* Siyin Chin -> Chin */
|
||||||
|
@ -280,6 +282,7 @@ static const LangTag ot_languages[] = {
|
||||||
{"dup", HB_TAG('M','L','Y',' ')}, /* Duano -> Malay */
|
{"dup", HB_TAG('M','L','Y',' ')}, /* Duano -> Malay */
|
||||||
{"dv", HB_TAG('D','I','V',' ')}, /* Divehi (Dhivehi, Maldivian) */
|
{"dv", HB_TAG('D','I','V',' ')}, /* Divehi (Dhivehi, Maldivian) */
|
||||||
{"dv", HB_TAG('D','H','V',' ')}, /* Divehi (Dhivehi, Maldivian) (deprecated) */
|
{"dv", HB_TAG('D','H','V',' ')}, /* Divehi (Dhivehi, Maldivian) (deprecated) */
|
||||||
|
{"dwk", HB_TAG('K','U','I',' ')}, /* Dawik Kui -> Kui */
|
||||||
{"dwu", HB_TAG('D','U','J',' ')}, /* Dhuwal */
|
{"dwu", HB_TAG('D','U','J',' ')}, /* Dhuwal */
|
||||||
{"dwy", HB_TAG('D','U','J',' ')}, /* Dhuwaya -> Dhuwal */
|
{"dwy", HB_TAG('D','U','J',' ')}, /* Dhuwaya -> Dhuwal */
|
||||||
{"dyu", HB_TAG('J','U','L',' ')}, /* Dyula -> Jula */
|
{"dyu", HB_TAG('J','U','L',' ')}, /* Dyula -> Jula */
|
||||||
|
@ -458,7 +461,7 @@ static const LangTag ot_languages[] = {
|
||||||
{"jv", HB_TAG('J','A','V',' ')}, /* Javanese */
|
{"jv", HB_TAG('J','A','V',' ')}, /* Javanese */
|
||||||
{"jw", HB_TAG('J','A','V',' ')}, /* Javanese (retired code) */
|
{"jw", HB_TAG('J','A','V',' ')}, /* Javanese (retired code) */
|
||||||
{"ka", HB_TAG('K','A','T',' ')}, /* Georgian */
|
{"ka", HB_TAG('K','A','T',' ')}, /* Georgian */
|
||||||
{"kaa", HB_TAG('K','R','K',' ')}, /* Kara-Kalpak -> Karakalpak */
|
{"kaa", HB_TAG('K','R','K',' ')}, /* Karakalpak */
|
||||||
{"kab", HB_TAG('K','A','B','0')}, /* Kabyle */
|
{"kab", HB_TAG('K','A','B','0')}, /* Kabyle */
|
||||||
{"kam", HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */
|
{"kam", HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */
|
||||||
{"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */
|
{"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */
|
||||||
|
@ -538,7 +541,8 @@ static const LangTag ot_languages[] = {
|
||||||
{"kwy", HB_TAG('K','O','N','0')}, /* San Salvador Kongo -> Kongo */
|
{"kwy", HB_TAG('K','O','N','0')}, /* San Salvador Kongo -> Kongo */
|
||||||
{"kxc", HB_TAG('K','M','S',' ')}, /* Konso -> Komso */
|
{"kxc", HB_TAG('K','M','S',' ')}, /* Konso -> Komso */
|
||||||
{"kxd", HB_TAG('M','L','Y',' ')}, /* Brunei -> Malay */
|
{"kxd", HB_TAG('M','L','Y',' ')}, /* Brunei -> Malay */
|
||||||
{"kxu", HB_TAG('K','U','I',' ')}, /* Kui (India) */
|
{"kxl", HB_TAG('K','U','U',' ')}, /* Nepali Kurux (retired code) -> Kurukh */
|
||||||
|
{"kxu", HB_TAG('K','U','I',' ')}, /* Kui (India) (retired code) */
|
||||||
{"ky", HB_TAG('K','I','R',' ')}, /* Kirghiz (Kyrgyz) */
|
{"ky", HB_TAG('K','I','R',' ')}, /* Kirghiz (Kyrgyz) */
|
||||||
/*{"kyu", HB_TAG('K','Y','U',' ')},*/ /* Western Kayah */
|
/*{"kyu", HB_TAG('K','Y','U',' ')},*/ /* Western Kayah */
|
||||||
{"la", HB_TAG('L','A','T',' ')}, /* Latin */
|
{"la", HB_TAG('L','A','T',' ')}, /* Latin */
|
||||||
|
@ -736,7 +740,7 @@ static const LangTag ot_languages[] = {
|
||||||
{"pko", HB_TAG('K','A','L',' ')}, /* Pökoot -> Kalenjin */
|
{"pko", HB_TAG('K','A','L',' ')}, /* Pökoot -> Kalenjin */
|
||||||
{"pl", HB_TAG('P','L','K',' ')}, /* Polish */
|
{"pl", HB_TAG('P','L','K',' ')}, /* Polish */
|
||||||
{"pll", HB_TAG('P','L','G',' ')}, /* Shwe Palaung -> Palaung */
|
{"pll", HB_TAG('P','L','G',' ')}, /* Shwe Palaung -> Palaung */
|
||||||
{"plp", HB_TAG('P','A','P',' ')}, /* Palpa */
|
{"plp", HB_TAG('P','A','P',' ')}, /* Palpa (retired code) */
|
||||||
{"plt", HB_TAG('M','L','G',' ')}, /* Plateau Malagasy -> Malagasy */
|
{"plt", HB_TAG('M','L','G',' ')}, /* Plateau Malagasy -> Malagasy */
|
||||||
/*{"pms", HB_TAG('P','M','S',' ')},*/ /* Piemontese */
|
/*{"pms", HB_TAG('P','M','S',' ')},*/ /* Piemontese */
|
||||||
/*{"pnb", HB_TAG('P','N','B',' ')},*/ /* Western Panjabi */
|
/*{"pnb", HB_TAG('P','N','B',' ')},*/ /* Western Panjabi */
|
||||||
|
@ -803,7 +807,7 @@ static const LangTag ot_languages[] = {
|
||||||
/*{"rej", HB_TAG('R','E','J',' ')},*/ /* Rejang */
|
/*{"rej", HB_TAG('R','E','J',' ')},*/ /* Rejang */
|
||||||
/*{"ria", HB_TAG('R','I','A',' ')},*/ /* Riang (India) */
|
/*{"ria", HB_TAG('R','I','A',' ')},*/ /* Riang (India) */
|
||||||
/*{"rif", HB_TAG('R','I','F',' ')},*/ /* Tarifit */
|
/*{"rif", HB_TAG('R','I','F',' ')},*/ /* Tarifit */
|
||||||
/*{"rit", HB_TAG('R','I','T',' ')},*/ /* Ritarungo */
|
/*{"rit", HB_TAG('R','I','T',' ')},*/ /* Ritharrngu -> Ritarungo */
|
||||||
{"rki", HB_TAG('A','R','K',' ')}, /* Rakhine */
|
{"rki", HB_TAG('A','R','K',' ')}, /* Rakhine */
|
||||||
/*{"rkw", HB_TAG('R','K','W',' ')},*/ /* Arakwal */
|
/*{"rkw", HB_TAG('R','K','W',' ')},*/ /* Arakwal */
|
||||||
{"rm", HB_TAG('R','M','S',' ')}, /* Romansh */
|
{"rm", HB_TAG('R','M','S',' ')}, /* Romansh */
|
||||||
|
@ -965,6 +969,7 @@ static const LangTag ot_languages[] = {
|
||||||
/*{"udm", HB_TAG('U','D','M',' ')},*/ /* Udmurt */
|
/*{"udm", HB_TAG('U','D','M',' ')},*/ /* Udmurt */
|
||||||
{"ug", HB_TAG('U','Y','G',' ')}, /* Uyghur */
|
{"ug", HB_TAG('U','Y','G',' ')}, /* Uyghur */
|
||||||
{"uk", HB_TAG('U','K','R',' ')}, /* Ukrainian */
|
{"uk", HB_TAG('U','K','R',' ')}, /* Ukrainian */
|
||||||
|
{"uki", HB_TAG('K','U','I',' ')}, /* Kui (India) */
|
||||||
/*{"umb", HB_TAG('U','M','B',' ')},*/ /* Umbundu */
|
/*{"umb", HB_TAG('U','M','B',' ')},*/ /* Umbundu */
|
||||||
{"unr", HB_TAG('M','U','N',' ')}, /* Mundari */
|
{"unr", HB_TAG('M','U','N',' ')}, /* Mundari */
|
||||||
{"ur", HB_TAG('U','R','D',' ')}, /* Urdu */
|
{"ur", HB_TAG('U','R','D',' ')}, /* Urdu */
|
||||||
|
@ -1183,6 +1188,20 @@ hb_ot_tags_from_complex_language (const char *lang_str,
|
||||||
*count = 1;
|
*count = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "np-hant-hk"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "np-hant-mo"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (lang_matches (&lang_str[1], "px-hant-hk"))
|
if (lang_matches (&lang_str[1], "px-hant-hk"))
|
||||||
{
|
{
|
||||||
/* Pu-Xian Chinese */
|
/* Pu-Xian Chinese */
|
||||||
|
@ -1197,6 +1216,20 @@ hb_ot_tags_from_complex_language (const char *lang_str,
|
||||||
*count = 1;
|
*count = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "sp-hant-hk"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "sp-hant-mo"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (lang_matches (&lang_str[1], "zh-hant-hk"))
|
if (lang_matches (&lang_str[1], "zh-hant-hk"))
|
||||||
{
|
{
|
||||||
/* Huizhou Chinese */
|
/* Huizhou Chinese */
|
||||||
|
@ -1267,6 +1300,20 @@ hb_ot_tags_from_complex_language (const char *lang_str,
|
||||||
*count = 1;
|
*count = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "np-hans"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "np-hant"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (lang_matches (&lang_str[1], "px-hans"))
|
if (lang_matches (&lang_str[1], "px-hans"))
|
||||||
{
|
{
|
||||||
/* Pu-Xian Chinese */
|
/* Pu-Xian Chinese */
|
||||||
|
@ -1281,6 +1328,20 @@ hb_ot_tags_from_complex_language (const char *lang_str,
|
||||||
*count = 1;
|
*count = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "sp-hans"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (lang_matches (&lang_str[1], "sp-hant"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese */
|
||||||
|
tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (lang_matches (&lang_str[1], "zh-hans"))
|
if (lang_matches (&lang_str[1], "zh-hans"))
|
||||||
{
|
{
|
||||||
/* Huizhou Chinese */
|
/* Huizhou Chinese */
|
||||||
|
@ -1381,6 +1442,30 @@ hb_ot_tags_from_complex_language (const char *lang_str,
|
||||||
*count = 1;
|
*count = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (0 == strncmp (&lang_str[1], "np-", 3)
|
||||||
|
&& subtag_matches (lang_str, limit, "-hk"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese; Hong Kong */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (0 == strncmp (&lang_str[1], "np-", 3)
|
||||||
|
&& subtag_matches (lang_str, limit, "-mo"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese; Macao */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (0 == strncmp (&lang_str[1], "np-", 3)
|
||||||
|
&& subtag_matches (lang_str, limit, "-tw"))
|
||||||
|
{
|
||||||
|
/* Northern Ping Chinese; Taiwan, Province of China */
|
||||||
|
tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (0 == strncmp (&lang_str[1], "px-", 3)
|
if (0 == strncmp (&lang_str[1], "px-", 3)
|
||||||
&& subtag_matches (lang_str, limit, "-hk"))
|
&& subtag_matches (lang_str, limit, "-hk"))
|
||||||
{
|
{
|
||||||
|
@ -1405,6 +1490,30 @@ hb_ot_tags_from_complex_language (const char *lang_str,
|
||||||
*count = 1;
|
*count = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (0 == strncmp (&lang_str[1], "sp-", 3)
|
||||||
|
&& subtag_matches (lang_str, limit, "-hk"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese; Hong Kong */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (0 == strncmp (&lang_str[1], "sp-", 3)
|
||||||
|
&& subtag_matches (lang_str, limit, "-mo"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese; Macao */
|
||||||
|
tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (0 == strncmp (&lang_str[1], "sp-", 3)
|
||||||
|
&& subtag_matches (lang_str, limit, "-tw"))
|
||||||
|
{
|
||||||
|
/* Southern Ping Chinese; Taiwan, Province of China */
|
||||||
|
tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
|
||||||
|
*count = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (0 == strncmp (&lang_str[1], "zh-", 3)
|
if (0 == strncmp (&lang_str[1], "zh-", 3)
|
||||||
&& subtag_matches (lang_str, limit, "-hk"))
|
&& subtag_matches (lang_str, limit, "-hk"))
|
||||||
{
|
{
|
||||||
|
@ -1993,6 +2102,8 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
|
||||||
return hb_language_from_string ("kr", -1); /* Kanuri */
|
return hb_language_from_string ("kr", -1); /* Kanuri */
|
||||||
case HB_TAG('K','O','K',' '): /* Konkani */
|
case HB_TAG('K','O','K',' '): /* Konkani */
|
||||||
return hb_language_from_string ("kok", -1); /* Konkani */
|
return hb_language_from_string ("kok", -1); /* Konkani */
|
||||||
|
case HB_TAG('K','U','I',' '): /* Kui */
|
||||||
|
return hb_language_from_string ("uki", -1); /* Kui (India) */
|
||||||
case HB_TAG('K','U','R',' '): /* Kurdish */
|
case HB_TAG('K','U','R',' '): /* Kurdish */
|
||||||
return hb_language_from_string ("ku", -1); /* Kurdish */
|
return hb_language_from_string ("ku", -1); /* Kurdish */
|
||||||
case HB_TAG('L','U','H',' '): /* Luyia */
|
case HB_TAG('L','U','H',' '): /* Luyia */
|
||||||
|
|
6328
src/hb-ucd-table.hh
6328
src/hb-ucd-table.hh
File diff suppressed because it is too large
Load Diff
|
@ -7,15 +7,15 @@
|
||||||
* on file with this header:
|
* on file with this header:
|
||||||
*
|
*
|
||||||
* # emoji-data.txt
|
* # emoji-data.txt
|
||||||
* # Date: 2019-01-15, 12:10:05 GMT
|
* # Date: 2020-01-28, 20:52:38 GMT
|
||||||
* # © 2019 Unicode®, Inc.
|
* # © 2020 Unicode®, Inc.
|
||||||
* # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
* # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||||
* # For terms of use, see https://www.unicode.org/terms_of_use.html
|
* # For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||||
* #
|
* #
|
||||||
* # Emoji Data for UTS #51
|
* # Emoji Data for UTS #51
|
||||||
* # Version: 12.0
|
* # Version: 13.0
|
||||||
* #
|
* #
|
||||||
* # For documentation and usage, see https://www.unicode.org/reports/tr51
|
* # For documentation and usage, see http://www.unicode.org/reports/tr51
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef HB_UNICODE_EMOJI_TABLE_HH
|
#ifndef HB_UNICODE_EMOJI_TABLE_HH
|
||||||
|
@ -36,7 +36,7 @@ _hb_emoji_u8[448] =
|
||||||
0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
|
0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
|
||||||
7, 7, 7, 14, 15, 16, 17, 18, 19, 20, 7, 7, 7, 7, 7, 21,
|
7, 7, 7, 14, 15, 16, 17, 18, 19, 20, 7, 7, 7, 7, 7, 21,
|
||||||
7, 7, 7, 7, 22, 23, 7, 7, 7, 24, 7, 14, 0, 25, 0, 26,
|
7, 7, 7, 7, 22, 23, 7, 7, 7, 24, 7, 14, 0, 25, 0, 26,
|
||||||
27, 28, 29, 14, 30, 31, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
27, 28, 29, 14, 30, 31, 7, 7, 7, 7, 7, 14, 0, 0, 0, 0,
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 22,
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 22,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 1, 0, 2, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 1, 0, 2, 0, 0,
|
||||||
0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 7, 3,
|
0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 7, 3,
|
||||||
|
|
|
@ -178,6 +178,9 @@ static const test_pair_t combining_class_tests_more[] =
|
||||||
/* Unicode-12.0 character additions */
|
/* Unicode-12.0 character additions */
|
||||||
{ 0x0EBA, 9 },
|
{ 0x0EBA, 9 },
|
||||||
|
|
||||||
|
/* Unicode-13.0 character additions */
|
||||||
|
{ 0x1ABF, 220 },
|
||||||
|
|
||||||
{ 0x111111, 0 }
|
{ 0x111111, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -255,6 +258,9 @@ static const test_pair_t general_category_tests_more[] =
|
||||||
/* Unicode-12.1 character additions */
|
/* Unicode-12.1 character additions */
|
||||||
{ 0x32FF, HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL },
|
{ 0x32FF, HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL },
|
||||||
|
|
||||||
|
/* Unicode-13.0 character additions */
|
||||||
|
{ 0x08BE, HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER },
|
||||||
|
|
||||||
{ 0x111111, HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED }
|
{ 0x111111, HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -499,6 +505,12 @@ static const test_pair_t script_tests_more[] =
|
||||||
/* Unicode-12.1 additions */
|
/* Unicode-12.1 additions */
|
||||||
{ 0x32FF, HB_SCRIPT_COMMON },
|
{ 0x32FF, HB_SCRIPT_COMMON },
|
||||||
|
|
||||||
|
/* Unicode-13.0 additions */
|
||||||
|
{ 0x10E80, HB_SCRIPT_YEZIDI },
|
||||||
|
{ 0x10FB0, HB_SCRIPT_CHORASMIAN },
|
||||||
|
{ 0x11900, HB_SCRIPT_DIVES_AKURU },
|
||||||
|
{ 0x18B00, HB_SCRIPT_KHITAN_SMALL_SCRIPT },
|
||||||
|
|
||||||
{ 0x111111, HB_SCRIPT_UNKNOWN }
|
{ 0x111111, HB_SCRIPT_UNKNOWN }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue