[USE] Update to the 2020-08-13 USE specification
This also uses the data files from
<78b2134fdc/USE
>.
This commit is contained in:
parent
e3db84a9d0
commit
06f49fc8ae
|
@ -1,25 +1,38 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# flake8: noqa: F821
|
# flake8: noqa: F821
|
||||||
|
|
||||||
"""usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
|
"""usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt ArabicShaping.txt Blocks.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt
|
||||||
|
|
||||||
Input file:
|
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/UnicodeData.txt
|
* https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
||||||
|
* https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt
|
||||||
* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt
|
* https://unicode.org/Public/UCD/latest/ucd/Blocks.txt
|
||||||
|
* ms-use/IndicPositionalCategory-Additional.txt
|
||||||
|
* ms-use/IndicSyllabicCategory-Additional.txt
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
if len (sys.argv) != 5:
|
if len (sys.argv) != 8:
|
||||||
sys.exit (__doc__)
|
sys.exit (__doc__)
|
||||||
|
|
||||||
BLACKLISTED_BLOCKS = ["Thai", "Lao"]
|
BLACKLISTED_BLOCKS = [
|
||||||
|
'Samaritan',
|
||||||
|
'Thai',
|
||||||
|
'Lao',
|
||||||
|
]
|
||||||
|
|
||||||
files = [open (x, encoding='utf-8') for x in sys.argv[1:]]
|
files = [open (x, encoding='utf-8') for x in sys.argv[1:]]
|
||||||
|
|
||||||
headers = [[f.readline () for i in range (2)] for j,f in enumerate(files) if j != 2]
|
headers = [[f.readline () for i in range (2)] for j,f in enumerate(files) if j != 2]
|
||||||
|
for j in range(5, 7):
|
||||||
|
for line in files[j]:
|
||||||
|
line = line.rstrip()
|
||||||
|
if not line:
|
||||||
|
break
|
||||||
|
headers[j - 1].append(line)
|
||||||
headers.append (["UnicodeData.txt does not have a header."])
|
headers.append (["UnicodeData.txt does not have a header."])
|
||||||
|
|
||||||
data = [{} for _ in files]
|
data = [{} for _ in files]
|
||||||
|
@ -42,15 +55,25 @@ for i, f in enumerate (files):
|
||||||
else:
|
else:
|
||||||
end = int (uu[1], 16)
|
end = int (uu[1], 16)
|
||||||
|
|
||||||
t = fields[1 if i != 2 else 2]
|
t = fields[1 if i not in [2, 3] else 2]
|
||||||
|
|
||||||
|
if i == 3:
|
||||||
|
t = 'jt_' + t
|
||||||
|
elif i == 5 and t == 'Consonant_Final_Modifier':
|
||||||
|
# TODO: https://github.com/MicrosoftDocs/typography-issues/issues/336
|
||||||
|
t = 'Syllable_Modifier'
|
||||||
|
elif i == 6 and t == 'NA':
|
||||||
|
t = 'Not_Applicable'
|
||||||
|
|
||||||
|
i0 = i if i < 5 else i - 5
|
||||||
for u in range (start, end + 1):
|
for u in range (start, end + 1):
|
||||||
data[i][u] = t
|
data[i0][u] = t
|
||||||
values[i][t] = values[i].get (t, 0) + end - start + 1
|
values[i0][t] = values[i0].get (t, 0) + end - start + 1
|
||||||
|
|
||||||
defaults = ('Other', 'Not_Applicable', 'Cn', 'No_Block')
|
defaults = ('Other', 'Not_Applicable', 'Cn', 'jt_X', 'No_Block')
|
||||||
|
|
||||||
# TODO Characters that are not in Unicode Indic files, but used in USE
|
# TODO Characters that are not in Unicode Indic files, but used in USE
|
||||||
|
data[0][0x0640] = defaults[0]
|
||||||
data[0][0x1B61] = defaults[0]
|
data[0][0x1B61] = defaults[0]
|
||||||
data[0][0x1B63] = defaults[0]
|
data[0][0x1B63] = defaults[0]
|
||||||
data[0][0x1B64] = defaults[0]
|
data[0][0x1B64] = defaults[0]
|
||||||
|
@ -60,6 +83,29 @@ data[0][0x1B67] = defaults[0]
|
||||||
data[0][0x1B69] = defaults[0]
|
data[0][0x1B69] = defaults[0]
|
||||||
data[0][0x1B6A] = defaults[0]
|
data[0][0x1B6A] = defaults[0]
|
||||||
data[0][0x2060] = defaults[0]
|
data[0][0x2060] = defaults[0]
|
||||||
|
for u in range (0x07CA, 0x07EA + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
data[0][0x07FA] = defaults[0]
|
||||||
|
for u in range (0x0840, 0x0858 + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
for u in range (0x1887, 0x18A8 + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
data[0][0x18AA] = defaults[0]
|
||||||
|
for u in range (0xA840, 0xA872 + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
for u in range (0x10B80, 0x10B91 + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
for u in range (0x10BA9, 0x10BAE + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
data[0][0x10FB0] = defaults[0]
|
||||||
|
for u in range (0x10FB2, 0x10FB6 + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
for u in range (0x10FB8, 0x10FBF + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
for u in range (0x10FC1, 0x10FC4 + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
|
for u in range (0x10FC9, 0x10FCB + 1):
|
||||||
|
data[0][u] = defaults[0]
|
||||||
# TODO https://github.com/harfbuzz/harfbuzz/pull/1685
|
# TODO https://github.com/harfbuzz/harfbuzz/pull/1685
|
||||||
data[0][0x1B5B] = 'Consonant_Placeholder'
|
data[0][0x1B5B] = 'Consonant_Placeholder'
|
||||||
data[0][0x1B5C] = 'Consonant_Placeholder'
|
data[0][0x1B5C] = 'Consonant_Placeholder'
|
||||||
|
@ -83,7 +129,7 @@ for i,d in enumerate (data):
|
||||||
if not u in combined:
|
if not u in combined:
|
||||||
combined[u] = list (defaults)
|
combined[u] = list (defaults)
|
||||||
combined[u][i] = v
|
combined[u][i] = v
|
||||||
combined = {k:v for k,v in combined.items() if v[3] not in BLACKLISTED_BLOCKS}
|
combined = {k:v for k,v in combined.items() if v[4] not in BLACKLISTED_BLOCKS}
|
||||||
data = combined
|
data = combined
|
||||||
del combined
|
del combined
|
||||||
|
|
||||||
|
@ -147,6 +193,14 @@ property_names = [
|
||||||
'Bottom_And_Right',
|
'Bottom_And_Right',
|
||||||
'Top_And_Bottom_And_Right',
|
'Top_And_Bottom_And_Right',
|
||||||
'Overstruck',
|
'Overstruck',
|
||||||
|
# Joining_Type
|
||||||
|
'jt_C',
|
||||||
|
'jt_D',
|
||||||
|
'jt_L',
|
||||||
|
'jt_R',
|
||||||
|
'jt_T',
|
||||||
|
'jt_U',
|
||||||
|
'jt_X',
|
||||||
]
|
]
|
||||||
|
|
||||||
class PropertyValue(object):
|
class PropertyValue(object):
|
||||||
|
@ -171,83 +225,78 @@ for name in property_names:
|
||||||
globals().update(property_values)
|
globals().update(property_values)
|
||||||
|
|
||||||
|
|
||||||
def is_BASE(U, UISC, UGC):
|
def is_BASE(U, UISC, UGC, AJT):
|
||||||
return (UISC in [Number, Consonant, Consonant_Head_Letter,
|
return (UISC in [Number, Consonant, Consonant_Head_Letter,
|
||||||
#SPEC-DRAFT Consonant_Placeholder,
|
|
||||||
Tone_Letter,
|
Tone_Letter,
|
||||||
Vowel_Independent #SPEC-DRAFT
|
Vowel_Independent,
|
||||||
] or
|
] or
|
||||||
|
# TODO: https://github.com/MicrosoftDocs/typography-issues/issues/484
|
||||||
|
AJT in [jt_C, jt_D, jt_L, jt_R] and not is_ZWJ(U, UISC, UGC, AJT) or
|
||||||
(UGC == Lo and UISC in [Avagraha, Bindu, Consonant_Final, Consonant_Medial,
|
(UGC == Lo and UISC in [Avagraha, Bindu, Consonant_Final, Consonant_Medial,
|
||||||
Consonant_Subjoined, Vowel, Vowel_Dependent]))
|
Consonant_Subjoined, Vowel, Vowel_Dependent]))
|
||||||
def is_BASE_IND(U, UISC, UGC):
|
def is_BASE_IND(U, UISC, UGC, AJT):
|
||||||
#SPEC-DRAFT return (UISC in [Consonant_Dead, Modifying_Letter] or UGC == Po)
|
|
||||||
return (UISC in [Consonant_Dead, Modifying_Letter] or
|
return (UISC in [Consonant_Dead, Modifying_Letter] or
|
||||||
(UGC == Po and not U in [0x104B, 0x104E, 0x1B5B, 0x1B5C, 0x1B5F, 0x2022, 0x111C8, 0x11A3F, 0x11A45, 0x11C44, 0x11C45]) or
|
(UGC == Po and not U in [0x0F04, 0x0F05, 0x0F06, 0x104B, 0x104E, 0x1800, 0x1807, 0x180A, 0x1B5B, 0x1B5C, 0x1B5F, 0x2022, 0x111C8, 0x11A3F, 0x11A45, 0x11C44, 0x11C45]))
|
||||||
False # SPEC-DRAFT-OUTDATED! U == 0x002D
|
def is_BASE_NUM(U, UISC, UGC, AJT):
|
||||||
)
|
|
||||||
def is_BASE_NUM(U, UISC, UGC):
|
|
||||||
return UISC == Brahmi_Joining_Number
|
return UISC == Brahmi_Joining_Number
|
||||||
def is_BASE_OTHER(U, UISC, UGC):
|
def is_BASE_OTHER(U, UISC, UGC, AJT):
|
||||||
if UISC == Consonant_Placeholder: return True #SPEC-DRAFT
|
if UISC == Consonant_Placeholder: return True
|
||||||
#SPEC-DRAFT return U in [0x00A0, 0x00D7, 0x2015, 0x2022, 0x25CC, 0x25FB, 0x25FC, 0x25FD, 0x25FE]
|
|
||||||
return U in [0x2015, 0x2022, 0x25FB, 0x25FC, 0x25FD, 0x25FE]
|
return U in [0x2015, 0x2022, 0x25FB, 0x25FC, 0x25FD, 0x25FE]
|
||||||
def is_CONS_FINAL(U, UISC, UGC):
|
def is_CONS_FINAL(U, UISC, UGC, AJT):
|
||||||
return ((UISC == Consonant_Final and UGC != Lo) or
|
return ((UISC == Consonant_Final and UGC != Lo) or
|
||||||
UISC == Consonant_Succeeding_Repha)
|
UISC == Consonant_Succeeding_Repha)
|
||||||
def is_CONS_FINAL_MOD(U, UISC, UGC):
|
def is_CONS_FINAL_MOD(U, UISC, UGC, AJT):
|
||||||
#SPEC-DRAFT return UISC in [Consonant_Final_Modifier, Syllable_Modifier]
|
|
||||||
return UISC == Syllable_Modifier
|
return UISC == Syllable_Modifier
|
||||||
def is_CONS_MED(U, UISC, UGC):
|
def is_CONS_MED(U, UISC, UGC, AJT):
|
||||||
# Consonant_Initial_Postfixed is new in Unicode 11; not in the spec.
|
# Consonant_Initial_Postfixed is new in Unicode 11; not in the spec.
|
||||||
return (UISC == Consonant_Medial and UGC != Lo or
|
return (UISC == Consonant_Medial and UGC != Lo or
|
||||||
UISC == Consonant_Initial_Postfixed)
|
UISC == Consonant_Initial_Postfixed)
|
||||||
def is_CONS_MOD(U, UISC, UGC):
|
def is_CONS_MOD(U, UISC, UGC, AJT):
|
||||||
return UISC in [Nukta, Gemination_Mark, Consonant_Killer]
|
return (UISC in [Nukta, Gemination_Mark, Consonant_Killer] and
|
||||||
def is_CONS_SUB(U, UISC, UGC):
|
not is_SYM_MOD(U, UISC, UGC, AJT))
|
||||||
#SPEC-DRAFT return UISC == Consonant_Subjoined
|
def is_CONS_SUB(U, UISC, UGC, AJT):
|
||||||
return UISC == Consonant_Subjoined and UGC != Lo
|
return UISC == Consonant_Subjoined and UGC != Lo
|
||||||
def is_CONS_WITH_STACKER(U, UISC, UGC):
|
def is_CONS_WITH_STACKER(U, UISC, UGC, AJT):
|
||||||
return UISC == Consonant_With_Stacker
|
return UISC == Consonant_With_Stacker
|
||||||
def is_HALANT(U, UISC, UGC):
|
def is_HALANT(U, UISC, UGC, AJT):
|
||||||
return (UISC in [Virama, Invisible_Stacker]
|
return (UISC in [Virama, Invisible_Stacker]
|
||||||
and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC)
|
and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC, AJT)
|
||||||
and not is_SAKOT(U, UISC, UGC))
|
and not is_SAKOT(U, UISC, UGC, AJT))
|
||||||
def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC):
|
def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC, AJT):
|
||||||
# https://github.com/harfbuzz/harfbuzz/issues/1102
|
# https://github.com/harfbuzz/harfbuzz/issues/1102
|
||||||
# https://github.com/harfbuzz/harfbuzz/issues/1379
|
# https://github.com/harfbuzz/harfbuzz/issues/1379
|
||||||
return U in [0x11046, 0x1134D]
|
return U in [0x11046, 0x1134D]
|
||||||
def is_HALANT_NUM(U, UISC, UGC):
|
def is_HALANT_NUM(U, UISC, UGC, AJT):
|
||||||
return UISC == Number_Joiner
|
return UISC == Number_Joiner
|
||||||
def is_ZWNJ(U, UISC, UGC):
|
def is_ZWNJ(U, UISC, UGC, AJT):
|
||||||
return UISC == Non_Joiner
|
return UISC == Non_Joiner
|
||||||
def is_ZWJ(U, UISC, UGC):
|
def is_ZWJ(U, UISC, UGC, AJT):
|
||||||
return UISC == Joiner
|
return UISC == Joiner
|
||||||
def is_Word_Joiner(U, UISC, UGC):
|
def is_Word_Joiner(U, UISC, UGC, AJT):
|
||||||
return U == 0x2060
|
return U == 0x2060
|
||||||
def is_OTHER(U, UISC, UGC):
|
def is_OTHER(U, UISC, UGC, AJT):
|
||||||
#SPEC-OUTDATED return UGC == Zs # or any other SCRIPT_COMMON characters
|
|
||||||
return (UISC == Other
|
return (UISC == Other
|
||||||
and not is_SYM(U, UISC, UGC)
|
and not is_BASE(U, UISC, UGC, AJT)
|
||||||
and not is_SYM_MOD(U, UISC, UGC)
|
and not is_SYM(U, UISC, UGC, AJT)
|
||||||
and not is_Word_Joiner(U, UISC, UGC)
|
and not is_SYM_MOD(U, UISC, UGC, AJT)
|
||||||
|
and not is_Word_Joiner(U, UISC, UGC, AJT)
|
||||||
)
|
)
|
||||||
def is_Reserved(U, UISC, UGC):
|
def is_Reserved(U, UISC, UGC, AJT):
|
||||||
return UGC == 'Cn'
|
return UGC == 'Cn'
|
||||||
def is_REPHA(U, UISC, UGC):
|
def is_REPHA(U, UISC, UGC, AJT):
|
||||||
return UISC in [Consonant_Preceding_Repha, Consonant_Prefixed]
|
return UISC in [Consonant_Preceding_Repha, Consonant_Prefixed]
|
||||||
def is_SAKOT(U, UISC, UGC):
|
def is_SAKOT(U, UISC, UGC, AJT):
|
||||||
return U == 0x1A60
|
return U == 0x1A60
|
||||||
def is_SYM(U, UISC, UGC):
|
def is_SYM(U, UISC, UGC, AJT):
|
||||||
if U == 0x25CC: return False #SPEC-DRAFT
|
if U in [0x25CC, 0x1E14F]: return False
|
||||||
#SPEC-DRAFT return UGC in [So, Sc] or UISC == Symbol_Letter
|
return UGC in [So, Sc] and U not in [0x0F01, 0x1B62, 0x1B68]
|
||||||
return UGC in [So, Sc] and U not in [0x1B62, 0x1B68]
|
def is_SYM_MOD(U, UISC, UGC, AJT):
|
||||||
def is_SYM_MOD(U, UISC, UGC):
|
|
||||||
return U in [0x1B6B, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73]
|
return U in [0x1B6B, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73]
|
||||||
def is_VOWEL(U, UISC, UGC):
|
def is_VOWEL(U, UISC, UGC, AJT):
|
||||||
# https://github.com/harfbuzz/harfbuzz/issues/376
|
# https://github.com/harfbuzz/harfbuzz/issues/376
|
||||||
return (UISC == Pure_Killer or
|
return (UISC == Pure_Killer or
|
||||||
(UGC != Lo and UISC in [Vowel, Vowel_Dependent] and U not in [0xAA29]))
|
(UGC != Lo and UISC in [Vowel, Vowel_Dependent] and U not in [0xAA29]))
|
||||||
def is_VOWEL_MOD(U, UISC, UGC):
|
def is_VOWEL_MOD(U, UISC, UGC, AJT):
|
||||||
# https://github.com/harfbuzz/harfbuzz/issues/376
|
# https://github.com/harfbuzz/harfbuzz/issues/376
|
||||||
return (UISC in [Tone_Mark, Cantillation_Mark, Register_Shifter, Visarga] or
|
return (UISC in [Tone_Mark, Cantillation_Mark, Register_Shifter, Visarga] or
|
||||||
(UGC != Lo and (UISC == Bindu or U in [0xAA29])))
|
(UGC != Lo and (UISC == Bindu or U in [0xAA29])))
|
||||||
|
@ -294,13 +343,13 @@ use_positions = {
|
||||||
},
|
},
|
||||||
'CM': {
|
'CM': {
|
||||||
'Abv': [Top],
|
'Abv': [Top],
|
||||||
'Blw': [Bottom],
|
'Blw': [Bottom, Overstruck],
|
||||||
},
|
},
|
||||||
'V': {
|
'V': {
|
||||||
'Abv': [Top, Top_And_Bottom, Top_And_Bottom_And_Right, Top_And_Right],
|
'Abv': [Top, Top_And_Bottom, Top_And_Bottom_And_Right, Top_And_Right],
|
||||||
'Blw': [Bottom, Overstruck, Bottom_And_Right],
|
'Blw': [Bottom, Overstruck, Bottom_And_Right],
|
||||||
'Pst': [Right, Top_And_Left, Top_And_Left_And_Right, Left_And_Right],
|
'Pst': [Right],
|
||||||
'Pre': [Left],
|
'Pre': [Left, Top_And_Left, Top_And_Left_And_Right, Left_And_Right],
|
||||||
},
|
},
|
||||||
'VM': {
|
'VM': {
|
||||||
'Abv': [Top],
|
'Abv': [Top],
|
||||||
|
@ -320,13 +369,19 @@ use_positions = {
|
||||||
'Blw': [Bottom],
|
'Blw': [Bottom],
|
||||||
'Pst': [Not_Applicable],
|
'Pst': [Not_Applicable],
|
||||||
},
|
},
|
||||||
|
'R': None,
|
||||||
'SUB': None,
|
'SUB': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
def map_to_use(data):
|
def map_to_use(data):
|
||||||
out = {}
|
out = {}
|
||||||
items = use_mapping.items()
|
items = use_mapping.items()
|
||||||
for U,(UISC,UIPC,UGC,UBlock) in data.items():
|
for U,(UISC,UIPC,UGC,AJT,UBlock) in data.items():
|
||||||
|
|
||||||
|
if UGC == Cn: continue
|
||||||
|
|
||||||
|
# TODO: These variation selectors are overridden to IND, but we want to ignore them
|
||||||
|
if U in range (0xFE00, 0xFE0F + 1): continue
|
||||||
|
|
||||||
# Resolve Indic_Syllabic_Category
|
# Resolve Indic_Syllabic_Category
|
||||||
|
|
||||||
|
@ -336,20 +391,6 @@ def map_to_use(data):
|
||||||
# Tibetan:
|
# Tibetan:
|
||||||
# TODO: These don't have UISC assigned in Unicode 13.0.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
|
|
||||||
# Overrides to allow NFC order matching syllable
|
|
||||||
# https://github.com/harfbuzz/harfbuzz/issues/1012
|
|
||||||
if UBlock == 'Tibetan' and is_VOWEL (U, UISC, UGC):
|
|
||||||
if UIPC == Top:
|
|
||||||
UIPC = Bottom
|
|
||||||
|
|
||||||
# TODO: https://github.com/harfbuzz/harfbuzz/pull/982
|
|
||||||
# also https://github.com/harfbuzz/harfbuzz/issues/1012
|
|
||||||
if UBlock == 'Chakma' and is_VOWEL (U, UISC, UGC):
|
|
||||||
if UIPC == Top:
|
|
||||||
UIPC = Bottom
|
|
||||||
elif UIPC == Bottom:
|
|
||||||
UIPC = Top
|
|
||||||
|
|
||||||
# TODO: https://github.com/harfbuzz/harfbuzz/pull/627
|
# TODO: https://github.com/harfbuzz/harfbuzz/pull/627
|
||||||
if 0x1BF2 <= U <= 0x1BF3: UISC = Nukta; UIPC = Bottom
|
if 0x1BF2 <= U <= 0x1BF3: UISC = Nukta; UIPC = Bottom
|
||||||
|
@ -358,11 +399,11 @@ def map_to_use(data):
|
||||||
# the nasalization marks, maybe only for U+1CE9..U+1CF1.
|
# the nasalization marks, maybe only for U+1CE9..U+1CF1.
|
||||||
if U == 0x1CED: UISC = Tone_Mark
|
if U == 0x1CED: UISC = Tone_Mark
|
||||||
|
|
||||||
# TODO: https://github.com/harfbuzz/harfbuzz/issues/1105
|
# TODO: https://github.com/microsoft/font-tools/issues/1
|
||||||
if U == 0x11134: UISC = Gemination_Mark
|
if U == 0xA982: UISC = Consonant_Succeeding_Repha
|
||||||
|
|
||||||
values = [k for k,v in items if v(U,UISC,UGC)]
|
values = [k for k,v in items if v(U,UISC,UGC,AJT)]
|
||||||
assert len(values) == 1, "%s %s %s %s" % (hex(U), UISC, UGC, values)
|
assert len(values) == 1, "%s %s %s %s %s" % (hex(U), UISC, UGC, AJT, values)
|
||||||
USE = values[0]
|
USE = values[0]
|
||||||
|
|
||||||
# Resolve Indic_Positional_Category
|
# Resolve Indic_Positional_Category
|
||||||
|
@ -370,9 +411,6 @@ def map_to_use(data):
|
||||||
# TODO: These should die, but have UIPC in Unicode 13.0.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: https://github.com/harfbuzz/harfbuzz/pull/2012
|
|
||||||
if U == 0x1C29: UIPC = Left
|
|
||||||
|
|
||||||
# TODO: These are not in USE's override list that we have, nor are they in Unicode 13.0.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
|
||||||
|
@ -380,14 +418,18 @@ def map_to_use(data):
|
||||||
if U in [0x11302, 0x11303, 0x114C1]: UIPC = Top
|
if U in [0x11302, 0x11303, 0x114C1]: UIPC = Top
|
||||||
if 0x1CF8 <= U <= 0x1CF9: UIPC = Top
|
if 0x1CF8 <= U <= 0x1CF9: UIPC = Top
|
||||||
|
|
||||||
assert (UIPC in [Not_Applicable, Visual_Order_Left] or
|
# TODO: https://github.com/harfbuzz/harfbuzz/pull/982
|
||||||
USE == 'R' or
|
# also https://github.com/harfbuzz/harfbuzz/issues/1012
|
||||||
USE in use_positions), "%s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC)
|
if 0x1112A <= U <= 0x1112B: UIPC = Top
|
||||||
|
if 0x11131 <= U <= 0x11132: UIPC = Top
|
||||||
|
|
||||||
|
assert (UIPC in [Not_Applicable, Visual_Order_Left] or U == 0x0F7F or
|
||||||
|
USE in use_positions), "%s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC, AJT)
|
||||||
|
|
||||||
pos_mapping = use_positions.get(USE, None)
|
pos_mapping = use_positions.get(USE, None)
|
||||||
if pos_mapping:
|
if pos_mapping:
|
||||||
values = [k for k,v in pos_mapping.items() if v and UIPC in v]
|
values = [k for k,v in pos_mapping.items() if v and UIPC in v]
|
||||||
assert len(values) == 1, "%s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC, values)
|
assert len(values) == 1, "%s %s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC, AJT, values)
|
||||||
USE = USE + values[0]
|
USE = USE + values[0]
|
||||||
|
|
||||||
out[U] = (USE, UBlock)
|
out[U] = (USE, UBlock)
|
||||||
|
@ -400,7 +442,7 @@ print ("/* == Start of generated table == */")
|
||||||
print ("/*")
|
print ("/*")
|
||||||
print (" * The following table is generated by running:")
|
print (" * The following table is generated by running:")
|
||||||
print (" *")
|
print (" *")
|
||||||
print (" * ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt")
|
print (" * {} IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt ArabicShaping.txt Blocks.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt".format (sys.argv[0]))
|
||||||
print (" *")
|
print (" *")
|
||||||
print (" * on files with these headers:")
|
print (" * on files with these headers:")
|
||||||
print (" *")
|
print (" *")
|
||||||
|
|
|
@ -40,36 +40,34 @@ static const unsigned char _use_syllable_machine_trans_keys[] = {
|
||||||
12u, 48u, 1u, 15u, 1u, 1u, 12u, 48u, 1u, 1u, 0u, 48u, 11u, 48u, 11u, 48u,
|
12u, 48u, 1u, 15u, 1u, 1u, 12u, 48u, 1u, 1u, 0u, 48u, 11u, 48u, 11u, 48u,
|
||||||
1u, 15u, 1u, 1u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u,
|
1u, 15u, 1u, 1u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u,
|
||||||
46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u,
|
46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u,
|
||||||
23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 13u, 13u,
|
23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u,
|
||||||
4u, 4u, 11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u,
|
11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u,
|
||||||
25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 24u, 48u,
|
26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u,
|
||||||
23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u,
|
23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 1u, 15u,
|
||||||
1u, 48u, 1u, 15u, 4u, 4u, 13u, 13u, 12u, 48u, 1u, 48u, 11u, 48u, 41u, 42u,
|
4u, 4u, 13u, 13u, 12u, 48u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u, 1u, 5u,
|
||||||
42u, 42u, 1u, 5u, 0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char _use_syllable_machine_key_spans[] = {
|
static const char _use_syllable_machine_key_spans[] = {
|
||||||
37, 15, 1, 37, 1, 49, 38, 38,
|
37, 15, 1, 37, 1, 49, 38, 38,
|
||||||
15, 1, 27, 26, 24, 23, 22, 2,
|
15, 1, 27, 26, 24, 23, 22, 2,
|
||||||
1, 25, 25, 25, 1, 25, 26, 26,
|
1, 25, 25, 25, 1, 25, 26, 26,
|
||||||
26, 27, 27, 27, 27, 38, 48, 1,
|
26, 27, 27, 27, 38, 48, 1, 1,
|
||||||
1, 38, 2, 1, 38, 27, 26, 24,
|
38, 2, 1, 38, 27, 26, 24, 23,
|
||||||
23, 22, 2, 1, 25, 25, 25, 25,
|
22, 2, 1, 25, 25, 25, 25, 26,
|
||||||
26, 26, 26, 27, 27, 27, 27, 38,
|
26, 26, 27, 27, 27, 38, 48, 15,
|
||||||
48, 15, 1, 1, 37, 48, 38, 2,
|
1, 1, 37, 48, 38, 2, 1, 5
|
||||||
1, 5
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const short _use_syllable_machine_index_offsets[] = {
|
static const short _use_syllable_machine_index_offsets[] = {
|
||||||
0, 38, 54, 56, 94, 96, 146, 185,
|
0, 38, 54, 56, 94, 96, 146, 185,
|
||||||
224, 240, 242, 270, 297, 322, 346, 369,
|
224, 240, 242, 270, 297, 322, 346, 369,
|
||||||
372, 374, 400, 426, 452, 454, 480, 507,
|
372, 374, 400, 426, 452, 454, 480, 507,
|
||||||
534, 561, 589, 617, 645, 673, 712, 761,
|
534, 561, 589, 617, 645, 684, 733, 735,
|
||||||
763, 765, 804, 807, 809, 848, 876, 903,
|
737, 776, 779, 781, 820, 848, 875, 900,
|
||||||
928, 952, 975, 978, 980, 1006, 1032, 1058,
|
924, 947, 950, 952, 978, 1004, 1030, 1056,
|
||||||
1084, 1111, 1138, 1165, 1193, 1221, 1249, 1277,
|
1083, 1110, 1137, 1165, 1193, 1221, 1260, 1309,
|
||||||
1316, 1365, 1381, 1383, 1385, 1423, 1472, 1511,
|
1325, 1327, 1329, 1367, 1416, 1455, 1458, 1460
|
||||||
1514, 1516
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char _use_syllable_machine_indicies[] = {
|
static const char _use_syllable_machine_indicies[] = {
|
||||||
|
@ -147,136 +145,129 @@ static const char _use_syllable_machine_indicies[] = {
|
||||||
44, 41, 41, 41, 53, 54, 55, 41,
|
44, 41, 41, 41, 53, 54, 55, 41,
|
||||||
56, 57, 58, 41, 41, 41, 41, 45,
|
56, 57, 58, 41, 41, 41, 41, 45,
|
||||||
60, 61, 62, 65, 41, 44, 45, 46,
|
60, 61, 62, 65, 41, 44, 45, 46,
|
||||||
47, 48, 41, 68, 44, 41, 41, 41,
|
47, 48, 41, 41, 44, 41, 41, 41,
|
||||||
53, 54, 55, 41, 56, 57, 58, 41,
|
53, 54, 55, 41, 56, 57, 58, 41,
|
||||||
41, 41, 41, 45, 60, 61, 62, 65,
|
41, 41, 41, 45, 60, 61, 62, 65,
|
||||||
41, 44, 45, 46, 47, 48, 41, 41,
|
41, 44, 45, 46, 47, 48, 49, 50,
|
||||||
44, 41, 41, 41, 53, 54, 55, 41,
|
44, 41, 41, 41, 53, 54, 55, 41,
|
||||||
56, 57, 58, 41, 41, 41, 41, 45,
|
56, 57, 58, 41, 41, 41, 41, 45,
|
||||||
60, 61, 62, 65, 41, 44, 45, 46,
|
60, 61, 62, 65, 41, 42, 1, 41,
|
||||||
47, 48, 49, 50, 44, 41, 41, 41,
|
|
||||||
53, 54, 55, 41, 56, 57, 58, 41,
|
|
||||||
41, 41, 41, 45, 60, 61, 62, 65,
|
|
||||||
41, 42, 1, 41, 41, 43, 41, 41,
|
|
||||||
41, 41, 41, 41, 44, 45, 46, 47,
|
|
||||||
48, 49, 50, 44, 51, 41, 52, 53,
|
|
||||||
54, 55, 41, 56, 57, 58, 41, 41,
|
|
||||||
41, 41, 59, 60, 61, 62, 1, 41,
|
|
||||||
42, 63, 63, 63, 63, 63, 63, 63,
|
|
||||||
63, 63, 63, 63, 63, 63, 64, 63,
|
|
||||||
63, 63, 63, 63, 63, 63, 45, 46,
|
|
||||||
47, 48, 63, 63, 63, 63, 63, 63,
|
|
||||||
63, 63, 63, 63, 56, 57, 58, 63,
|
|
||||||
63, 63, 63, 63, 60, 61, 62, 65,
|
|
||||||
63, 70, 69, 11, 71, 42, 1, 41,
|
|
||||||
41, 43, 41, 41, 41, 41, 41, 41,
|
41, 43, 41, 41, 41, 41, 41, 41,
|
||||||
44, 45, 46, 47, 48, 49, 50, 44,
|
44, 45, 46, 47, 48, 49, 50, 44,
|
||||||
51, 9, 52, 53, 54, 55, 41, 56,
|
51, 41, 52, 53, 54, 55, 41, 56,
|
||||||
57, 58, 41, 17, 72, 41, 59, 60,
|
57, 58, 41, 41, 41, 41, 59, 60,
|
||||||
61, 62, 1, 41, 17, 72, 73, 72,
|
61, 62, 1, 41, 42, 63, 63, 63,
|
||||||
73, 3, 6, 74, 74, 75, 74, 74,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
74, 74, 74, 74, 18, 19, 20, 21,
|
63, 63, 64, 63, 63, 63, 63, 63,
|
||||||
22, 23, 24, 18, 25, 27, 27, 28,
|
63, 63, 45, 46, 47, 48, 63, 63,
|
||||||
29, 30, 74, 31, 32, 33, 74, 74,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
74, 74, 37, 38, 39, 40, 6, 74,
|
56, 57, 58, 63, 63, 63, 63, 63,
|
||||||
18, 19, 20, 21, 22, 74, 74, 74,
|
60, 61, 62, 65, 63, 69, 68, 11,
|
||||||
74, 74, 74, 28, 29, 30, 74, 31,
|
70, 42, 1, 41, 41, 43, 41, 41,
|
||||||
32, 33, 74, 74, 74, 74, 19, 38,
|
41, 41, 41, 41, 44, 45, 46, 47,
|
||||||
39, 40, 76, 74, 19, 20, 21, 22,
|
48, 49, 50, 44, 51, 9, 52, 53,
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
54, 55, 41, 56, 57, 58, 41, 17,
|
||||||
74, 74, 31, 32, 33, 74, 74, 74,
|
71, 41, 59, 60, 61, 62, 1, 41,
|
||||||
74, 74, 38, 39, 40, 76, 74, 20,
|
17, 71, 72, 71, 72, 3, 6, 73,
|
||||||
21, 22, 74, 74, 74, 74, 74, 74,
|
73, 74, 73, 73, 73, 73, 73, 73,
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 38, 39, 40, 74,
|
|
||||||
21, 22, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 38, 39, 40, 74,
|
|
||||||
22, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 38, 39, 40, 74, 38,
|
|
||||||
39, 74, 39, 74, 20, 21, 22, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 31, 32, 33, 74, 74, 74, 74,
|
|
||||||
74, 38, 39, 40, 76, 74, 20, 21,
|
|
||||||
22, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 32, 33, 74, 74,
|
|
||||||
74, 74, 74, 38, 39, 40, 76, 74,
|
|
||||||
20, 21, 22, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 74, 33,
|
|
||||||
74, 74, 74, 74, 74, 38, 39, 40,
|
|
||||||
76, 74, 20, 21, 22, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 74, 38,
|
|
||||||
39, 40, 76, 74, 19, 20, 21, 22,
|
|
||||||
74, 74, 74, 74, 74, 74, 28, 29,
|
|
||||||
30, 74, 31, 32, 33, 74, 74, 74,
|
|
||||||
74, 19, 38, 39, 40, 76, 74, 19,
|
|
||||||
20, 21, 22, 74, 74, 74, 74, 74,
|
|
||||||
74, 74, 29, 30, 74, 31, 32, 33,
|
|
||||||
74, 74, 74, 74, 19, 38, 39, 40,
|
|
||||||
76, 74, 19, 20, 21, 22, 74, 74,
|
|
||||||
74, 74, 74, 74, 74, 74, 30, 74,
|
|
||||||
31, 32, 33, 74, 74, 74, 74, 19,
|
|
||||||
38, 39, 40, 76, 74, 18, 19, 20,
|
|
||||||
21, 22, 74, 24, 18, 74, 74, 74,
|
|
||||||
28, 29, 30, 74, 31, 32, 33, 74,
|
|
||||||
74, 74, 74, 19, 38, 39, 40, 76,
|
|
||||||
74, 18, 19, 20, 21, 22, 74, 77,
|
|
||||||
18, 74, 74, 74, 28, 29, 30, 74,
|
|
||||||
31, 32, 33, 74, 74, 74, 74, 19,
|
|
||||||
38, 39, 40, 76, 74, 18, 19, 20,
|
|
||||||
21, 22, 74, 74, 18, 74, 74, 74,
|
|
||||||
28, 29, 30, 74, 31, 32, 33, 74,
|
|
||||||
74, 74, 74, 19, 38, 39, 40, 76,
|
|
||||||
74, 18, 19, 20, 21, 22, 23, 24,
|
|
||||||
18, 74, 74, 74, 28, 29, 30, 74,
|
|
||||||
31, 32, 33, 74, 74, 74, 74, 19,
|
|
||||||
38, 39, 40, 76, 74, 3, 6, 74,
|
|
||||||
74, 75, 74, 74, 74, 74, 74, 74,
|
|
||||||
18, 19, 20, 21, 22, 23, 24, 18,
|
18, 19, 20, 21, 22, 23, 24, 18,
|
||||||
25, 74, 27, 28, 29, 30, 74, 31,
|
25, 27, 27, 28, 29, 30, 73, 31,
|
||||||
32, 33, 74, 74, 74, 74, 37, 38,
|
32, 33, 73, 73, 73, 73, 37, 38,
|
||||||
39, 40, 6, 74, 3, 74, 74, 74,
|
39, 40, 6, 73, 18, 19, 20, 21,
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
22, 73, 73, 73, 73, 73, 73, 28,
|
||||||
74, 74, 4, 74, 74, 74, 74, 74,
|
29, 30, 73, 31, 32, 33, 73, 73,
|
||||||
74, 74, 19, 20, 21, 22, 74, 74,
|
73, 73, 19, 38, 39, 40, 75, 73,
|
||||||
74, 74, 74, 74, 74, 74, 74, 74,
|
19, 20, 21, 22, 73, 73, 73, 73,
|
||||||
31, 32, 33, 74, 74, 74, 74, 74,
|
73, 73, 73, 73, 73, 73, 31, 32,
|
||||||
38, 39, 40, 76, 74, 3, 78, 78,
|
33, 73, 73, 73, 73, 73, 38, 39,
|
||||||
78, 78, 78, 78, 78, 78, 78, 78,
|
40, 75, 73, 20, 21, 22, 73, 73,
|
||||||
78, 78, 78, 4, 78, 79, 74, 14,
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
74, 6, 78, 78, 78, 78, 78, 78,
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
78, 78, 78, 78, 78, 78, 78, 78,
|
38, 39, 40, 73, 21, 22, 73, 73,
|
||||||
78, 78, 78, 78, 78, 78, 78, 78,
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
78, 78, 78, 78, 78, 78, 78, 78,
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
78, 6, 78, 78, 78, 6, 78, 9,
|
38, 39, 40, 73, 22, 73, 73, 73,
|
||||||
74, 74, 74, 9, 74, 74, 74, 74,
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
74, 3, 6, 14, 74, 75, 74, 74,
|
73, 73, 73, 73, 73, 73, 73, 38,
|
||||||
74, 74, 74, 74, 18, 19, 20, 21,
|
39, 40, 73, 38, 39, 73, 39, 73,
|
||||||
|
20, 21, 22, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 73, 73, 73, 31, 32, 33,
|
||||||
|
73, 73, 73, 73, 73, 38, 39, 40,
|
||||||
|
75, 73, 20, 21, 22, 73, 73, 73,
|
||||||
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
|
32, 33, 73, 73, 73, 73, 73, 38,
|
||||||
|
39, 40, 75, 73, 20, 21, 22, 73,
|
||||||
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 73, 33, 73, 73, 73, 73,
|
||||||
|
73, 38, 39, 40, 75, 73, 20, 21,
|
||||||
|
22, 73, 73, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 73, 38, 39, 40, 75, 73,
|
||||||
|
19, 20, 21, 22, 73, 73, 73, 73,
|
||||||
|
73, 73, 28, 29, 30, 73, 31, 32,
|
||||||
|
33, 73, 73, 73, 73, 19, 38, 39,
|
||||||
|
40, 75, 73, 19, 20, 21, 22, 73,
|
||||||
|
73, 73, 73, 73, 73, 73, 29, 30,
|
||||||
|
73, 31, 32, 33, 73, 73, 73, 73,
|
||||||
|
19, 38, 39, 40, 75, 73, 19, 20,
|
||||||
|
21, 22, 73, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 30, 73, 31, 32, 33, 73,
|
||||||
|
73, 73, 73, 19, 38, 39, 40, 75,
|
||||||
|
73, 18, 19, 20, 21, 22, 73, 24,
|
||||||
|
18, 73, 73, 73, 28, 29, 30, 73,
|
||||||
|
31, 32, 33, 73, 73, 73, 73, 19,
|
||||||
|
38, 39, 40, 75, 73, 18, 19, 20,
|
||||||
|
21, 22, 73, 73, 18, 73, 73, 73,
|
||||||
|
28, 29, 30, 73, 31, 32, 33, 73,
|
||||||
|
73, 73, 73, 19, 38, 39, 40, 75,
|
||||||
|
73, 18, 19, 20, 21, 22, 23, 24,
|
||||||
|
18, 73, 73, 73, 28, 29, 30, 73,
|
||||||
|
31, 32, 33, 73, 73, 73, 73, 19,
|
||||||
|
38, 39, 40, 75, 73, 3, 6, 73,
|
||||||
|
73, 74, 73, 73, 73, 73, 73, 73,
|
||||||
|
18, 19, 20, 21, 22, 23, 24, 18,
|
||||||
|
25, 73, 27, 28, 29, 30, 73, 31,
|
||||||
|
32, 33, 73, 73, 73, 73, 37, 38,
|
||||||
|
39, 40, 6, 73, 3, 73, 73, 73,
|
||||||
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 4, 73, 73, 73, 73, 73,
|
||||||
|
73, 73, 19, 20, 21, 22, 73, 73,
|
||||||
|
73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
|
31, 32, 33, 73, 73, 73, 73, 73,
|
||||||
|
38, 39, 40, 75, 73, 3, 76, 76,
|
||||||
|
76, 76, 76, 76, 76, 76, 76, 76,
|
||||||
|
76, 76, 76, 4, 76, 77, 73, 14,
|
||||||
|
73, 6, 76, 76, 76, 76, 76, 76,
|
||||||
|
76, 76, 76, 76, 76, 76, 76, 76,
|
||||||
|
76, 76, 76, 76, 76, 76, 76, 76,
|
||||||
|
76, 76, 76, 76, 76, 76, 76, 76,
|
||||||
|
76, 6, 76, 76, 76, 6, 76, 9,
|
||||||
|
73, 73, 73, 9, 73, 73, 73, 73,
|
||||||
|
73, 3, 6, 14, 73, 74, 73, 73,
|
||||||
|
73, 73, 73, 73, 18, 19, 20, 21,
|
||||||
22, 23, 24, 18, 25, 26, 27, 28,
|
22, 23, 24, 18, 25, 26, 27, 28,
|
||||||
29, 30, 74, 31, 32, 33, 74, 34,
|
29, 30, 73, 31, 32, 33, 73, 34,
|
||||||
35, 74, 37, 38, 39, 40, 6, 74,
|
35, 73, 37, 38, 39, 40, 6, 73,
|
||||||
3, 6, 74, 74, 75, 74, 74, 74,
|
3, 6, 73, 73, 74, 73, 73, 73,
|
||||||
74, 74, 74, 18, 19, 20, 21, 22,
|
73, 73, 73, 18, 19, 20, 21, 22,
|
||||||
23, 24, 18, 25, 26, 27, 28, 29,
|
23, 24, 18, 25, 26, 27, 28, 29,
|
||||||
30, 74, 31, 32, 33, 74, 74, 74,
|
30, 73, 31, 32, 33, 73, 73, 73,
|
||||||
74, 37, 38, 39, 40, 6, 74, 34,
|
73, 37, 38, 39, 40, 6, 73, 34,
|
||||||
35, 74, 35, 74, 9, 78, 78, 78,
|
35, 73, 35, 73, 9, 76, 76, 76,
|
||||||
9, 78, 0
|
9, 76, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char _use_syllable_machine_trans_targs[] = {
|
static const char _use_syllable_machine_trans_targs[] = {
|
||||||
5, 8, 5, 36, 2, 5, 1, 47,
|
5, 8, 5, 35, 2, 5, 1, 46,
|
||||||
5, 6, 5, 31, 33, 57, 58, 60,
|
5, 6, 5, 30, 32, 55, 56, 58,
|
||||||
61, 34, 37, 38, 39, 40, 41, 51,
|
59, 33, 36, 37, 38, 39, 40, 50,
|
||||||
52, 54, 62, 55, 48, 49, 50, 44,
|
51, 52, 60, 53, 47, 48, 49, 43,
|
||||||
45, 46, 63, 64, 65, 56, 42, 43,
|
44, 45, 61, 62, 63, 54, 41, 42,
|
||||||
5, 5, 7, 0, 10, 11, 12, 13,
|
5, 5, 7, 0, 10, 11, 12, 13,
|
||||||
14, 25, 26, 28, 29, 22, 23, 24,
|
14, 25, 26, 27, 28, 22, 23, 24,
|
||||||
17, 18, 19, 30, 15, 16, 5, 5,
|
17, 18, 19, 29, 15, 16, 5, 5,
|
||||||
9, 20, 5, 21, 27, 5, 32, 5,
|
9, 20, 5, 21, 5, 31, 5, 34,
|
||||||
35, 5, 5, 3, 4, 53, 5, 59
|
5, 5, 3, 4, 5, 57
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char _use_syllable_machine_trans_actions[] = {
|
static const char _use_syllable_machine_trans_actions[] = {
|
||||||
|
@ -288,8 +279,8 @@ static const char _use_syllable_machine_trans_actions[] = {
|
||||||
11, 12, 5, 0, 0, 0, 0, 0,
|
11, 12, 5, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 5, 0, 0, 0,
|
0, 0, 0, 0, 5, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 13, 14,
|
0, 0, 0, 0, 0, 0, 13, 14,
|
||||||
0, 0, 15, 0, 0, 16, 0, 17,
|
0, 0, 15, 0, 16, 0, 17, 0,
|
||||||
0, 18, 19, 0, 0, 5, 20, 0
|
18, 19, 0, 0, 20, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char _use_syllable_machine_to_state_actions[] = {
|
static const char _use_syllable_machine_to_state_actions[] = {
|
||||||
|
@ -300,8 +291,7 @@ static const char _use_syllable_machine_to_state_actions[] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0
|
||||||
0, 0
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char _use_syllable_machine_from_state_actions[] = {
|
static const char _use_syllable_machine_from_state_actions[] = {
|
||||||
|
@ -312,20 +302,18 @@ static const char _use_syllable_machine_from_state_actions[] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0
|
||||||
0, 0
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const short _use_syllable_machine_eof_trans[] = {
|
static const short _use_syllable_machine_eof_trans[] = {
|
||||||
1, 3, 3, 6, 6, 0, 42, 42,
|
1, 3, 3, 6, 6, 0, 42, 42,
|
||||||
64, 64, 42, 42, 42, 42, 42, 42,
|
64, 64, 42, 42, 42, 42, 42, 42,
|
||||||
42, 42, 42, 42, 67, 42, 42, 42,
|
42, 42, 42, 42, 67, 42, 42, 42,
|
||||||
42, 42, 42, 42, 42, 42, 64, 70,
|
42, 42, 42, 42, 42, 64, 69, 71,
|
||||||
72, 42, 74, 74, 75, 75, 75, 75,
|
42, 73, 73, 74, 74, 74, 74, 74,
|
||||||
75, 75, 75, 75, 75, 75, 75, 75,
|
74, 74, 74, 74, 74, 74, 74, 74,
|
||||||
75, 75, 75, 75, 75, 75, 75, 75,
|
74, 74, 74, 74, 74, 74, 74, 77,
|
||||||
75, 79, 75, 75, 79, 75, 75, 75,
|
74, 74, 77, 74, 74, 74, 74, 77
|
||||||
75, 79
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int use_syllable_machine_start = 5;
|
static const int use_syllable_machine_start = 5;
|
||||||
|
@ -339,7 +327,7 @@ static const int use_syllable_machine_en_main = 5;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#line 161 "hb-ot-shape-complex-use-machine.rl"
|
#line 160 "hb-ot-shape-complex-use-machine.rl"
|
||||||
|
|
||||||
|
|
||||||
#define found_syllable(syllable_type) \
|
#define found_syllable(syllable_type) \
|
||||||
|
@ -381,7 +369,7 @@ find_syllables_use (hb_buffer_t *buffer)
|
||||||
unsigned int act;
|
unsigned int act;
|
||||||
int cs;
|
int cs;
|
||||||
|
|
||||||
#line 385 "hb-ot-shape-complex-use-machine.hh"
|
#line 373 "hb-ot-shape-complex-use-machine.hh"
|
||||||
{
|
{
|
||||||
cs = use_syllable_machine_start;
|
cs = use_syllable_machine_start;
|
||||||
ts = 0;
|
ts = 0;
|
||||||
|
@ -389,12 +377,12 @@ find_syllables_use (hb_buffer_t *buffer)
|
||||||
act = 0;
|
act = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#line 204 "hb-ot-shape-complex-use-machine.rl"
|
#line 203 "hb-ot-shape-complex-use-machine.rl"
|
||||||
|
|
||||||
|
|
||||||
unsigned int syllable_serial = 1;
|
unsigned int syllable_serial = 1;
|
||||||
|
|
||||||
#line 398 "hb-ot-shape-complex-use-machine.hh"
|
#line 386 "hb-ot-shape-complex-use-machine.hh"
|
||||||
{
|
{
|
||||||
int _slen;
|
int _slen;
|
||||||
int _trans;
|
int _trans;
|
||||||
|
@ -408,7 +396,7 @@ _resume:
|
||||||
#line 1 "NONE"
|
#line 1 "NONE"
|
||||||
{ts = p;}
|
{ts = p;}
|
||||||
break;
|
break;
|
||||||
#line 412 "hb-ot-shape-complex-use-machine.hh"
|
#line 400 "hb-ot-shape-complex-use-machine.hh"
|
||||||
}
|
}
|
||||||
|
|
||||||
_keys = _use_syllable_machine_trans_keys + (cs<<1);
|
_keys = _use_syllable_machine_trans_keys + (cs<<1);
|
||||||
|
@ -431,59 +419,59 @@ _eof_trans:
|
||||||
{te = p+1;}
|
{te = p+1;}
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
#line 149 "hb-ot-shape-complex-use-machine.rl"
|
#line 148 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p+1;{ found_syllable (independent_cluster); }}
|
{te = p+1;{ found_syllable (independent_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
#line 152 "hb-ot-shape-complex-use-machine.rl"
|
#line 151 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p+1;{ found_syllable (standard_cluster); }}
|
{te = p+1;{ found_syllable (standard_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
#line 155 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p+1;{ found_syllable (broken_cluster); }}
|
{te = p+1;{ found_syllable (broken_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p+1;{ found_syllable (non_cluster); }}
|
{te = p+1;{ found_syllable (non_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
#line 150 "hb-ot-shape-complex-use-machine.rl"
|
#line 149 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
|
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
#line 151 "hb-ot-shape-complex-use-machine.rl"
|
#line 150 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (sakot_terminated_cluster); }}
|
{te = p;p--;{ found_syllable (sakot_terminated_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
#line 152 "hb-ot-shape-complex-use-machine.rl"
|
#line 151 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (standard_cluster); }}
|
{te = p;p--;{ found_syllable (standard_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
#line 153 "hb-ot-shape-complex-use-machine.rl"
|
#line 152 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
|
{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
#line 154 "hb-ot-shape-complex-use-machine.rl"
|
#line 153 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (numeral_cluster); }}
|
{te = p;p--;{ found_syllable (numeral_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 18:
|
case 18:
|
||||||
#line 155 "hb-ot-shape-complex-use-machine.rl"
|
#line 154 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (symbol_cluster); }}
|
{te = p;p--;{ found_syllable (symbol_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
#line 155 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (broken_cluster); }}
|
{te = p;p--;{ found_syllable (broken_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 20:
|
case 20:
|
||||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{te = p;p--;{ found_syllable (non_cluster); }}
|
{te = p;p--;{ found_syllable (non_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
#line 152 "hb-ot-shape-complex-use-machine.rl"
|
#line 151 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
|
{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
#line 155 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
|
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -501,16 +489,16 @@ _eof_trans:
|
||||||
case 3:
|
case 3:
|
||||||
#line 1 "NONE"
|
#line 1 "NONE"
|
||||||
{te = p+1;}
|
{te = p+1;}
|
||||||
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
#line 155 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{act = 8;}
|
{act = 8;}
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
#line 1 "NONE"
|
#line 1 "NONE"
|
||||||
{te = p+1;}
|
{te = p+1;}
|
||||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
||||||
{act = 9;}
|
{act = 9;}
|
||||||
break;
|
break;
|
||||||
#line 514 "hb-ot-shape-complex-use-machine.hh"
|
#line 502 "hb-ot-shape-complex-use-machine.hh"
|
||||||
}
|
}
|
||||||
|
|
||||||
_again:
|
_again:
|
||||||
|
@ -519,7 +507,7 @@ _again:
|
||||||
#line 1 "NONE"
|
#line 1 "NONE"
|
||||||
{ts = 0;}
|
{ts = 0;}
|
||||||
break;
|
break;
|
||||||
#line 523 "hb-ot-shape-complex-use-machine.hh"
|
#line 511 "hb-ot-shape-complex-use-machine.hh"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ++p != pe )
|
if ( ++p != pe )
|
||||||
|
@ -535,7 +523,7 @@ _again:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#line 209 "hb-ot-shape-complex-use-machine.rl"
|
#line 208 "hb-ot-shape-complex-use-machine.rl"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,8 +96,7 @@ h = H | HVM | Sk;
|
||||||
|
|
||||||
# Override: Adhoc ZWJ placement. https://github.com/harfbuzz/harfbuzz/issues/542#issuecomment-353169729
|
# Override: Adhoc ZWJ placement. https://github.com/harfbuzz/harfbuzz/issues/542#issuecomment-353169729
|
||||||
consonant_modifiers = CMAbv* CMBlw* ((ZWJ?.h.ZWJ? B | SUB) CMAbv? CMBlw*)*;
|
consonant_modifiers = CMAbv* CMBlw* ((ZWJ?.h.ZWJ? B | SUB) CMAbv? CMBlw*)*;
|
||||||
# Override: Allow two MBlw. https://github.com/harfbuzz/harfbuzz/issues/376
|
medial_consonants = MPre? MAbv? MBlw? MPst?;
|
||||||
medial_consonants = MPre? MAbv? MBlw?.MBlw? MPst?;
|
|
||||||
dependent_vowels = VPre* VAbv* VBlw* VPst*;
|
dependent_vowels = VPre* VAbv* VBlw* VPst*;
|
||||||
vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
|
vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
|
||||||
final_consonants = FAbv* FBlw* FPst*;
|
final_consonants = FAbv* FBlw* FPst*;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/*
|
/*
|
||||||
* The following table is generated by running:
|
* The following table is generated by running:
|
||||||
*
|
*
|
||||||
* ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
|
* ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt ArabicShaping.txt Blocks.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt
|
||||||
*
|
*
|
||||||
* on files with these headers:
|
* on files with these headers:
|
||||||
*
|
*
|
||||||
|
@ -10,8 +10,24 @@
|
||||||
* # Date: 2019-07-22, 19:55:00 GMT [KW, RP]
|
* # Date: 2019-07-22, 19:55:00 GMT [KW, RP]
|
||||||
* # IndicPositionalCategory-13.0.0.txt
|
* # IndicPositionalCategory-13.0.0.txt
|
||||||
* # Date: 2019-07-23, 00:01:00 GMT [KW, RP]
|
* # Date: 2019-07-23, 00:01:00 GMT [KW, RP]
|
||||||
|
* # ArabicShaping-13.0.0.txt
|
||||||
|
* # Date: 2020-01-31, 23:55:00 GMT [KW, RP]
|
||||||
* # Blocks-13.0.0.txt
|
* # Blocks-13.0.0.txt
|
||||||
* # Date: 2019-07-10, 19:06:00 GMT [KW]
|
* # Date: 2019-07-10, 19:06:00 GMT [KW]
|
||||||
|
* # Override values For Indic_Syllabic_Category
|
||||||
|
* # Not derivable
|
||||||
|
* # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
|
||||||
|
* # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
|
||||||
|
* # Updated for Unicode 12.1 by Andrew Glass 2019-05-24
|
||||||
|
* # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
|
||||||
|
* # Override values For Indic_Positional_Category
|
||||||
|
* # Not derivable
|
||||||
|
* # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
|
||||||
|
* # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
|
||||||
|
* # Ammended for Unicode 10.0 by Andrew Glass 2018-09-21
|
||||||
|
* # Updated for L2/19-083 by Andrew Glass 2019-05-06
|
||||||
|
* # Updated for Unicode 12.1 by Andrew Glass 2019-05-30
|
||||||
|
* # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
|
||||||
* UnicodeData.txt does not have a header.
|
* UnicodeData.txt does not have a header.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -84,7 +100,31 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 00C0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 00C0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
/* 00D0 */ O, O, O, O, O, O, O, GB,
|
/* 00D0 */ O, O, O, O, O, O, O, GB,
|
||||||
|
|
||||||
#define use_offset_0x0900u 80
|
#define use_offset_0x0640u 80
|
||||||
|
|
||||||
|
|
||||||
|
/* Arabic */
|
||||||
|
|
||||||
|
/* 0640 */ B, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x07c8u 88
|
||||||
|
|
||||||
|
|
||||||
|
/* NKo */
|
||||||
|
O, O, B, B, B, B, B, B,
|
||||||
|
/* 07D0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 07E0 */ B, B, B, B, B, B, B, B, B, B, B, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv,
|
||||||
|
/* 07F0 */ VMAbv, VMAbv, VMAbv, VMAbv, O, O, O, O, O, O, B, O, O, VMAbv, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x0840u 144
|
||||||
|
|
||||||
|
|
||||||
|
/* Mandaic */
|
||||||
|
|
||||||
|
/* 0840 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 0850 */ B, B, B, B, B, B, B, B, B, CMBlw, CMBlw, CMBlw, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x0900u 176
|
||||||
|
|
||||||
|
|
||||||
/* Devanagari */
|
/* Devanagari */
|
||||||
|
@ -104,7 +144,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 0990 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0990 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 09A0 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
/* 09A0 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
||||||
/* 09B0 */ B, O, B, O, O, O, B, B, B, B, O, O, CMBlw, B, VPst, VPre,
|
/* 09B0 */ B, O, B, O, O, O, B, B, B, B, O, O, CMBlw, B, VPst, VPre,
|
||||||
/* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPst, VPst, H, IND, O,
|
/* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, VPre, H, IND, O,
|
||||||
/* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, B, B, O, B,
|
/* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, B, B, O, B,
|
||||||
/* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
/* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, B, O, FMAbv, O,
|
/* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, B, O, FMAbv, O,
|
||||||
|
@ -137,7 +177,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 0B10 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0B10 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 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, VPre, O, O, VPre, VPre, H, O, O,
|
||||||
/* 0B50 */ O, O, O, O, O, VAbv, 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,
|
||||||
|
@ -148,7 +188,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 0B90 */ B, O, B, B, B, B, O, O, O, B, B, O, B, O, B, B,
|
/* 0B90 */ B, O, B, B, B, B, O, O, O, B, B, O, B, O, B, B,
|
||||||
/* 0BA0 */ O, O, O, B, B, O, O, O, B, B, B, O, O, O, B, B,
|
/* 0BA0 */ O, O, O, B, B, O, O, O, B, B, B, O, O, O, B, B,
|
||||||
/* 0BB0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, VPst, VPst,
|
/* 0BB0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, VPst, VPst,
|
||||||
/* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPst, VPst, VPst, H, O, O,
|
/* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPre, VPre, VPre, H, O, O,
|
||||||
/* 0BD0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, O,
|
/* 0BD0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, O,
|
||||||
/* 0BE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
/* 0BE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0BF0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 0BF0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
@ -181,7 +221,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 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,
|
||||||
/* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPst, VPst, VPst, H, R, O,
|
/* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPre, VPre, VPre, H, R, O,
|
||||||
/* 0D50 */ O, O, O, O, IND, IND, IND, VPst, O, O, O, O, O, O, O, B,
|
/* 0D50 */ O, O, O, O, IND, IND, IND, VPst, O, O, O, O, O, O, O, B,
|
||||||
/* 0D60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
/* 0D60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0D70 */ O, O, O, O, O, O, O, O, O, O, IND, IND, IND, IND, IND, IND,
|
/* 0D70 */ O, O, O, O, O, O, O, O, O, O, IND, IND, IND, IND, IND, IND,
|
||||||
|
@ -193,28 +233,30 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 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,
|
||||||
/* 0DC0 */ B, B, B, B, B, B, B, O, O, O, H, O, O, O, O, VPst,
|
/* 0DC0 */ B, B, B, B, B, B, B, O, O, O, H, O, O, O, O, VPst,
|
||||||
/* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPst, VPre, VPst, VPst, VPst, VPst,
|
/* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPre, VPre, VPre, VPre, VPre, VPst,
|
||||||
/* 0DE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
/* 0DE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0DF0 */ O, O, VPst, VPst, O, O, O, O,
|
/* 0DF0 */ O, O, VPst, VPst, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x0f18u 1352
|
#define use_offset_0x0f00u 1448
|
||||||
|
|
||||||
|
|
||||||
/* Tibetan */
|
/* Tibetan */
|
||||||
VBlw, VBlw, O, O, O, O, O, O,
|
|
||||||
|
/* 0F00 */ B, B, O, O, B, B, B, O, O, O, O, O, O, O, O, O,
|
||||||
|
/* 0F10 */ O, O, O, O, O, O, O, O, VBlw, VBlw, O, O, O, O, O, O,
|
||||||
/* 0F20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0F20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0F30 */ B, B, B, B, O, FMBlw, O, FMBlw, O, CMAbv, O, O, O, O, VPst, VPre,
|
/* 0F30 */ B, B, B, B, O, FBlw, O, FBlw, O, CMAbv, O, O, O, O, VPst, VPre,
|
||||||
/* 0F40 */ B, B, B, B, B, B, B, B, O, B, B, B, B, B, B, B,
|
/* 0F40 */ B, B, B, B, B, B, B, B, O, B, B, B, B, B, B, B,
|
||||||
/* 0F50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 0F50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 0F60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
/* 0F60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
||||||
/* 0F70 */ O, VBlw, VBlw, VAbv, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VMAbv, VMPst,
|
/* 0F70 */ O, CMBlw, VBlw, VAbv, VAbv, VBlw, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VMAbv, IND,
|
||||||
/* 0F80 */ VBlw, VAbv, VMAbv, VMAbv, VBlw, IND, VMAbv, VMAbv, B, B, B, B, B, SUB, SUB, SUB,
|
/* 0F80 */ VBlw, VAbv, VMAbv, VMAbv, VBlw, IND, VMAbv, VMAbv, B, B, B, B, B, SUB, SUB, SUB,
|
||||||
/* 0F90 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
/* 0F90 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
||||||
/* 0FA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
/* 0FA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
||||||
/* 0FB0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, O, O,
|
/* 0FB0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, O, O,
|
||||||
/* 0FC0 */ O, O, O, O, O, O, FMBlw, O,
|
/* 0FC0 */ O, O, O, O, O, O, FBlw, O,
|
||||||
|
|
||||||
#define use_offset_0x1000u 1528
|
#define use_offset_0x1000u 1648
|
||||||
|
|
||||||
|
|
||||||
/* Myanmar */
|
/* Myanmar */
|
||||||
|
@ -230,7 +272,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1080 */ B, B, MBlw, VPst, VPre, VAbv, VAbv, VMPst, VMPst, VMPst, VMPst, VMPst, VMPst, VMBlw, B, VMPst,
|
/* 1080 */ B, B, MBlw, VPst, VPre, VAbv, VAbv, VMPst, VMPst, VMPst, VMPst, VMPst, VMPst, VMBlw, B, VMPst,
|
||||||
/* 1090 */ B, B, B, B, B, B, B, B, B, B, VMPst, VMPst, VPst, VAbv, O, O,
|
/* 1090 */ B, B, B, B, B, B, B, B, B, B, VMPst, VMPst, VPst, VAbv, O, O,
|
||||||
|
|
||||||
#define use_offset_0x1700u 1688
|
#define use_offset_0x1700u 1808
|
||||||
|
|
||||||
|
|
||||||
/* Tagalog */
|
/* Tagalog */
|
||||||
|
@ -258,12 +300,27 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1780 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1780 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 1790 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1790 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 17A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 17A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 17B0 */ B, B, B, B, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPst, VPst,
|
/* 17B0 */ B, B, B, B, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPre, VPre,
|
||||||
/* 17C0 */ VPst, VPre, VPre, VPre, VPst, VPst, VMAbv, VMPst, VPst, VMAbv, VMAbv, FMAbv, FAbv, CMAbv, FMAbv, FMAbv,
|
/* 17C0 */ VPre, VPre, VPre, VPre, VPre, VPre, VMAbv, VMPst, VPst, VMAbv, VMAbv, FMAbv, FAbv, CMAbv, FMAbv, VMAbv,
|
||||||
/* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, B, FMAbv, O, O,
|
/* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, B, FMAbv, O, O,
|
||||||
/* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
/* 17F0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x1900u 1928
|
/* Mongolian */
|
||||||
|
|
||||||
|
/* 1800 */ B, O, O, O, O, O, O, B, O, O, B, O, O, O, O, O,
|
||||||
|
/* 1810 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
/* 1820 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1830 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1840 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1850 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1860 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1870 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
||||||
|
/* 1880 */ GB, GB, GB, GB, GB, CMAbv, CMAbv, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1890 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18A0 */ B, B, B, B, B, B, B, B, B, CMBlw, B, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x1900u 2240
|
||||||
|
|
||||||
|
|
||||||
/* Limbu */
|
/* Limbu */
|
||||||
|
@ -271,7 +328,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1900 */ GB, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1900 */ GB, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, O,
|
/* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, O,
|
||||||
/* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, O, O, O, O,
|
/* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, O, O, O, O,
|
||||||
/* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VAbv, FMBlw, O, O, O, O,
|
/* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VMAbv, FMBlw, O, O, O, O,
|
||||||
/* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
/* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
|
||||||
/* Tai Le */
|
/* Tai Le */
|
||||||
|
@ -294,7 +351,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* Buginese */
|
/* Buginese */
|
||||||
|
|
||||||
/* 1A00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1A00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 1A10 */ B, B, B, B, B, B, B, VAbv, VBlw, VPre, VPst, VAbv, O, O, O, O,
|
/* 1A10 */ B, B, B, B, B, B, B, VAbv, VAbv, VPre, VPst, VAbv, O, O, O, O,
|
||||||
|
|
||||||
/* Tai Tham */
|
/* Tai Tham */
|
||||||
|
|
||||||
|
@ -303,11 +360,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, SUB, SUB, SUB, O,
|
/* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, SUB, SUB, SUB, O,
|
||||||
/* 1A60 */ Sk, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
|
/* 1A60 */ Sk, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
|
||||||
/* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, FMAbv, FMAbv, O, O, FMBlw,
|
/* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, VMAbv, VMAbv, O, O, VMBlw,
|
||||||
/* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
/* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x1b00u 2344
|
#define use_offset_0x1b00u 2656
|
||||||
|
|
||||||
|
|
||||||
/* Balinese */
|
/* Balinese */
|
||||||
|
@ -316,7 +373,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 1B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 1B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 1B30 */ B, B, B, B, CMAbv, VPst, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VPre,
|
/* 1B30 */ B, B, B, B, CMAbv, VPst, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VPre,
|
||||||
/* 1B40 */ VPst, VPst, VAbv, VAbv, H, B, B, B, B, B, B, B, O, O, O, O,
|
/* 1B40 */ VPre, VPre, VAbv, VAbv, H, B, B, B, B, B, B, B, O, O, O, O,
|
||||||
/* 1B50 */ B, B, B, B, B, B, B, B, B, B, O, GB, GB, O, O, GB,
|
/* 1B50 */ B, B, B, B, B, B, B, B, B, B, O, GB, GB, O, O, GB,
|
||||||
/* 1B60 */ O, S, GB, S, S, S, S, S, GB, S, S, SMAbv, SMBlw, SMAbv, SMAbv, SMAbv,
|
/* 1B60 */ O, S, GB, S, S, S, S, S, GB, S, S, SMAbv, SMBlw, SMAbv, SMAbv, SMAbv,
|
||||||
/* 1B70 */ SMAbv, SMAbv, SMAbv, SMAbv, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 1B70 */ SMAbv, SMAbv, SMAbv, SMAbv, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
@ -343,7 +400,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FMAbv, CMBlw, O, O, O, O, O, O, O, O,
|
/* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FMAbv, CMBlw, O, O, O, O, O, O, O, O,
|
||||||
/* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, O, B, B, B,
|
/* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, O, B, B, B,
|
||||||
|
|
||||||
#define use_offset_0x1cd0u 2680
|
#define use_offset_0x1cd0u 2992
|
||||||
|
|
||||||
|
|
||||||
/* Vedic Extensions */
|
/* Vedic Extensions */
|
||||||
|
@ -352,20 +409,20 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 1CE0 */ VMAbv, VMPst, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, O, O, O, O, VMBlw, O, O,
|
/* 1CE0 */ VMAbv, VMPst, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, O, O, O, O, VMBlw, O, O,
|
||||||
/* 1CF0 */ O, O, IND, IND, VMAbv, CS, CS, VMPst, VMAbv, VMAbv, GB, O, O, O, O, O,
|
/* 1CF0 */ O, O, IND, IND, VMAbv, CS, CS, VMPst, VMAbv, VMAbv, GB, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x1df8u 2728
|
#define use_offset_0x1df8u 3040
|
||||||
|
|
||||||
|
|
||||||
/* Combining Diacritical Marks Supplement */
|
/* Combining Diacritical Marks Supplement */
|
||||||
O, O, O, FMAbv, O, O, O, O,
|
O, O, O, FMAbv, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x2008u 2736
|
#define use_offset_0x2008u 3048
|
||||||
|
|
||||||
|
|
||||||
/* General Punctuation */
|
/* General Punctuation */
|
||||||
O, O, O, O, ZWNJ, ZWJ, O, O,
|
O, O, O, O, ZWNJ, ZWJ, O, O,
|
||||||
/* 2010 */ GB, GB, GB, GB, GB, O, O, O,
|
/* 2010 */ GB, GB, GB, GB, GB, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x2060u 2752
|
#define use_offset_0x2060u 3064
|
||||||
|
|
||||||
/* 2060 */ WJ, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 2060 */ WJ, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
@ -374,20 +431,31 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 2070 */ O, O, O, O, FMPst, O, O, O, O, O, O, O, O, O, O, O,
|
/* 2070 */ O, O, O, O, FMPst, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
/* 2080 */ O, O, FMPst, FMPst, FMPst, O, O, O,
|
/* 2080 */ O, O, FMPst, FMPst, FMPst, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x20f0u 2792
|
#define use_offset_0x20f0u 3104
|
||||||
|
|
||||||
|
|
||||||
/* Combining Diacritical Marks for Symbols */
|
/* Combining Diacritical Marks for Symbols */
|
||||||
|
|
||||||
/* 20F0 */ VMAbv, O, O, O, O, O, O, O,
|
/* 20F0 */ VMAbv, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x25c8u 2800
|
#define use_offset_0x25c8u 3112
|
||||||
|
|
||||||
|
|
||||||
/* Geometric Shapes */
|
/* Geometric Shapes */
|
||||||
O, O, O, O, GB, O, O, O,
|
O, O, O, O, B, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0xa800u 2808
|
#define use_offset_0x2d30u 3120
|
||||||
|
|
||||||
|
|
||||||
|
/* Tifinagh */
|
||||||
|
|
||||||
|
/* 2D30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 2D40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 2D50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 2D60 */ B, B, B, B, B, B, B, B, O, O, O, O, O, O, O, B,
|
||||||
|
/* 2D70 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, H,
|
||||||
|
|
||||||
|
#define use_offset_0xa800u 3200
|
||||||
|
|
||||||
|
|
||||||
/* Syloti Nagri */
|
/* Syloti Nagri */
|
||||||
|
@ -437,7 +505,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, MBlw, MBlw,
|
/* A9B0 */ B, B, B, CMAbv, VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VPre, VAbv, MBlw, MPst, 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,
|
||||||
|
|
||||||
|
@ -451,7 +519,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* AA00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* AA00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* AA10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* AA10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* AA20 */ B, B, B, B, B, B, B, B, B, VMAbv, VAbv, VAbv, VAbv, VBlw, VAbv, VPre,
|
/* AA20 */ B, B, B, B, B, B, B, B, B, VMAbv, VAbv, VAbv, VAbv, VBlw, VAbv, VPre,
|
||||||
/* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MBlw, MBlw, O, O, O, O, O, O, O, O, O,
|
/* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MAbv, MBlw, O, O, O, O, O, O, O, O, O,
|
||||||
/* AA40 */ B, B, B, FAbv, B, B, B, B, B, B, B, B, FAbv, FPst, O, O,
|
/* AA40 */ B, B, B, FAbv, B, B, B, B, B, B, B, B, FAbv, FPst, O, O,
|
||||||
/* AA50 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* AA50 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
@ -474,7 +542,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* AAE0 */ B, B, B, B, B, B, B, B, B, B, B, VPre, VBlw, VAbv, VPre, VPst,
|
/* AAE0 */ B, B, B, B, B, B, B, B, B, B, B, VPre, VBlw, VAbv, VPre, VPst,
|
||||||
/* AAF0 */ O, O, O, O, O, VMPst, H, O,
|
/* AAF0 */ O, O, O, O, O, VMPst, H, O,
|
||||||
|
|
||||||
#define use_offset_0xabc0u 3568
|
#define use_offset_0xabc0u 3960
|
||||||
|
|
||||||
|
|
||||||
/* Meetei Mayek */
|
/* Meetei Mayek */
|
||||||
|
@ -484,20 +552,75 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* ABE0 */ B, B, B, VPst, VPst, VAbv, VPst, VPst, VBlw, VPst, VPst, O, VMPst, VBlw, O, O,
|
/* ABE0 */ B, B, B, VPst, VPst, VAbv, VPst, VPst, VBlw, VPst, VPst, O, VMPst, VBlw, O, O,
|
||||||
/* ABF0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* ABF0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x10a00u 3632
|
#define use_offset_0x10a00u 4024
|
||||||
|
|
||||||
|
|
||||||
/* Kharoshthi */
|
/* Kharoshthi */
|
||||||
|
|
||||||
/* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, VBlw, VBlw, VMBlw, VMAbv,
|
/* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, VPst, VMBlw, VMBlw, VMAbv,
|
||||||
/* 10A10 */ B, B, B, B, O, B, B, B, O, B, B, B, B, B, B, B,
|
/* 10A10 */ B, B, B, B, O, B, B, B, O, B, B, B, B, B, B, B,
|
||||||
/* 10A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 10A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 10A30 */ B, B, B, B, B, B, O, O, CMAbv, CMBlw, CMBlw, O, O, O, O, H,
|
/* 10A30 */ B, B, B, B, B, B, O, O, CMAbv, CMBlw, CMBlw, O, O, O, O, H,
|
||||||
/* 10A40 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
/* 10A40 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11000u 3712
|
#define use_offset_0x10ac0u 4104
|
||||||
|
|
||||||
|
|
||||||
|
/* Manichaean */
|
||||||
|
|
||||||
|
/* 10AC0 */ B, B, B, B, B, B, B, B, O, B, B, B, B, B, B, B,
|
||||||
|
/* 10AD0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10AE0 */ B, B, B, B, B, CMBlw, CMBlw, O,
|
||||||
|
|
||||||
|
#define use_offset_0x10b80u 4144
|
||||||
|
|
||||||
|
|
||||||
|
/* Psalter Pahlavi */
|
||||||
|
|
||||||
|
/* 10B80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10B90 */ B, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
/* 10BA0 */ O, O, O, O, O, O, O, O, O, B, B, B, B, B, B, O,
|
||||||
|
|
||||||
|
#define use_offset_0x10d00u 4192
|
||||||
|
|
||||||
|
|
||||||
|
/* Hanifi Rohingya */
|
||||||
|
|
||||||
|
/* 10D00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10D10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10D20 */ B, B, B, B, VMAbv, VMAbv, VMAbv, CMAbv, O, O, O, O, O, O, O, O,
|
||||||
|
/* 10D30 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x10e80u 4256
|
||||||
|
|
||||||
|
|
||||||
|
/* Yezidi */
|
||||||
|
|
||||||
|
/* 10E80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10E90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10EA0 */ B, B, B, B, B, B, B, B, B, B, O, VAbv, VAbv, O, O, O,
|
||||||
|
/* 10EB0 */ B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x10f30u 4312
|
||||||
|
|
||||||
|
|
||||||
|
/* Sogdian */
|
||||||
|
|
||||||
|
/* 10F30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10F40 */ B, B, B, B, B, B, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw,
|
||||||
|
/* 10F50 */ VMBlw, B, B, B, B, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x10fb0u 4352
|
||||||
|
|
||||||
|
|
||||||
|
/* Chorasmian */
|
||||||
|
|
||||||
|
/* 10FB0 */ B, O, B, B, B, B, B, O, B, B, B, B, B, B, B, B,
|
||||||
|
/* 10FC0 */ O, B, B, B, B, O, O, O, O, B, B, B, O, O, O, O,
|
||||||
|
/* 10FD0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
/* 10FE0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
/* 10FF0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
|
||||||
/* Brahmi */
|
/* Brahmi */
|
||||||
|
|
||||||
/* 11000 */ VMPst, VMAbv, VMPst, CS, CS, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11000 */ VMPst, VMAbv, VMPst, CS, CS, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
@ -516,7 +639,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 110A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 110A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 110B0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VPst, VPst, H, CMBlw, O, O, O, O, O,
|
/* 110B0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VPst, VPst, H, CMBlw, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11100u 3904
|
#define use_offset_0x11100u 4624
|
||||||
|
|
||||||
|
|
||||||
/* Chakma */
|
/* Chakma */
|
||||||
|
@ -524,7 +647,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11100 */ VMAbv, VMAbv, VMAbv, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11100 */ VMAbv, VMAbv, VMAbv, 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,
|
/* 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, CMAbv, O, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11140 */ O, O, O, O, B, VPst, VPst, B, 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 */
|
||||||
|
@ -540,7 +663,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 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, VPre, VMAbv,
|
/* 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, B, O, O, O, O, O,
|
||||||
|
|
||||||
/* Sinhala Archaic Numbers */
|
/* Sinhala Archaic Numbers */
|
||||||
|
|
||||||
|
@ -554,7 +677,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11220 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPst, VPst, VBlw,
|
/* 11220 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPst, VPst, VBlw,
|
||||||
/* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv, O, O, O, O, O, O, VMAbv, O,
|
/* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv, O, O, O, O, O, O, VMAbv, O,
|
||||||
|
|
||||||
#define use_offset_0x11280u 4224
|
#define use_offset_0x11280u 4944
|
||||||
|
|
||||||
|
|
||||||
/* Multani */
|
/* Multani */
|
||||||
|
@ -577,12 +700,12 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11310 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11310 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11320 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
/* 11320 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
||||||
/* 11330 */ B, O, B, B, O, B, B, B, B, B, O, CMBlw, CMBlw, B, VPst, VPst,
|
/* 11330 */ B, O, B, B, O, B, B, B, B, B, O, CMBlw, CMBlw, B, VPst, VPst,
|
||||||
/* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPst, VPst, HVM, O, O,
|
/* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPre, VPre, HVM, O, O,
|
||||||
/* 11350 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, B, B,
|
/* 11350 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, B, B,
|
||||||
/* 11360 */ B, B, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
|
/* 11360 */ B, B, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
|
||||||
/* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
|
/* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11400u 4472
|
#define use_offset_0x11400u 5192
|
||||||
|
|
||||||
|
|
||||||
/* Newa */
|
/* Newa */
|
||||||
|
@ -601,11 +724,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11480 */ O, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11480 */ O, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11490 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11490 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 114A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 114A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 114B0 */ VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VPre, VAbv, VPst, VPst, VPst, VPst, VMAbv,
|
/* 114B0 */ VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VPre, VAbv, VPre, VPre, VPst, VPre, VMAbv,
|
||||||
/* 114C0 */ VMAbv, VMAbv, H, CMBlw, B, O, O, O, O, O, O, O, O, O, O, O,
|
/* 114C0 */ VMAbv, VMAbv, H, CMBlw, B, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
/* 114D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
/* 114D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11580u 4696
|
#define use_offset_0x11580u 5416
|
||||||
|
|
||||||
|
|
||||||
/* Siddham */
|
/* Siddham */
|
||||||
|
@ -613,7 +736,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11580 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11580 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11590 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11590 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 115A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, VPst,
|
/* 115A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, VPst,
|
||||||
/* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPst, VPst, VPst, VMAbv, VMAbv, VMPst, H,
|
/* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, VPre, VPre, VMAbv, VMAbv, VMPst, H,
|
||||||
/* 115C0 */ CMBlw, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 115C0 */ CMBlw, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
/* 115D0 */ O, O, O, O, O, O, O, O, B, B, B, B, VBlw, VBlw, O, O,
|
/* 115D0 */ O, O, O, O, O, O, O, O, B, B, B, B, VBlw, VBlw, O, O,
|
||||||
/* 115E0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 115E0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||||
|
@ -645,10 +768,10 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
|
|
||||||
/* 11700 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
/* 11700 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
/* 11710 */ B, B, B, B, B, B, B, B, B, B, B, O, O, MBlw, MPre, MAbv,
|
/* 11710 */ B, B, B, B, B, B, B, B, B, B, B, O, O, MBlw, MPre, MAbv,
|
||||||
/* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VAbv, O, O, O, O,
|
/* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VMAbv, O, O, O, O,
|
||||||
/* 11730 */ B, B, B, B, B, B, B, B, B, B, B, B, O, O, O, O,
|
/* 11730 */ B, B, B, B, B, B, B, B, B, B, B, B, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x11800u 5144
|
#define use_offset_0x11800u 5864
|
||||||
|
|
||||||
|
|
||||||
/* Dogra */
|
/* Dogra */
|
||||||
|
@ -658,7 +781,7 @@ 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_0x11900u 5208
|
#define use_offset_0x11900u 5928
|
||||||
|
|
||||||
|
|
||||||
/* Dives Akuru */
|
/* Dives Akuru */
|
||||||
|
@ -666,11 +789,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
||||||
/* 11900 */ B, B, B, B, B, B, B, O, O, B, O, O, B, B, B, B,
|
/* 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,
|
/* 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,
|
/* 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,
|
/* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, O, VPre, VPre, O, O, VMAbv, VMAbv, VPst, H, R,
|
||||||
/* 11940 */ MPst, R, MBlw, CMBlw, O, O, O, O, O, O, O, O, O, O, O, O,
|
/* 11940 */ MPst, R, MPst, 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,
|
/* 11950 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
#define use_offset_0x119a0u 5304
|
#define use_offset_0x119a0u 6024
|
||||||
|
|
||||||
|
|
||||||
/* Nandinagari */
|
/* Nandinagari */
|
||||||
|
@ -698,7 +821,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 5560
|
#define use_offset_0x11c00u 6280
|
||||||
|
|
||||||
|
|
||||||
/* Bhaiksuki */
|
/* Bhaiksuki */
|
||||||
|
@ -719,7 +842,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 5744
|
#define use_offset_0x11d00u 6464
|
||||||
|
|
||||||
|
|
||||||
/* Masaram Gondi */
|
/* Masaram Gondi */
|
||||||
|
@ -739,7 +862,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 5920
|
#define use_offset_0x11ee0u 6640
|
||||||
|
|
||||||
|
|
||||||
/* Makasar */
|
/* Makasar */
|
||||||
|
@ -747,7 +870,132 @@ 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: 5944; occupancy: 74% */
|
#define use_offset_0x13430u 6664
|
||||||
|
|
||||||
|
|
||||||
|
/* Egyptian Hieroglyph Format Controls */
|
||||||
|
|
||||||
|
/* 13430 */ H, H, H, H, H, H, H, O,
|
||||||
|
|
||||||
|
#define use_offset_0x16b00u 6672
|
||||||
|
|
||||||
|
|
||||||
|
/* Pahawh Hmong */
|
||||||
|
|
||||||
|
/* 16B00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16B30 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O,
|
||||||
|
|
||||||
|
#define use_offset_0x16f00u 6728
|
||||||
|
|
||||||
|
|
||||||
|
/* Miao */
|
||||||
|
|
||||||
|
/* 16F00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16F10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16F20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16F30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 16F40 */ B, B, B, B, B, B, B, B, B, B, B, O, O, O, O, CMBlw,
|
||||||
|
/* 16F50 */ IND, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw,
|
||||||
|
/* 16F60 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw,
|
||||||
|
/* 16F70 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw,
|
||||||
|
/* 16F80 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, O, O, O, O, O, O, O, VMBlw,
|
||||||
|
/* 16F90 */ VMBlw, VMBlw, VMBlw, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x16fe0u 6880
|
||||||
|
|
||||||
|
|
||||||
|
/* Ideographic Symbols and Punctuation */
|
||||||
|
|
||||||
|
/* 16FE0 */ O, O, O, O, B, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x18b00u 6888
|
||||||
|
|
||||||
|
|
||||||
|
/* Khitan Small Script */
|
||||||
|
|
||||||
|
/* 18B00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18B90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18BA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18BB0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18BC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18BD0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18BE0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18BF0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18C90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18CA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18CB0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18CC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 18CD0 */ B, B, B, B, B, B, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x1bc00u 7360
|
||||||
|
|
||||||
|
|
||||||
|
/* Duployan */
|
||||||
|
|
||||||
|
/* 1BC00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1BC10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1BC20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1BC30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1BC40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1BC50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1BC60 */ B, B, B, B, B, B, B, B, B, B, B, O, O, O, O, O,
|
||||||
|
/* 1BC70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
||||||
|
/* 1BC80 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
||||||
|
/* 1BC90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, CMBlw, CMBlw, O,
|
||||||
|
|
||||||
|
#define use_offset_0x1e100u 7520
|
||||||
|
|
||||||
|
|
||||||
|
/* Nyiakeng Puachue Hmong */
|
||||||
|
|
||||||
|
/* 1E100 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E120 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
||||||
|
/* 1E130 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, B, B, B, B, B, B, B, O, O,
|
||||||
|
/* 1E140 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, B, B,
|
||||||
|
|
||||||
|
#define use_offset_0x1e2c0u 7600
|
||||||
|
|
||||||
|
|
||||||
|
/* Wancho */
|
||||||
|
|
||||||
|
/* 1E2C0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E2D0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E2E0 */ B, B, B, B, B, B, B, B, B, B, B, B, VMAbv, VMAbv, VMAbv, VMAbv,
|
||||||
|
/* 1E2F0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
#define use_offset_0x1e900u 7664
|
||||||
|
|
||||||
|
|
||||||
|
/* Adlam */
|
||||||
|
|
||||||
|
/* 1E900 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E920 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E930 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||||
|
/* 1E940 */ B, B, B, B, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, B, O, O, O, O,
|
||||||
|
/* 1E950 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||||
|
|
||||||
|
}; /* Table items: 7760; occupancy: 76% */
|
||||||
|
|
||||||
USE_TABLE_ELEMENT_TYPE
|
USE_TABLE_ELEMENT_TYPE
|
||||||
hb_use_get_category (hb_codepoint_t u)
|
hb_use_get_category (hb_codepoint_t u)
|
||||||
|
@ -757,13 +1005,16 @@ hb_use_get_category (hb_codepoint_t u)
|
||||||
case 0x0u:
|
case 0x0u:
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x0028u, 0x003Fu)) return use_table[u - 0x0028u + use_offset_0x0028u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x0028u, 0x003Fu)) return use_table[u - 0x0028u + use_offset_0x0028u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x00A0u, 0x00D7u)) return use_table[u - 0x00A0u + use_offset_0x00a0u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x00A0u, 0x00D7u)) return use_table[u - 0x00A0u + use_offset_0x00a0u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x0640u, 0x0647u)) return use_table[u - 0x0640u + use_offset_0x0640u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x07C8u, 0x07FFu)) return use_table[u - 0x07C8u + use_offset_0x07c8u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x0840u, 0x085Fu)) return use_table[u - 0x0840u + use_offset_0x0840u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x0900u, 0x0DF7u)) return use_table[u - 0x0900u + use_offset_0x0900u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x0900u, 0x0DF7u)) return use_table[u - 0x0900u + use_offset_0x0900u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x0F18u, 0x0FC7u)) return use_table[u - 0x0F18u + use_offset_0x0f18u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x0F00u, 0x0FC7u)) return use_table[u - 0x0F00u + use_offset_0x0f00u];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1u:
|
case 0x1u:
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x1000u, 0x109Fu)) return use_table[u - 0x1000u + use_offset_0x1000u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x1000u, 0x109Fu)) return use_table[u - 0x1000u + use_offset_0x1000u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x1700u, 0x17EFu)) return use_table[u - 0x1700u + use_offset_0x1700u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x1700u, 0x18AFu)) return use_table[u - 0x1700u + use_offset_0x1700u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x1900u, 0x1A9Fu)) return use_table[u - 0x1900u + use_offset_0x1900u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x1900u, 0x1A9Fu)) return use_table[u - 0x1900u + use_offset_0x1900u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x1B00u, 0x1C4Fu)) return use_table[u - 0x1B00u + use_offset_0x1b00u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x1B00u, 0x1C4Fu)) return use_table[u - 0x1B00u + use_offset_0x1b00u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x1CD0u, 0x1CFFu)) return use_table[u - 0x1CD0u + use_offset_0x1cd0u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x1CD0u, 0x1CFFu)) return use_table[u - 0x1CD0u + use_offset_0x1cd0u];
|
||||||
|
@ -775,6 +1026,7 @@ hb_use_get_category (hb_codepoint_t u)
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x2060u, 0x2087u)) return use_table[u - 0x2060u + use_offset_0x2060u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x2060u, 0x2087u)) return use_table[u - 0x2060u + use_offset_0x2060u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x20F0u, 0x20F7u)) return use_table[u - 0x20F0u + use_offset_0x20f0u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x20F0u, 0x20F7u)) return use_table[u - 0x20F0u + use_offset_0x20f0u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x25C8u, 0x25CFu)) return use_table[u - 0x25C8u + use_offset_0x25c8u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x25C8u, 0x25CFu)) return use_table[u - 0x25C8u + use_offset_0x25c8u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x2D30u, 0x2D7Fu)) return use_table[u - 0x2D30u + use_offset_0x2d30u];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xAu:
|
case 0xAu:
|
||||||
|
@ -784,10 +1036,16 @@ hb_use_get_category (hb_codepoint_t u)
|
||||||
|
|
||||||
case 0x10u:
|
case 0x10u:
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x10A00u, 0x10A4Fu)) return use_table[u - 0x10A00u + use_offset_0x10a00u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x10A00u, 0x10A4Fu)) return use_table[u - 0x10A00u + use_offset_0x10a00u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AE7u)) return use_table[u - 0x10AC0u + use_offset_0x10ac0u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return use_table[u - 0x10B80u + use_offset_0x10b80u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10D00u, 0x10D3Fu)) return use_table[u - 0x10D00u + use_offset_0x10d00u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10E80u, 0x10EB7u)) return use_table[u - 0x10E80u + use_offset_0x10e80u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10F30u, 0x10F57u)) return use_table[u - 0x10F30u + use_offset_0x10f30u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x10FB0u, 0x110BFu)) return use_table[u - 0x10FB0u + use_offset_0x10fb0u];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x11u:
|
case 0x11u:
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11000u, 0x110BFu)) return use_table[u - 0x11000u + use_offset_0x11000u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x10FB0u, 0x110BFu)) return use_table[u - 0x10FB0u + use_offset_0x10fb0u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11100u, 0x1123Fu)) return use_table[u - 0x11100u + use_offset_0x11100u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11100u, 0x1123Fu)) return use_table[u - 0x11100u + use_offset_0x11100u];
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11280u, 0x11377u)) return use_table[u - 0x11280u + use_offset_0x11280u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11280u, 0x11377u)) return use_table[u - 0x11280u + use_offset_0x11280u];
|
||||||
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];
|
||||||
|
@ -800,6 +1058,30 @@ hb_use_get_category (hb_codepoint_t u)
|
||||||
if (hb_in_range<hb_codepoint_t> (u, 0x11EE0u, 0x11EF7u)) return use_table[u - 0x11EE0u + use_offset_0x11ee0u];
|
if (hb_in_range<hb_codepoint_t> (u, 0x11EE0u, 0x11EF7u)) return use_table[u - 0x11EE0u + use_offset_0x11ee0u];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x13u:
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x13430u, 0x13437u)) return use_table[u - 0x13430u + use_offset_0x13430u];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x16u:
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x16B00u, 0x16B37u)) return use_table[u - 0x16B00u + use_offset_0x16b00u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x16F00u, 0x16F97u)) return use_table[u - 0x16F00u + use_offset_0x16f00u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x16FE0u, 0x16FE7u)) return use_table[u - 0x16FE0u + use_offset_0x16fe0u];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x18u:
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x18B00u, 0x18CD7u)) return use_table[u - 0x18B00u + use_offset_0x18b00u];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x1Bu:
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x1BC00u, 0x1BC9Fu)) return use_table[u - 0x1BC00u + use_offset_0x1bc00u];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x1Eu:
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x1E100u, 0x1E14Fu)) return use_table[u - 0x1E100u + use_offset_0x1e100u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x1E2C0u, 0x1E2FFu)) return use_table[u - 0x1E2C0u + use_offset_0x1e2c0u];
|
||||||
|
if (hb_in_range<hb_codepoint_t> (u, 0x1E900u, 0x1E95Fu)) return use_table[u - 0x1E900u + use_offset_0x1e900u];
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -320,7 +320,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
||||||
switch (buffer->cur (1).codepoint)
|
switch (buffer->cur (1).codepoint)
|
||||||
{
|
{
|
||||||
case 0x0DCAu: case 0x0DD9u: case 0x0DDAu: case 0x0DDCu:
|
case 0x0DCAu: case 0x0DD9u: case 0x0DDAu: case 0x0DDCu:
|
||||||
case 0x0DDDu:
|
case 0x0DDDu: case 0x0DDEu:
|
||||||
matched = true;
|
matched = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -341,6 +341,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
||||||
|
|
||||||
/* Unicode-6.1 additions */
|
/* Unicode-6.1 additions */
|
||||||
case HB_SCRIPT_CHAKMA:
|
case HB_SCRIPT_CHAKMA:
|
||||||
|
case HB_SCRIPT_MIAO:
|
||||||
case HB_SCRIPT_SHARADA:
|
case HB_SCRIPT_SHARADA:
|
||||||
case HB_SCRIPT_TAKRI:
|
case HB_SCRIPT_TAKRI:
|
||||||
|
|
||||||
|
@ -359,6 +360,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
||||||
|
|
||||||
/* Unicode-8.0 additions */
|
/* Unicode-8.0 additions */
|
||||||
case HB_SCRIPT_AHOM:
|
case HB_SCRIPT_AHOM:
|
||||||
|
case HB_SCRIPT_MULTANI:
|
||||||
|
|
||||||
/* Unicode-9.0 additions */
|
/* Unicode-9.0 additions */
|
||||||
//case HB_SCRIPT_ADLAM:
|
//case HB_SCRIPT_ADLAM:
|
||||||
|
@ -376,10 +378,15 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
||||||
case HB_SCRIPT_GUNJALA_GONDI:
|
case HB_SCRIPT_GUNJALA_GONDI:
|
||||||
//case HB_SCRIPT_HANIFI_ROHINGYA:
|
//case HB_SCRIPT_HANIFI_ROHINGYA:
|
||||||
case HB_SCRIPT_MAKASAR:
|
case HB_SCRIPT_MAKASAR:
|
||||||
|
case HB_SCRIPT_MEDEFAIDRIN:
|
||||||
|
case HB_SCRIPT_OLD_SOGDIAN:
|
||||||
//case HB_SCRIPT_SOGDIAN:
|
//case HB_SCRIPT_SOGDIAN:
|
||||||
|
|
||||||
/* Unicode-12.0 additions */
|
/* Unicode-12.0 additions */
|
||||||
|
case HB_SCRIPT_ELYMAIC:
|
||||||
case HB_SCRIPT_NANDINAGARI:
|
case HB_SCRIPT_NANDINAGARI:
|
||||||
|
case HB_SCRIPT_NYIAKENG_PUACHUE_HMONG:
|
||||||
|
case HB_SCRIPT_WANCHO:
|
||||||
|
|
||||||
/* Unicode-13.0 additions */
|
/* Unicode-13.0 additions */
|
||||||
case HB_SCRIPT_CHORASMIAN:
|
case HB_SCRIPT_CHORASMIAN:
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
# Override values For Indic_Positional_Category
|
||||||
|
# Not derivable
|
||||||
|
# Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
|
||||||
|
# Updated for Unicode 10.0 by Andrew Glass 2017-07-25
|
||||||
|
# Ammended for Unicode 10.0 by Andrew Glass 2018-09-21
|
||||||
|
# Updated for L2/19-083 by Andrew Glass 2019-05-06
|
||||||
|
# Updated for Unicode 12.1 by Andrew Glass 2019-05-30
|
||||||
|
# Updated for Unicode 13.0 by Andrew Glass 2020-07-28
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
# OVERRIDES TO ASSIGNED VALUES
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Bottom
|
||||||
|
0F72 ; Bottom # Mn TIBETAN VOWEL SIGN I # Not really below, but need to override to fit into Universal model
|
||||||
|
0F7A..0F7D ; Bottom # Mn [4] TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN OO # Not really below, but need to override to fit into Universal model
|
||||||
|
0F80 ; Bottom # Mn TIBETAN VOWEL SIGN REVERSED I # Not really below, but need to override to fit into Universal model
|
||||||
|
A9BF ; Bottom # Mc JAVANESE CONSONANT SIGN CAKRA
|
||||||
|
11127..11129; Bottom # Mn [3] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN II
|
||||||
|
1112D ; Bottom # Mn CHAKMA VOWEL SIGN AI
|
||||||
|
11130 ; Bottom # Mn CHAKMA VOWEL SIGN OI
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Left
|
||||||
|
1C29 ; Left # Mc LEPCHA VOWEL SIGN OO # Reduced from Top_And_Left
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Right
|
||||||
|
A9BE ; Right # Mc JAVANESE CONSONANT SIGN PENGKAL # Reduced from Bottom_And_Right
|
||||||
|
10A0C ; Right # Mn KHAROSHTHI VOWEL LENGTH MARK # Follows vowels and precedes vowel modifiers
|
||||||
|
11942 ; Right # Mc DIVES AKURU MEDIAL RA # Reduced from Bottom_And_Right
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Top
|
||||||
|
0F74 ; Top # Mn TIBETAN VOWEL SIGN U # Not really above, but need to override to fit into Universal model
|
||||||
|
1A18 ; Top # Mn BUGINESE VOWEL SIGN U # Workaround to allow below to occur before above by treating all below marks as above
|
||||||
|
AA35 ; Top # Mn CHAM CONSONANT SIGN
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Top_And_Right
|
||||||
|
0E33 ; Top_And_Right # Lo THAI CHARACTER SARA AM # IMC has Right, which seems to be a mistake.
|
||||||
|
0EB3 ; Top_And_Right # Lo LAO VOWEL SIGN AM # IMC has Right, which seems to be a mistake.
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
# VALUES NOT ASSIGNED IN Indic_Positional_Category
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Bottom
|
||||||
|
0859..085B ; Bottom # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
|
||||||
|
18A9 ; Bottom # Mn MONGOLIAN LETTER ALI GALI DAGALGA
|
||||||
|
10AE5 ; Bottom # Mn MANICHAEAN ABBREVIATION MARK ABOVE # Not really bottom, but here for ccc to control
|
||||||
|
10AE6 ; Bottom # Mn MANICHAEAN ABBREVIATION MARK BELOW
|
||||||
|
10F46..10F47 ; Bottom # Mn [2] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING TWO DOTS BELOW
|
||||||
|
10F48..10F4A ; Bottom # Mn [3] SOGDIAN COMBINING DOT ABOVE..SOGDIAN COMBINING CURVE ABOVE # Overriden to below because ccc-based Normalization controls order
|
||||||
|
10F4B ; Bottom # Mn SOGDIAN COMBINING CURVE BELOW
|
||||||
|
10F4C ; Bottom # Mn SOGDIAN COMBINING HOOK ABOVE # Overriden to below because ccc-based Normalization controls order
|
||||||
|
10F4D..10F50 ; Bottom # Mn [4] SOGDIAN COMBINING HOOK BELOW..SOGDIAN COMBINING STROKE BELOW
|
||||||
|
16F4F ; Bottom # Mn MIAO SIGN CONSONANT MODIFIER BAR
|
||||||
|
16F51..16F87 ; Bottom # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
|
||||||
|
16F8F..16F92 ; Bottom # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Left
|
||||||
|
103C ; Left # Mc MYANMAR CONSONANT SIGN MEDIAL RA
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Top
|
||||||
|
07EB..07F3 ; Top # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
|
||||||
|
07FD ; Top # Mn NKO DANTAYALAN # Not really top, but assigned here to allow ccc to control mark order
|
||||||
|
1885..1886 ; Top # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
|
||||||
|
10EAB..10EAC ; Top # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
|
||||||
|
1E944..1E94A ; Top # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
|
||||||
|
10D24..10D27 ; Top # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
|
||||||
|
16B30..16B36 ; Top # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
|
||||||
|
1E130..1E136 ; Top # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||||
|
1E2EC..1E2EF ; Top # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=Overstruck
|
||||||
|
1BC9D..1BC9E ; Overstruck # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
# Deliberately suppressed
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Positional_Category=NA
|
||||||
|
180B..180D ; NA # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||||
|
2D7F ; NA # Mn TIFINAGH CONSONANT JOINER
|
|
@ -80,7 +80,7 @@
|
||||||
0D91 0DDA ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN DIGA KOMBUVA
|
0D91 0DDA ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN DIGA KOMBUVA
|
||||||
0D91 0DDC ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
|
0D91 0DDC ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
|
||||||
0D91 0DDD ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
|
0D91 0DDD ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
|
||||||
0D91 0DDD ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
|
0D91 0DDE ; # SINHALA LETTER EYANNA, SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
|
||||||
0D94 0DDF ; # SINHALA LETTER OYANNA, SINHALA VOWEL SIGN GAYANUKITTA
|
0D94 0DDF ; # SINHALA LETTER OYANNA, SINHALA VOWEL SIGN GAYANUKITTA
|
||||||
11005 11038 ; # BRAHMI LETTER A, BRAHMI VOWEL SIGN AA
|
11005 11038 ; # BRAHMI LETTER A, BRAHMI VOWEL SIGN AA
|
||||||
1100B 1103E ; # BRAHMI LETTER VOCALIC R, BRAHMI VOWEL SIGN VOCALIC R
|
1100B 1103E ; # BRAHMI LETTER VOCALIC R, BRAHMI VOWEL SIGN VOCALIC R
|
||||||
|
|
|
@ -0,0 +1,207 @@
|
||||||
|
# Override values For Indic_Syllabic_Category
|
||||||
|
# Not derivable
|
||||||
|
# Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
|
||||||
|
# Updated for Unicode 10.0 by Andrew Glass 2017-07-25
|
||||||
|
# Updated for Unicode 12.1 by Andrew Glass 2019-05-24
|
||||||
|
# Updated for Unicode 13.0 by Andrew Glass 2020-07-28
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# OVERRIDES TO ASSIGNED VALUES
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Bindu
|
||||||
|
193A ; Bindu # Mn LIMBU SIGN KEMPHRENG
|
||||||
|
AA29 ; Bindu # Mn CHAM VOWEL SIGN AA
|
||||||
|
10A0D ; Bindu # Mn KHAROSHTHI SIGN DOUBLE RING BELOW
|
||||||
|
1172B ; Bindu # Mn AHOM SIGN KILLER
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Consonant
|
||||||
|
0840..0858 ; Consonant # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
|
||||||
|
0F00..0F01 ; Consonant # Lo [2] TIBETAN SYLLABLE OM..TIBETAN MARK GTER YIG MGO TRUNCATED
|
||||||
|
0F04..0F06 ; Consonant # Po TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK CARET YIG MGO PHUR SHAD MA
|
||||||
|
19C1..19C7 ; Consonant # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B # Reassigned to avoid clustering with a base consonant
|
||||||
|
25CC ; Consonant # So DOTTED CIRCLE
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Consonant_Dead
|
||||||
|
0F7F ; Consonant_Dead # Mc TIBETAN SIGN RNAM BCAD # reassigned so that visarga will form an independent cluster
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Consonant_Final
|
||||||
|
0F35 ; Consonant_Final # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
|
||||||
|
0F37 ; Consonant_Final # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
|
||||||
|
0FC6 ; Consonant_Final # Mn TIBETAN SYMBOL PADMA GDAN
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Consonant_Final_Modifier
|
||||||
|
1C36 ; Consonant_Final_Modifier # Mn LEPCHA SIGN RAN
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Gemination_Mark
|
||||||
|
11134 ; Gemination_Mark # Mc CHAKMA MAAYYAA
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Nukta
|
||||||
|
0F71 ; Nukta # Mn TIBETAN VOWEL SIGN AA # Reassigned to get this before an above vowel
|
||||||
|
10A38..10A3A ; Nukta # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Tone_Mark
|
||||||
|
A982 ; Tone_Mark # Mn JAVANESE SIGN LAYAR# Not a repha, because it does not reorder to front of cluster
|
||||||
|
1A7B..1A7C ; Tone_Mark # Mn [2] TAI THAM SIGN MAI SAM..TAI THAM SIGN KHUEN-LUE KARAN
|
||||||
|
1A7F ; Tone_Mark # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Vowel_Independent
|
||||||
|
AAB1 ; Vowel_Independent # Lo TAI VIET VOWEL AA
|
||||||
|
AABA ; Vowel_Independent # Lo TAI VIET VOWEL UA
|
||||||
|
AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
# VALUES NOT ASSIGNED IN Indic_Syllabic_Category
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Consonant
|
||||||
|
0800..0815 ; Consonant # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
|
||||||
|
1800 ; Consonant # Po MONGOLIAN BIRGA # Reassigned so that legacy Birga + MFVS sequences still work
|
||||||
|
1807 ; Consonant # Po MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
|
||||||
|
180A ; Consonant # Po MONGOLIAN NIRUGU
|
||||||
|
1820..1878 ; Consonant # Lo [88] MONGOLIAN LETTER A..MONGOLIAN LETTER CHA WITH TWO DOTS
|
||||||
|
1843 ; Consonant # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
|
||||||
|
2D30..2D67 ; Consonant # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
|
||||||
|
2D6F ; Consonant # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
|
||||||
|
10AC0..10AC7 ; Consonant # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
|
||||||
|
10AC9..10AE4 ; Consonant # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
|
||||||
|
10D00..10D23 ; Consonant # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
|
||||||
|
10E80..10EA9 ; Consonant # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
|
||||||
|
10EB0..10EB1 ; Consonant # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
|
||||||
|
10F30..10F45 ; Consonant # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
|
||||||
|
111DA ; Consonant # Lo SHARADA EKAM
|
||||||
|
#HIEROGLYPHS moved to new category
|
||||||
|
#13000..1342E ; Consonant # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
|
||||||
|
#For the Begin and End segment to be handled fully correctly, the cluster model needs to be modified.
|
||||||
|
#13437..13438 ; Consonant # Lo [2] EGYPTIAN HIEROGLYPH BEGIN SEGMENT..EGYPTIAN HIEROGLYPH END SEGMENT
|
||||||
|
16B00..16B2F ; Consonant # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
|
||||||
|
16F00..16F4A ; Consonant # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
|
||||||
|
16FE4 ; Consonant # Mn KHITAN SMALL SCRIPT FILLER
|
||||||
|
18B00..18CD5 ; Consonant # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
|
||||||
|
1BC00..1BC99 ; Consonant # Lo [139] DUPLOYAN LETTER H..DUPLOYAN AFFIX LOW ARROW
|
||||||
|
1E100..1E12C ; Consonant # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
|
||||||
|
1E137..1E13D ; Consonant # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
|
||||||
|
1E14E ; Consonant # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
|
||||||
|
1E14F ; Consonant # So NYIAKENG PUACHUE HMONG CIRCLED CA
|
||||||
|
1E2C0..1E2EB ; Consonant # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
|
||||||
|
1E900..1E921 ; Consonant # Lu [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
|
||||||
|
1E922..1E943 ; Consonant # Ll [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
|
||||||
|
1E94B ; Consonant # Lm ADLAM NASALIZATION MARK
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Consonant_Placeholder
|
||||||
|
1880..1884 ; Consonant_Placeholder # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Gemination_Mark
|
||||||
|
10D27 ; Gemination_Mark # Mn HANIFI ROHINGYA SIGN TASSI
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Modifying_Letter
|
||||||
|
FE00..FE0F ; Modifying_Letter # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16# Need to treat them as isolated bases so they don't merge with a cluster in invalid scenarios
|
||||||
|
16F50 ; Modifying_Letter # Lo MIAO LETTER NASALIZATION
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Nukta
|
||||||
|
0859..085B ; Nukta # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
|
||||||
|
0F39 ; Nukta # Mn TIBETAN MARK TSA -PHRU # NOW IN UNICODE 10.0
|
||||||
|
1885..1886 ; Nukta # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
|
||||||
|
18A9 ; Nukta # Mn MONGOLIAN LETTER ALI GALI DAGALGA
|
||||||
|
1B6B..1B73 ; Nukta # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
|
||||||
|
10AE5..10AE6 ; Nukta # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
|
||||||
|
16F4F ; Nukta # Mn MIAO SIGN CONSONANT MODIFIER BAR
|
||||||
|
1BC9D..1BC9E ; Nukta # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
|
||||||
|
1E944..1E94A ; Nukta # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Number
|
||||||
|
10D30..10D39 ; Number # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
|
||||||
|
10F51..10F54 ; Number # No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
|
||||||
|
1E140..1E149 ; Number # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
|
||||||
|
1E2F0..1E2F9 ; Number # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
|
||||||
|
1E950..1E959 ; Number # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Tone_Mark
|
||||||
|
07EB..07F3 ; Tone_Mark # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
|
||||||
|
07FD ; Tone_Mark # Mn NKO DANTAYALAN
|
||||||
|
0F86..0F87 ; Tone_Mark # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
|
||||||
|
17CF ; Tone_Mark # Mn KHMER SIGN AHSDA
|
||||||
|
10D24..10D26 ; Tone_Mark # Mn [3] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TANA
|
||||||
|
10F46..10F50 ; Tone_Mark # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
|
||||||
|
16B30..16B36 ; Tone_Mark # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
|
||||||
|
16F8F..16F92 ; Tone_Mark # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||||
|
1E130..1E136 ; Tone_Mark # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||||
|
1E2EC..1E2EF ; Tone_Mark # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Virama
|
||||||
|
2D7F ; Virama # Mn TIFINAGH CONSONANT JOINER
|
||||||
|
13430..13436 ; Virama # Cf [7] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH OVERLAY MIDDLE
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Vowel_Independent
|
||||||
|
AAB1 ; Vowel_Independent # Lo TAI VIET VOWEL AA
|
||||||
|
AABA ; Vowel_Independent # Lo TAI VIET VOWEL UA
|
||||||
|
AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# Indic_Syllabic_Category=Vowel_Dependent
|
||||||
|
0B55 ; Vowel_Dependent # Mn ORIYA SIGN OVERLINE
|
||||||
|
10EAB..10EAC ; Vowel_Dependent # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
|
||||||
|
16F51..16F87 ; Vowel_Dependent # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
# PROPERTIES NOT ASSIGNED IN Indic_Syllabic_Category
|
||||||
|
# ================================================
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# USE_Syllabic_Category=Hieroglyph
|
||||||
|
# 13000..1342E ; Hieroglyph # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# USE_Syllabic_Category=Hieroglyph_Joiner
|
||||||
|
# 13430..13436 ; Hieroglyph_Joiner # Cf EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH OVERLAY MIDDLE
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# USE_Syllabic_Category= Hieroglyph_Segment_Begin
|
||||||
|
# 13437 ; Hieroglyph_Segment_Begin # Cf EGYPTIAN HIEROGLYPH BEGIN SEGMENT
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# USE_Syllabic_Category= Hieroglyph_Segment_End
|
||||||
|
# 13438 ; Hieroglyph_Segment_End # Cf EGYPTIAN HIEROGLYPH END SEGMENT
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# eof
|
|
@ -21,7 +21,7 @@ hb-ot-tag-table.hh: gen-tag-table.py languagetags language-subtag-registry
|
||||||
./$^ > $@ || ($(RM) $@; false)
|
./$^ > $@ || ($(RM) $@; false)
|
||||||
hb-ucd-table.hh: gen-ucd-table.py ucd.nounihan.grouped.zip hb-common.h
|
hb-ucd-table.hh: gen-ucd-table.py ucd.nounihan.grouped.zip hb-common.h
|
||||||
./$^ > $@ || ($(RM) $@; false)
|
./$^ > $@ || ($(RM) $@; false)
|
||||||
hb-ot-shape-complex-use-table.cc: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
|
hb-ot-shape-complex-use-table.cc: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt ArabicShaping.txt Blocks.txt ms-use/IndicSyllabicCategory-Additional.txt ms-use/IndicPositionalCategory-Additional.txt
|
||||||
./$^ > $@ || ($(RM) $@; false)
|
./$^ > $@ || ($(RM) $@; false)
|
||||||
hb-ot-shape-complex-vowel-constraints.cc: gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt
|
hb-ot-shape-complex-vowel-constraints.cc: gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt
|
||||||
./$^ > $@ || ($(RM) $@; false)
|
./$^ > $@ || ($(RM) $@; false)
|
||||||
|
|
Loading…
Reference in New Issue