[USE] Support hieroglyph clusters

This commit is contained in:
David Corbett 2020-08-14 18:30:20 -04:00
parent 06f49fc8ae
commit faf09f5466
6 changed files with 365 additions and 238 deletions

View File

@ -38,8 +38,16 @@ headers.append (["UnicodeData.txt does not have a header."])
data = [{} for _ in files]
values = [{} for _ in files]
for i, f in enumerate (files):
extended = False
for line in f:
# TODO: https://github.com/MicrosoftDocs/typography-issues/issues/522
if extended and line.startswith ('# ') and line.find (';'):
line = line[2:]
elif 'USE_Syllabic_Category' in line:
extended = True
j = line.find ('#')
if j >= 0:
line = line[:j]
@ -176,6 +184,10 @@ property_names = [
'Number_Joiner',
'Number',
'Brahmi_Joining_Number',
'Hieroglyph',
'Hieroglyph_Joiner',
'Hieroglyph_Segment_Begin',
'Hieroglyph_Segment_End',
# Indic_Positional_Category
'Not_Applicable',
'Right',
@ -268,6 +280,14 @@ def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UGC, AJT):
return U in [0x11046, 0x1134D]
def is_HALANT_NUM(U, UISC, UGC, AJT):
return UISC == Number_Joiner
def is_HIEROGLYPH(U, UISC, UGC, AJT):
return UISC == Hieroglyph
def is_HIEROGLYPH_JOINER(U, UISC, UGC, AJT):
return UISC == Hieroglyph_Joiner
def is_HIEROGLYPH_SEGMENT_BEGIN(U, UISC, UGC, AJT):
return UISC == Hieroglyph_Segment_Begin
def is_HIEROGLYPH_SEGMENT_END(U, UISC, UGC, AJT):
return UISC == Hieroglyph_Segment_End
def is_ZWNJ(U, UISC, UGC, AJT):
return UISC == Non_Joiner
def is_ZWJ(U, UISC, UGC, AJT):
@ -316,6 +336,10 @@ use_mapping = {
'H': is_HALANT,
'HVM': is_HALANT_OR_VOWEL_MODIFIER,
'HN': is_HALANT_NUM,
'G': is_HIEROGLYPH,
'J': is_HIEROGLYPH_JOINER,
'SB': is_HIEROGLYPH_SEGMENT_BEGIN,
'SE': is_HIEROGLYPH_SEGMENT_END,
'ZWNJ': is_ZWNJ,
'ZWJ': is_ZWJ,
'WJ': is_Word_Joiner,

View File

@ -37,7 +37,7 @@
#line 39 "hb-ot-shape-complex-use-machine.hh"
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, 51u, 11u, 48u, 11u, 48u,
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,
23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u,
@ -45,29 +45,31 @@ static const unsigned char _use_syllable_machine_trans_keys[] = {
26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u,
23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 1u, 15u,
4u, 4u, 13u, 13u, 12u, 48u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u, 1u, 5u,
0
50u, 52u, 49u, 52u, 49u, 51u, 0
};
static const char _use_syllable_machine_key_spans[] = {
37, 15, 1, 37, 1, 49, 38, 38,
37, 15, 1, 37, 1, 52, 38, 38,
15, 1, 27, 26, 24, 23, 22, 2,
1, 25, 25, 25, 1, 25, 26, 26,
26, 27, 27, 27, 38, 48, 1, 1,
38, 2, 1, 38, 27, 26, 24, 23,
22, 2, 1, 25, 25, 25, 25, 26,
26, 26, 27, 27, 27, 38, 48, 15,
1, 1, 37, 48, 38, 2, 1, 5
1, 1, 37, 48, 38, 2, 1, 5,
3, 4, 3
};
static const short _use_syllable_machine_index_offsets[] = {
0, 38, 54, 56, 94, 96, 146, 185,
224, 240, 242, 270, 297, 322, 346, 369,
372, 374, 400, 426, 452, 454, 480, 507,
534, 561, 589, 617, 645, 684, 733, 735,
737, 776, 779, 781, 820, 848, 875, 900,
924, 947, 950, 952, 978, 1004, 1030, 1056,
1083, 1110, 1137, 1165, 1193, 1221, 1260, 1309,
1325, 1327, 1329, 1367, 1416, 1455, 1458, 1460
0, 38, 54, 56, 94, 96, 149, 188,
227, 243, 245, 273, 300, 325, 349, 372,
375, 377, 403, 429, 455, 457, 483, 510,
537, 564, 592, 620, 648, 687, 736, 738,
740, 779, 782, 784, 823, 851, 878, 903,
927, 950, 953, 955, 981, 1007, 1033, 1059,
1086, 1113, 1140, 1168, 1196, 1224, 1263, 1312,
1328, 1330, 1332, 1370, 1419, 1458, 1461, 1463,
1469, 1473, 1478
};
static const char _use_syllable_machine_indicies[] = {
@ -89,172 +91,174 @@ static const char _use_syllable_machine_indicies[] = {
20, 21, 22, 23, 24, 18, 25, 26,
27, 28, 29, 30, 10, 31, 32, 33,
10, 34, 35, 36, 37, 38, 39, 40,
13, 10, 42, 1, 41, 41, 43, 41,
41, 41, 41, 41, 41, 44, 45, 46,
47, 48, 49, 50, 44, 51, 9, 52,
53, 54, 55, 41, 56, 57, 58, 41,
41, 41, 41, 59, 60, 61, 62, 1,
41, 42, 1, 41, 41, 43, 41, 41,
41, 41, 41, 41, 44, 45, 46, 47,
48, 49, 50, 44, 51, 52, 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,
42, 63, 44, 45, 46, 47, 48, 41,
41, 41, 41, 41, 41, 53, 54, 55,
41, 56, 57, 58, 41, 41, 41, 41,
45, 60, 61, 62, 65, 41, 45, 46,
47, 48, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 56, 57, 58, 41,
41, 41, 41, 41, 60, 61, 62, 65,
41, 46, 47, 48, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 60, 61,
62, 41, 47, 48, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 60, 61,
62, 41, 48, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 60, 61, 62,
41, 60, 61, 41, 61, 41, 46, 47,
48, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 56, 57, 58, 41, 41,
41, 41, 41, 60, 61, 62, 65, 41,
46, 47, 48, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 57, 58,
41, 41, 41, 41, 41, 60, 61, 62,
65, 41, 46, 47, 48, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 58, 41, 41, 41, 41, 41, 60,
61, 62, 65, 41, 67, 66, 46, 47,
48, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 60, 61, 62, 65, 41,
45, 46, 47, 48, 41, 41, 41, 41,
41, 41, 53, 54, 55, 41, 56, 57,
58, 41, 41, 41, 41, 45, 60, 61,
62, 65, 41, 45, 46, 47, 48, 41,
41, 41, 41, 41, 41, 41, 54, 55,
41, 56, 57, 58, 41, 41, 41, 41,
45, 60, 61, 62, 65, 41, 45, 46,
47, 48, 41, 41, 41, 41, 41, 41,
41, 41, 55, 41, 56, 57, 58, 41,
41, 41, 41, 45, 60, 61, 62, 65,
41, 44, 45, 46, 47, 48, 41, 50,
44, 41, 41, 41, 53, 54, 55, 41,
56, 57, 58, 41, 41, 41, 41, 45,
60, 61, 62, 65, 41, 44, 45, 46,
47, 48, 41, 41, 44, 41, 41, 41,
53, 54, 55, 41, 56, 57, 58, 41,
41, 41, 41, 45, 60, 61, 62, 65,
41, 44, 45, 46, 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, 69, 68, 11,
70, 42, 1, 41, 41, 43, 41, 41,
41, 41, 41, 41, 44, 45, 46, 47,
48, 49, 50, 44, 51, 9, 52, 53,
54, 55, 41, 56, 57, 58, 41, 17,
71, 41, 59, 60, 61, 62, 1, 41,
17, 71, 72, 71, 72, 3, 6, 73,
73, 74, 73, 73, 73, 73, 73, 73,
18, 19, 20, 21, 22, 23, 24, 18,
25, 27, 27, 28, 29, 30, 73, 31,
32, 33, 73, 73, 73, 73, 37, 38,
39, 40, 6, 73, 18, 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, 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, 73, 73, 73, 73, 73, 73, 73,
38, 39, 40, 73, 21, 22, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73,
38, 39, 40, 73, 22, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 73, 73, 73, 73, 73, 38,
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,
29, 30, 73, 31, 32, 33, 73, 34,
35, 73, 37, 38, 39, 40, 6, 73,
3, 6, 73, 73, 74, 73, 73, 73,
73, 73, 73, 18, 19, 20, 21, 22,
23, 24, 18, 25, 26, 27, 28, 29,
30, 73, 31, 32, 33, 73, 73, 73,
73, 37, 38, 39, 40, 6, 73, 34,
35, 73, 35, 73, 9, 76, 76, 76,
9, 76, 0
13, 41, 10, 42, 10, 44, 1, 43,
43, 45, 43, 43, 43, 43, 43, 43,
46, 47, 48, 49, 50, 51, 52, 46,
53, 9, 54, 55, 56, 57, 43, 58,
59, 60, 43, 43, 43, 43, 61, 62,
63, 64, 1, 43, 44, 1, 43, 43,
45, 43, 43, 43, 43, 43, 43, 46,
47, 48, 49, 50, 51, 52, 46, 53,
54, 54, 55, 56, 57, 43, 58, 59,
60, 43, 43, 43, 43, 61, 62, 63,
64, 1, 43, 44, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
65, 66, 65, 44, 65, 46, 47, 48,
49, 50, 43, 43, 43, 43, 43, 43,
55, 56, 57, 43, 58, 59, 60, 43,
43, 43, 43, 47, 62, 63, 64, 67,
43, 47, 48, 49, 50, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 58,
59, 60, 43, 43, 43, 43, 43, 62,
63, 64, 67, 43, 48, 49, 50, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 62, 63, 64, 43, 49, 50, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 62, 63, 64, 43, 50, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43,
62, 63, 64, 43, 62, 63, 43, 63,
43, 48, 49, 50, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 58, 59,
60, 43, 43, 43, 43, 43, 62, 63,
64, 67, 43, 48, 49, 50, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 59, 60, 43, 43, 43, 43, 43,
62, 63, 64, 67, 43, 48, 49, 50,
43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 60, 43, 43, 43,
43, 43, 62, 63, 64, 67, 43, 69,
68, 48, 49, 50, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 43, 43,
43, 43, 43, 43, 43, 43, 62, 63,
64, 67, 43, 47, 48, 49, 50, 43,
43, 43, 43, 43, 43, 55, 56, 57,
43, 58, 59, 60, 43, 43, 43, 43,
47, 62, 63, 64, 67, 43, 47, 48,
49, 50, 43, 43, 43, 43, 43, 43,
43, 56, 57, 43, 58, 59, 60, 43,
43, 43, 43, 47, 62, 63, 64, 67,
43, 47, 48, 49, 50, 43, 43, 43,
43, 43, 43, 43, 43, 57, 43, 58,
59, 60, 43, 43, 43, 43, 47, 62,
63, 64, 67, 43, 46, 47, 48, 49,
50, 43, 52, 46, 43, 43, 43, 55,
56, 57, 43, 58, 59, 60, 43, 43,
43, 43, 47, 62, 63, 64, 67, 43,
46, 47, 48, 49, 50, 43, 43, 46,
43, 43, 43, 55, 56, 57, 43, 58,
59, 60, 43, 43, 43, 43, 47, 62,
63, 64, 67, 43, 46, 47, 48, 49,
50, 51, 52, 46, 43, 43, 43, 55,
56, 57, 43, 58, 59, 60, 43, 43,
43, 43, 47, 62, 63, 64, 67, 43,
44, 1, 43, 43, 45, 43, 43, 43,
43, 43, 43, 46, 47, 48, 49, 50,
51, 52, 46, 53, 43, 54, 55, 56,
57, 43, 58, 59, 60, 43, 43, 43,
43, 61, 62, 63, 64, 1, 43, 44,
65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 66, 65, 65,
65, 65, 65, 65, 65, 47, 48, 49,
50, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 58, 59, 60, 65, 65,
65, 65, 65, 62, 63, 64, 67, 65,
71, 70, 11, 72, 44, 1, 43, 43,
45, 43, 43, 43, 43, 43, 43, 46,
47, 48, 49, 50, 51, 52, 46, 53,
9, 54, 55, 56, 57, 43, 58, 59,
60, 43, 17, 73, 43, 61, 62, 63,
64, 1, 43, 17, 73, 74, 73, 74,
3, 6, 75, 75, 76, 75, 75, 75,
75, 75, 75, 18, 19, 20, 21, 22,
23, 24, 18, 25, 27, 27, 28, 29,
30, 75, 31, 32, 33, 75, 75, 75,
75, 37, 38, 39, 40, 6, 75, 18,
19, 20, 21, 22, 75, 75, 75, 75,
75, 75, 28, 29, 30, 75, 31, 32,
33, 75, 75, 75, 75, 19, 38, 39,
40, 77, 75, 19, 20, 21, 22, 75,
75, 75, 75, 75, 75, 75, 75, 75,
75, 31, 32, 33, 75, 75, 75, 75,
75, 38, 39, 40, 77, 75, 20, 21,
22, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 38, 39, 40, 75, 21,
22, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 38, 39, 40, 75, 22,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 38, 39, 40, 75, 38, 39,
75, 39, 75, 20, 21, 22, 75, 75,
75, 75, 75, 75, 75, 75, 75, 75,
31, 32, 33, 75, 75, 75, 75, 75,
38, 39, 40, 77, 75, 20, 21, 22,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 32, 33, 75, 75, 75,
75, 75, 38, 39, 40, 77, 75, 20,
21, 22, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 33, 75,
75, 75, 75, 75, 38, 39, 40, 77,
75, 20, 21, 22, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 75, 38, 39,
40, 77, 75, 19, 20, 21, 22, 75,
75, 75, 75, 75, 75, 28, 29, 30,
75, 31, 32, 33, 75, 75, 75, 75,
19, 38, 39, 40, 77, 75, 19, 20,
21, 22, 75, 75, 75, 75, 75, 75,
75, 29, 30, 75, 31, 32, 33, 75,
75, 75, 75, 19, 38, 39, 40, 77,
75, 19, 20, 21, 22, 75, 75, 75,
75, 75, 75, 75, 75, 30, 75, 31,
32, 33, 75, 75, 75, 75, 19, 38,
39, 40, 77, 75, 18, 19, 20, 21,
22, 75, 24, 18, 75, 75, 75, 28,
29, 30, 75, 31, 32, 33, 75, 75,
75, 75, 19, 38, 39, 40, 77, 75,
18, 19, 20, 21, 22, 75, 75, 18,
75, 75, 75, 28, 29, 30, 75, 31,
32, 33, 75, 75, 75, 75, 19, 38,
39, 40, 77, 75, 18, 19, 20, 21,
22, 23, 24, 18, 75, 75, 75, 28,
29, 30, 75, 31, 32, 33, 75, 75,
75, 75, 19, 38, 39, 40, 77, 75,
3, 6, 75, 75, 76, 75, 75, 75,
75, 75, 75, 18, 19, 20, 21, 22,
23, 24, 18, 25, 75, 27, 28, 29,
30, 75, 31, 32, 33, 75, 75, 75,
75, 37, 38, 39, 40, 6, 75, 3,
75, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 4, 75, 75,
75, 75, 75, 75, 75, 19, 20, 21,
22, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 31, 32, 33, 75, 75,
75, 75, 75, 38, 39, 40, 77, 75,
3, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 4, 78,
79, 75, 14, 75, 6, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 6, 78, 78, 78,
6, 78, 9, 75, 75, 75, 9, 75,
75, 75, 75, 75, 3, 6, 14, 75,
76, 75, 75, 75, 75, 75, 75, 18,
19, 20, 21, 22, 23, 24, 18, 25,
26, 27, 28, 29, 30, 75, 31, 32,
33, 75, 34, 35, 75, 37, 38, 39,
40, 6, 75, 3, 6, 75, 75, 76,
75, 75, 75, 75, 75, 75, 18, 19,
20, 21, 22, 23, 24, 18, 25, 26,
27, 28, 29, 30, 75, 31, 32, 33,
75, 75, 75, 75, 37, 38, 39, 40,
6, 75, 34, 35, 75, 35, 75, 9,
78, 78, 78, 9, 78, 81, 80, 41,
80, 41, 81, 80, 81, 80, 41, 80,
42, 80, 0
};
static const char _use_syllable_machine_trans_targs[] = {
@ -263,11 +267,12 @@ static const char _use_syllable_machine_trans_targs[] = {
59, 33, 36, 37, 38, 39, 40, 50,
51, 52, 60, 53, 47, 48, 49, 43,
44, 45, 61, 62, 63, 54, 41, 42,
5, 5, 7, 0, 10, 11, 12, 13,
14, 25, 26, 27, 28, 22, 23, 24,
17, 18, 19, 29, 15, 16, 5, 5,
9, 20, 5, 21, 5, 31, 5, 34,
5, 5, 3, 4, 5, 57
5, 64, 66, 5, 7, 0, 10, 11,
12, 13, 14, 25, 26, 27, 28, 22,
23, 24, 17, 18, 19, 29, 15, 16,
5, 5, 9, 20, 5, 21, 5, 31,
5, 34, 5, 5, 3, 4, 5, 57,
5, 65
};
static const char _use_syllable_machine_trans_actions[] = {
@ -276,11 +281,12 @@ static const char _use_syllable_machine_trans_actions[] = {
3, 0, 5, 5, 0, 0, 0, 5,
5, 5, 3, 3, 5, 5, 5, 5,
5, 5, 0, 0, 0, 3, 0, 0,
11, 12, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 14,
0, 0, 15, 0, 16, 0, 17, 0,
18, 19, 0, 0, 20, 0
11, 0, 0, 12, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0,
13, 14, 0, 0, 15, 0, 16, 0,
17, 0, 18, 19, 0, 0, 20, 0,
21, 0
};
static const char _use_syllable_machine_to_state_actions[] = {
@ -291,7 +297,8 @@ 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
};
static const char _use_syllable_machine_from_state_actions[] = {
@ -302,18 +309,20 @@ 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
};
static const short _use_syllable_machine_eof_trans[] = {
1, 3, 3, 6, 6, 0, 42, 42,
64, 64, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 67, 42, 42, 42,
42, 42, 42, 42, 42, 64, 69, 71,
42, 73, 73, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 77,
74, 74, 77, 74, 74, 74, 74, 77
1, 3, 3, 6, 6, 0, 44, 44,
66, 66, 44, 44, 44, 44, 44, 44,
44, 44, 44, 44, 69, 44, 44, 44,
44, 44, 44, 44, 44, 66, 71, 73,
44, 75, 75, 76, 76, 76, 76, 76,
76, 76, 76, 76, 76, 76, 76, 76,
76, 76, 76, 76, 76, 76, 76, 79,
76, 76, 79, 76, 76, 76, 76, 79,
81, 81, 81
};
static const int use_syllable_machine_start = 5;
@ -327,7 +336,7 @@ static const int use_syllable_machine_en_main = 5;
#line 160 "hb-ot-shape-complex-use-machine.rl"
#line 166 "hb-ot-shape-complex-use-machine.rl"
#define found_syllable(syllable_type) \
@ -369,7 +378,7 @@ find_syllables_use (hb_buffer_t *buffer)
unsigned int act;
int cs;
#line 373 "hb-ot-shape-complex-use-machine.hh"
#line 382 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@ -377,12 +386,12 @@ find_syllables_use (hb_buffer_t *buffer)
act = 0;
}
#line 203 "hb-ot-shape-complex-use-machine.rl"
#line 209 "hb-ot-shape-complex-use-machine.rl"
unsigned int syllable_serial = 1;
#line 386 "hb-ot-shape-complex-use-machine.hh"
#line 395 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
@ -396,7 +405,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
#line 400 "hb-ot-shape-complex-use-machine.hh"
#line 409 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@ -419,68 +428,72 @@ _eof_trans:
{te = p+1;}
break;
case 8:
#line 148 "hb-ot-shape-complex-use-machine.rl"
#line 153 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (independent_cluster); }}
break;
case 13:
#line 151 "hb-ot-shape-complex-use-machine.rl"
#line 156 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (standard_cluster); }}
break;
case 11:
#line 155 "hb-ot-shape-complex-use-machine.rl"
#line 161 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
case 9:
#line 156 "hb-ot-shape-complex-use-machine.rl"
#line 162 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (non_cluster); }}
break;
case 14:
#line 149 "hb-ot-shape-complex-use-machine.rl"
#line 154 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
break;
case 15:
#line 150 "hb-ot-shape-complex-use-machine.rl"
#line 155 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (sakot_terminated_cluster); }}
break;
case 12:
#line 151 "hb-ot-shape-complex-use-machine.rl"
#line 156 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (standard_cluster); }}
break;
case 17:
#line 152 "hb-ot-shape-complex-use-machine.rl"
#line 157 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
break;
case 16:
#line 153 "hb-ot-shape-complex-use-machine.rl"
#line 158 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (numeral_cluster); }}
break;
case 18:
#line 154 "hb-ot-shape-complex-use-machine.rl"
#line 159 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (symbol_cluster); }}
break;
case 21:
#line 160 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (hieroglyph_cluster); }}
break;
case 19:
#line 155 "hb-ot-shape-complex-use-machine.rl"
#line 161 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
case 20:
#line 156 "hb-ot-shape-complex-use-machine.rl"
#line 162 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (non_cluster); }}
break;
case 1:
#line 151 "hb-ot-shape-complex-use-machine.rl"
#line 156 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
break;
case 4:
#line 155 "hb-ot-shape-complex-use-machine.rl"
#line 161 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
break;
case 2:
#line 1 "NONE"
{ switch( act ) {
case 8:
case 9:
{{p = ((te))-1;} found_syllable (broken_cluster); }
break;
case 9:
case 10:
{{p = ((te))-1;} found_syllable (non_cluster); }
break;
}
@ -489,16 +502,16 @@ _eof_trans:
case 3:
#line 1 "NONE"
{te = p+1;}
#line 155 "hb-ot-shape-complex-use-machine.rl"
{act = 8;}
#line 161 "hb-ot-shape-complex-use-machine.rl"
{act = 9;}
break;
case 10:
#line 1 "NONE"
{te = p+1;}
#line 156 "hb-ot-shape-complex-use-machine.rl"
{act = 9;}
#line 162 "hb-ot-shape-complex-use-machine.rl"
{act = 10;}
break;
#line 502 "hb-ot-shape-complex-use-machine.hh"
#line 515 "hb-ot-shape-complex-use-machine.hh"
}
_again:
@ -507,7 +520,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
#line 511 "hb-ot-shape-complex-use-machine.hh"
#line 524 "hb-ot-shape-complex-use-machine.hh"
}
if ( ++p != pe )
@ -523,7 +536,7 @@ _again:
}
#line 208 "hb-ot-shape-complex-use-machine.rl"
#line 214 "hb-ot-shape-complex-use-machine.rl"
}

View File

@ -68,6 +68,10 @@ S = 19; # SYM
CS = 43; # CONS_WITH_STACKER
HVM = 44; # HALANT_OR_VOWEL_MODIFIER
Sk = 48; # SAKOT
G = 49; # HIEROGLYPH
J = 50; # HIEROGLYPH_JOINER
SB = 51; # HIEROGLYPH_SEGMENT_BEGIN
SE = 52; # HIEROGLYPH_SEGMENT_END
FAbv = 24; # CONS_FINAL_ABOVE
FBlw = 25; # CONS_FINAL_BELOW
@ -141,6 +145,7 @@ broken_cluster =
number_joiner_terminated_cluster = N number_joiner_terminated_cluster_tail;
numeral_cluster = N numeral_cluster_tail?;
symbol_cluster = (S | GB) symbol_cluster_tail?;
hieroglyph_cluster = SB+ | SB* G SE* (J SE* (G SE*)?)*;
independent_cluster = (IND | O | Rsv | WJ);
other = any;
@ -152,6 +157,7 @@ main := |*
number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
numeral_cluster => { found_syllable (numeral_cluster); };
symbol_cluster => { found_syllable (symbol_cluster); };
hieroglyph_cluster => { found_syllable (hieroglyph_cluster); };
broken_cluster => { found_syllable (broken_cluster); };
other => { found_syllable (non_cluster); };
*|;

View File

@ -41,16 +41,20 @@
#pragma GCC diagnostic ignored "-Wunused-macros"
#define B USE_B /* BASE */
#define CS USE_CS /* CONS_WITH_STACKER */
#define G USE_G /* HIEROGLYPH */
#define GB USE_GB /* BASE_OTHER */
#define H USE_H /* HALANT */
#define HN USE_HN /* HALANT_NUM */
#define HVM USE_HVM /* HALANT_OR_VOWEL_MODIFIER */
#define IND USE_IND /* BASE_IND */
#define J USE_J /* HIEROGLYPH_JOINER */
#define N USE_N /* BASE_NUM */
#define O USE_O /* OTHER */
#define R USE_R /* REPHA */
#define Rsv USE_Rsv /* Reserved */
#define S USE_S /* SYM */
#define SB USE_SB /* HIEROGLYPH_SEGMENT_BEGIN */
#define SE USE_SE /* HIEROGLYPH_SEGMENT_END */
#define SUB USE_SUB /* CONS_SUB */
#define Sk USE_Sk /* SAKOT */
#define WJ USE_WJ /* Word_Joiner */
@ -870,14 +874,84 @@ 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,
/* 11EF0 */ B, B, GB, VAbv, VBlw, VPre, VPst, O,
#define use_offset_0x13430u 6664
#define use_offset_0x13000u 6664
/* Egyptian Hieroglyphs */
/* 13000 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13010 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13020 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13030 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13040 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13050 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13060 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13070 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13080 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13090 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 130A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 130B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 130C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 130D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 130E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 130F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13100 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13110 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13120 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13130 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13140 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13150 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13160 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13170 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13180 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13190 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 131A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 131B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 131C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 131D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 131E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 131F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13200 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13210 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13220 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13230 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13240 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13250 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13260 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13270 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13280 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13290 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 132A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 132B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 132C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 132D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 132E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 132F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13300 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13310 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13320 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13330 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13340 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13350 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13360 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13370 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13380 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13390 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 133A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 133B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 133C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 133D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 133E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 133F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13400 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13410 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
/* 13420 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, O,
/* Egyptian Hieroglyph Format Controls */
/* 13430 */ H, H, H, H, H, H, H, O,
/* 13430 */ J, J, J, J, J, J, J, SB, SE, O, O, O, O, O, O, O,
#define use_offset_0x16b00u 6672
#define use_offset_0x16b00u 7752
/* Pahawh Hmong */
@ -887,7 +961,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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
#define use_offset_0x16f00u 7808
/* Miao */
@ -903,14 +977,14 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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
#define use_offset_0x16fe0u 7960
/* Ideographic Symbols and Punctuation */
/* 16FE0 */ O, O, O, O, B, O, O, O,
#define use_offset_0x18b00u 6888
#define use_offset_0x18b00u 7968
/* Khitan Small Script */
@ -946,7 +1020,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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
#define use_offset_0x1bc00u 8440
/* Duployan */
@ -962,7 +1036,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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
#define use_offset_0x1e100u 8600
/* Nyiakeng Puachue Hmong */
@ -973,7 +1047,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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
#define use_offset_0x1e2c0u 8680
/* Wancho */
@ -983,7 +1057,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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
#define use_offset_0x1e900u 8744
/* Adlam */
@ -995,7 +1069,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 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% */
}; /* Table items: 8840; occupancy: 79% */
USE_TABLE_ELEMENT_TYPE
hb_use_get_category (hb_codepoint_t u)
@ -1059,7 +1133,7 @@ hb_use_get_category (hb_codepoint_t u)
break;
case 0x13u:
if (hb_in_range<hb_codepoint_t> (u, 0x13430u, 0x13437u)) return use_table[u - 0x13430u + use_offset_0x13430u];
if (hb_in_range<hb_codepoint_t> (u, 0x13000u, 0x1343Fu)) return use_table[u - 0x13000u + use_offset_0x13000u];
break;
case 0x16u:
@ -1090,16 +1164,20 @@ hb_use_get_category (hb_codepoint_t u)
#undef B
#undef CS
#undef G
#undef GB
#undef H
#undef HN
#undef HVM
#undef IND
#undef J
#undef N
#undef O
#undef R
#undef Rsv
#undef S
#undef SB
#undef SE
#undef SUB
#undef Sk
#undef WJ

View File

@ -194,6 +194,7 @@ enum use_syllable_type_t {
use_number_joiner_terminated_cluster,
use_numeral_cluster,
use_symbol_cluster,
use_hieroglyph_cluster,
use_broken_cluster,
use_non_cluster,
};
@ -275,6 +276,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
{
case use_independent_cluster:
case use_symbol_cluster:
case use_hieroglyph_cluster:
case use_non_cluster:
/* These don't join. Nothing to do. */
last_form = _USE_NONE;

View File

@ -72,6 +72,10 @@ enum use_category_t {
USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */
USE_Sk = 48, /* SAKOT */
USE_G = 49, /* HIEROGLYPH */
USE_J = 50, /* HIEROGLYPH_JOINER */
USE_SB = 51, /* HIEROGLYPH_SEGMENT_BEGIN */
USE_SE = 52, /* HIEROGLYPH_SEGMENT_END */
USE_FAbv = 24, /* CONS_FINAL_ABOVE */
USE_FBlw = 25, /* CONS_FINAL_BELOW */