1#![allow(
2 dead_code,
3 non_upper_case_globals,
4 unused_assignments,
5 unused_parens,
6 while_true,
7 clippy::assign_op_pattern,
8 clippy::collapsible_if,
9 clippy::comparison_chain,
10 clippy::double_parens,
11 clippy::unnecessary_cast,
12 clippy::single_match,
13 clippy::never_loop
14)]
15
16use core::cell::Cell;
17
18use super::buffer::{hb_buffer_t, HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE};
19use super::hb_glyph_info_t;
20use super::machine_cursor::MachineCursor;
21use super::ot_layout::*;
22use super::ot_shaper_use::category;
23
24static _use_syllable_machine_actions: [i8; 47] = [
25 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1,
26 14, 1, 15, 1, 16, 1, 17, 1, 18, 1, 19, 1, 20, 1, 21, 0, 0,
27];
28static _use_syllable_machine_key_offsets: [i16; 127] = [
29 0, 2, 39, 67, 93, 107, 119, 126, 132, 137, 140, 142, 143, 154, 164, 173, 175, 183, 200, 216,
30 231, 245, 265, 278, 297, 315, 336, 361, 363, 376, 379, 381, 407, 421, 433, 440, 446, 451, 454,
31 456, 457, 468, 478, 487, 489, 497, 514, 530, 545, 559, 579, 592, 611, 629, 650, 675, 677, 679,
32 692, 694, 696, 724, 750, 764, 776, 783, 789, 794, 797, 799, 800, 811, 821, 830, 832, 840, 857,
33 873, 888, 902, 922, 935, 954, 972, 993, 1018, 1020, 1022, 1035, 1061, 1075, 1087, 1094, 1100,
34 1105, 1108, 1110, 1111, 1122, 1132, 1141, 1143, 1151, 1168, 1184, 1199, 1213, 1233, 1246, 1265,
35 1283, 1304, 1329, 1331, 1344, 1346, 1348, 1379, 1382, 1384, 1386, 1391, 1395, 1398, 1402, 0, 0,
36];
37static _use_syllable_machine_trans_keys: [u8; 1434] = [
38 49, 51, 0, 1, 4, 5, 11, 12, 13, 14, 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
39 37, 38, 39, 41, 42, 43, 45, 46, 47, 49, 51, 53, 44, 48, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28,
40 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 45, 46, 47, 53, 44, 48, 11, 12, 14, 22, 23, 24,
41 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 45, 46, 47, 53, 44, 48, 1, 14, 23, 24,
42 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24,
43 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, 14, 45, 46, 14, 46, 14, 14, 24,
44 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 39,
45 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, 23, 24, 25, 26, 33, 34, 35, 37,
46 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14,
47 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 35, 37, 38, 39, 45,
48 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53,
49 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 29, 33, 34, 35,
50 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47,
51 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 11,
52 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 45, 46, 47, 53, 44, 48,
53 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 41, 42, 14, 42, 11, 12, 14, 22,
54 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 45, 46, 47, 48, 53, 1, 14,
55 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48,
56 14, 24, 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, 14, 45, 46, 14, 46, 14,
57 14, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, 46, 47, 48, 14, 24, 25,
58 26, 39, 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, 23, 24, 25, 26, 33, 34,
59 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48,
60 53, 14, 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 35, 37, 38,
61 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47,
62 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 29, 33,
63 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45,
64 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48,
65 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 44, 45, 46, 47,
66 48, 53, 1, 14, 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 13, 14, 4, 14, 11, 12,
67 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 47,
68 48, 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 44, 45,
69 46, 47, 48, 53, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37,
70 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47,
71 14, 45, 46, 14, 46, 14, 14, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45,
72 46, 47, 48, 14, 24, 25, 26, 39, 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22,
73 23, 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37,
74 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23,
75 24, 25, 26, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35,
76 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22,
77 23, 24, 25, 26, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33,
78 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37,
79 38, 39, 45, 46, 47, 48, 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37,
80 38, 39, 44, 45, 46, 47, 48, 53, 1, 14, 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47,
81 48, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 45, 46, 47,
82 53, 44, 48, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38,
83 39, 45, 46, 47, 48, 14, 24, 25, 26, 45, 46, 47, 14, 25, 26, 45, 46, 47, 14, 26, 45, 46, 47, 14,
84 45, 46, 14, 46, 14, 14, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 14, 24, 25, 26, 38, 39, 45, 46,
85 47, 48, 14, 24, 25, 26, 39, 45, 46, 47, 48, 1, 14, 14, 24, 25, 26, 45, 46, 47, 48, 14, 22, 23,
86 24, 25, 26, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 33, 34, 35, 37, 38,
87 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 14, 23, 24,
88 25, 26, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 28, 29, 33, 34, 35, 37,
89 38, 39, 45, 46, 47, 48, 53, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23,
90 24, 25, 26, 29, 33, 34, 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 33, 34,
91 35, 37, 38, 39, 45, 46, 47, 48, 53, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 37, 38,
92 39, 45, 46, 47, 48, 53, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38,
93 39, 45, 46, 47, 53, 44, 48, 1, 14, 1, 14, 23, 24, 25, 26, 37, 38, 39, 45, 46, 47, 48, 4, 14,
94 13, 14, 1, 5, 11, 12, 13, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38,
95 39, 41, 42, 45, 46, 47, 53, 44, 48, 14, 41, 42, 14, 42, 1, 5, 14, 50, 52, 54, 55, 14, 49, 50,
96 51, 14, 50, 52, 14, 50, 52, 54, 11, 12, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
97 35, 37, 38, 39, 41, 42, 45, 46, 47, 49, 51, 53, 44, 48, 0, 0,
98];
99static _use_syllable_machine_single_lengths: [i8; 127] = [
100 2, 35, 26, 24, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, 20, 13, 19, 18, 21,
101 23, 2, 13, 3, 2, 26, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, 20, 13, 19, 18,
102 21, 25, 2, 2, 13, 2, 2, 28, 26, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14, 20,
103 13, 19, 18, 21, 25, 2, 2, 13, 24, 14, 12, 7, 6, 5, 3, 2, 1, 11, 10, 9, 2, 8, 17, 16, 15, 14,
104 20, 13, 19, 18, 21, 23, 2, 13, 2, 2, 29, 3, 2, 2, 5, 2, 3, 4, 28, 0, 0,
105];
106static _use_syllable_machine_range_lengths: [i8; 127] = [
107 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
108 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,
109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
111];
112static _use_syllable_machine_index_offsets: [i16; 127] = [
113 0, 3, 40, 68, 94, 109, 122, 130, 137, 143, 147, 150, 152, 164, 175, 185, 188, 197, 215, 232,
114 248, 263, 284, 298, 318, 337, 359, 384, 387, 401, 405, 408, 435, 450, 463, 471, 478, 484, 488,
115 491, 493, 505, 516, 526, 529, 538, 556, 573, 589, 604, 625, 639, 659, 678, 700, 726, 729, 732,
116 746, 749, 752, 781, 808, 823, 836, 844, 851, 857, 861, 864, 866, 878, 889, 899, 902, 911, 929,
117 946, 962, 977, 998, 1012, 1032, 1051, 1073, 1099, 1102, 1105, 1119, 1145, 1160, 1173, 1181,
118 1188, 1194, 1198, 1201, 1203, 1215, 1226, 1236, 1239, 1248, 1266, 1283, 1299, 1314, 1335, 1349,
119 1369, 1388, 1410, 1435, 1438, 1452, 1455, 1458, 1489, 1493, 1496, 1499, 1505, 1509, 1513, 1518,
120 0, 0,
121];
122static _use_syllable_machine_cond_targs: [i8; 1675] = [
123 120, 0, 1, 2, 31, 58, 60, 88, 89, 114, 1, 116, 102, 90, 91, 92, 93, 106, 108, 109, 110, 88,
124 111, 103, 104, 105, 97, 98, 99, 117, 118, 119, 94, 95, 96, 120, 124, 113, 112, 1, 3, 4, 1, 17,
125 5, 6, 7, 8, 21, 23, 24, 25, 3, 26, 18, 19, 20, 12, 13, 14, 29, 30, 9, 10, 11, 28, 27, 1, 3, 4,
126 1, 17, 5, 6, 7, 8, 21, 23, 24, 25, 3, 26, 18, 19, 20, 12, 13, 14, 9, 10, 11, 28, 27, 1, 3, 1,
127 5, 6, 7, 8, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, 12, 13, 14, 9, 10, 11, 15, 1, 1, 6,
128 7, 8, 9, 10, 11, 1, 1, 7, 8, 9, 10, 11, 1, 1, 8, 9, 10, 11, 1, 1, 9, 10, 1, 1, 10, 1, 1, 1, 1,
129 6, 7, 8, 12, 13, 14, 9, 10, 11, 15, 1, 1, 6, 7, 8, 13, 14, 9, 10, 11, 15, 1, 1, 6, 7, 8, 14, 9,
130 10, 11, 15, 1, 16, 1, 1, 1, 6, 7, 8, 9, 10, 11, 15, 1, 1, 17, 5, 6, 7, 8, 18, 19, 20, 12, 13,
131 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6,
132 7, 8, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8, 20, 12, 13, 14, 9, 10, 11, 15, 5,
133 1, 22, 1, 17, 5, 6, 7, 8, 23, 24, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 1, 5, 6, 7, 8,
134 12, 13, 14, 9, 10, 11, 15, 5, 1, 22, 1, 17, 5, 6, 7, 8, 24, 18, 19, 20, 12, 13, 14, 9, 10, 11,
135 15, 5, 1, 22, 1, 17, 5, 6, 7, 8, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 22, 1, 17, 5, 6,
136 7, 8, 21, 23, 24, 18, 19, 20, 12, 13, 14, 9, 10, 11, 15, 5, 1, 3, 4, 1, 17, 5, 6, 7, 8, 21, 23,
137 24, 25, 26, 18, 19, 20, 12, 13, 14, 9, 10, 11, 28, 27, 1, 3, 1, 1, 3, 1, 5, 6, 7, 8, 12, 13,
138 14, 9, 10, 11, 15, 1, 1, 29, 30, 1, 1, 30, 1, 31, 32, 1, 45, 33, 34, 35, 36, 49, 51, 52, 53,
139 31, 54, 46, 47, 48, 40, 41, 42, 55, 37, 38, 39, 56, 57, 1, 31, 1, 33, 34, 35, 36, 40, 41, 42,
140 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 40, 41, 42, 37, 38, 39, 43, 1, 1, 34, 35, 36, 37, 38,
141 39, 1, 1, 35, 36, 37, 38, 39, 1, 1, 36, 37, 38, 39, 1, 1, 37, 38, 1, 1, 38, 1, 1, 1, 1, 34, 35,
142 36, 40, 41, 42, 37, 38, 39, 43, 1, 1, 34, 35, 36, 41, 42, 37, 38, 39, 43, 1, 1, 34, 35, 36, 42,
143 37, 38, 39, 43, 1, 44, 1, 1, 1, 34, 35, 36, 37, 38, 39, 43, 1, 1, 45, 33, 34, 35, 36, 46, 47,
144 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 46, 47, 48, 40, 41, 42, 37, 38, 39,
145 43, 33, 1, 1, 33, 34, 35, 36, 47, 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 48,
146 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, 35, 36, 51, 52, 46, 47, 48, 40, 41, 42,
147 37, 38, 39, 43, 33, 1, 1, 33, 34, 35, 36, 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34,
148 35, 36, 52, 46, 47, 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, 35, 36, 46, 47,
149 48, 40, 41, 42, 37, 38, 39, 43, 33, 1, 50, 1, 45, 33, 34, 35, 36, 49, 51, 52, 46, 47, 48, 40,
150 41, 42, 37, 38, 39, 43, 33, 1, 31, 32, 1, 45, 33, 34, 35, 36, 49, 51, 52, 53, 54, 46, 47, 48,
151 40, 41, 42, 55, 37, 38, 39, 56, 57, 1, 31, 1, 1, 31, 1, 1, 31, 1, 33, 34, 35, 36, 40, 41, 42,
152 37, 38, 39, 43, 1, 59, 1, 1, 58, 1, 1, 61, 62, 1, 75, 63, 64, 65, 66, 79, 81, 82, 83, 61, 84,
153 76, 77, 78, 70, 71, 72, 29, 30, 85, 67, 68, 69, 86, 87, 1, 61, 62, 1, 75, 63, 64, 65, 66, 79,
154 81, 82, 83, 61, 84, 76, 77, 78, 70, 71, 72, 85, 67, 68, 69, 86, 87, 1, 61, 1, 63, 64, 65, 66,
155 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 70, 71, 72, 67, 68, 69, 73, 1, 1, 64, 65,
156 66, 67, 68, 69, 1, 1, 65, 66, 67, 68, 69, 1, 1, 66, 67, 68, 69, 1, 1, 67, 68, 1, 1, 68, 1, 1,
157 1, 1, 64, 65, 66, 70, 71, 72, 67, 68, 69, 73, 1, 1, 64, 65, 66, 71, 72, 67, 68, 69, 73, 1, 1,
158 64, 65, 66, 72, 67, 68, 69, 73, 1, 74, 1, 1, 1, 64, 65, 66, 67, 68, 69, 73, 1, 1, 75, 63, 64,
159 65, 66, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 76, 77, 78, 70, 71,
160 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63,
161 64, 65, 66, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 80, 1, 75, 63, 64, 65, 66, 81, 82, 76, 77,
162 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 1, 63, 64, 65, 66, 70, 71, 72, 67, 68, 69, 73, 63, 1,
163 80, 1, 75, 63, 64, 65, 66, 82, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 80, 1, 75, 63,
164 64, 65, 66, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 80, 1, 75, 63, 64, 65, 66, 79, 81,
165 82, 76, 77, 78, 70, 71, 72, 67, 68, 69, 73, 63, 1, 61, 62, 1, 75, 63, 64, 65, 66, 79, 81, 82,
166 83, 84, 76, 77, 78, 70, 71, 72, 85, 67, 68, 69, 86, 87, 1, 61, 1, 1, 61, 1, 1, 61, 1, 63, 64,
167 65, 66, 70, 71, 72, 67, 68, 69, 73, 1, 88, 89, 1, 102, 90, 91, 92, 93, 106, 108, 109, 110, 88,
168 111, 103, 104, 105, 97, 98, 99, 94, 95, 96, 113, 112, 1, 88, 1, 90, 91, 92, 93, 97, 98, 99, 94,
169 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 97, 98, 99, 94, 95, 96, 100, 1, 1, 91, 92, 93, 94, 95,
170 96, 1, 1, 92, 93, 94, 95, 96, 1, 1, 93, 94, 95, 96, 1, 1, 94, 95, 1, 1, 95, 1, 1, 1, 1, 91, 92,
171 93, 97, 98, 99, 94, 95, 96, 100, 1, 1, 91, 92, 93, 98, 99, 94, 95, 96, 100, 1, 1, 91, 92, 93,
172 99, 94, 95, 96, 100, 1, 101, 1, 1, 1, 91, 92, 93, 94, 95, 96, 100, 1, 1, 102, 90, 91, 92, 93,
173 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 103, 104, 105, 97, 98,
174 99, 94, 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 1,
175 90, 91, 92, 93, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 107, 1, 102, 90, 91, 92, 93, 108, 109,
176 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 1, 90, 91, 92, 93, 97, 98, 99, 94, 95, 96,
177 100, 90, 1, 107, 1, 102, 90, 91, 92, 93, 109, 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90,
178 1, 107, 1, 102, 90, 91, 92, 93, 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 107, 1, 102,
179 90, 91, 92, 93, 106, 108, 109, 103, 104, 105, 97, 98, 99, 94, 95, 96, 100, 90, 1, 88, 89, 1,
180 102, 90, 91, 92, 93, 106, 108, 109, 110, 111, 103, 104, 105, 97, 98, 99, 94, 95, 96, 113, 112,
181 1, 88, 1, 1, 88, 1, 90, 91, 92, 93, 97, 98, 99, 94, 95, 96, 100, 1, 115, 1, 1, 114, 1, 1, 31,
182 31, 88, 89, 114, 1, 102, 90, 91, 92, 93, 106, 108, 109, 110, 88, 111, 103, 104, 105, 97, 98,
183 99, 117, 118, 94, 95, 96, 113, 112, 1, 1, 117, 118, 1, 1, 118, 1, 31, 31, 1, 1, 121, 122, 122,
184 123, 1, 1, 120, 121, 1, 1, 121, 122, 1, 1, 121, 122, 122, 1, 3, 4, 1, 17, 5, 6, 7, 8, 21, 23,
185 24, 25, 3, 26, 18, 19, 20, 12, 13, 14, 29, 30, 9, 10, 11, 120, 0, 28, 27, 1, 1, 1, 1, 1, 1, 1,
186 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
187 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
188 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
189 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
190];
191static _use_syllable_machine_cond_actions: [i8; 1675] = [
192 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 5, 0, 0, 23, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0, 35, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
195 35, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17,
196 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 35, 17, 0, 0, 35, 17, 0, 35, 17,
197 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0,
198 0, 0, 0, 35, 0, 17, 35, 17, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 0,
202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
203 0, 0, 0, 0, 35, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 17,
204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 17, 35, 0, 17, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0, 35, 17, 0, 0, 35, 17, 0, 35, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0,
207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0,
208 0, 29, 11, 0, 0, 29, 11, 0, 29, 11, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 9, 27, 11, 0, 0, 0, 0, 0, 0, 0, 29, 11,
210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
211 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
214 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
215 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
216 0, 0, 0, 29, 0, 7, 25, 0, 9, 27, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 15, 33, 0, 13,
217 31, 0, 0, 11, 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, 29, 0,
218 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0,
219 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0,
220 29, 11, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 29, 11, 0, 0, 29, 11, 0, 29, 11, 29, 11, 0, 0, 0, 0,
221 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 9,
222 27, 11, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0,
223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
224 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
225 0, 0, 0, 0, 29, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
226 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 11,
227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0,
228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 7, 25, 0, 9, 27, 0, 11, 0, 0, 0, 0, 0, 0, 0,
229 0, 0, 0, 0, 29, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,
230 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0,
231 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 39, 21, 0, 0, 39, 21, 0, 39, 21, 39,
232 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0,
233 0, 0, 39, 0, 21, 39, 21, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 39, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 21, 0,
239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 39, 0, 21, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 0, 0, 39, 0, 21, 39, 0, 21, 39, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 21, 0, 0, 39, 21, 0, 39, 0, 0, 41, 19, 0, 0, 0,
242 0, 37, 19, 0, 0, 37, 19, 0, 0, 37, 19, 0, 0, 0, 37, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 43, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
244 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 29, 29, 29, 29, 29,
245 29, 29, 29, 29, 29, 29, 29, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 25, 27, 29, 33, 31,
246 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
247 29, 25, 27, 29, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
248 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 37, 37, 37, 37, 35, 0, 0,
249];
250static _use_syllable_machine_to_state_actions: [i8; 127] = [
251 0, 1, 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,
252 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,
253 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,
254 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,
255];
256static _use_syllable_machine_from_state_actions: [i8; 127] = [
257 0, 3, 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,
258 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,
259 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,
260 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,
261];
262static _use_syllable_machine_eof_trans: [i16; 127] = [
263 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564,
264 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580,
265 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596,
266 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612,
267 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
268 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644,
269 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660,
270 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 0, 0,
271];
272static use_syllable_machine_start: i32 = 1;
273static use_syllable_machine_first_final: i32 = 1;
274static use_syllable_machine_error: i32 = -1;
275static use_syllable_machine_en_main: i32 = 1;
276#[derive(Clone, Copy)]
277pub enum SyllableType {
278 IndependentCluster,
279 ViramaTerminatedCluster,
280 SakotTerminatedCluster,
281 StandardCluster,
282 NumberJoinerTerminatedCluster,
283 NumeralCluster,
284 SymbolCluster,
285 HieroglyphCluster,
286 BrokenCluster,
287 NonCluster,
288}
289
290pub fn find_syllables(buffer: &mut hb_buffer_t) {
291 let mut cs = 0;
292 let infos = Cell::as_slice_of_cells(Cell::from_mut(&mut buffer.info));
293 let p0 = MachineCursor::new(infos, included);
294 let mut p = p0;
295 let mut ts = p0;
296 let mut te = p0;
297 let pe = p.end();
298 let eof = p.end();
299 let mut syllable_serial = 1u8;
300
301 // Please manually replace assignments of 0 to p, ts, and te
302 // to use p0 instead
303
304 macro_rules! found_syllable {
305 ($kind:expr) => {{
306 found_syllable(ts.index(), te.index(), &mut syllable_serial, $kind, infos);
307 }};
308 }
309
310 {
311 cs = (use_syllable_machine_start) as i32;
312 ts = p0;
313 te = p0;
314 }
315
316 {
317 let mut _klen = 0;
318 let mut _trans = 0;
319 let mut _keys: i32 = 0;
320 let mut _acts: i32 = 0;
321 let mut _nacts = 0;
322 let mut __have = 0;
323 '_resume: while (p != pe || p == eof) {
324 '_again: while (true) {
325 _acts = (_use_syllable_machine_from_state_actions[(cs) as usize]) as i32;
326 _nacts = (_use_syllable_machine_actions[(_acts) as usize]) as u32;
327 _acts += 1;
328 while (_nacts > 0) {
329 match (_use_syllable_machine_actions[(_acts) as usize]) {
330 1 => {
331 ts = p;
332 }
333
334 _ => {}
335 }
336 _nacts -= 1;
337 _acts += 1;
338 }
339 if (p == eof) {
340 {
341 if (_use_syllable_machine_eof_trans[(cs) as usize] > 0) {
342 {
343 _trans =
344 (_use_syllable_machine_eof_trans[(cs) as usize]) as u32 - 1;
345 }
346 }
347 }
348 } else {
349 {
350 _keys = (_use_syllable_machine_key_offsets[(cs) as usize]) as i32;
351 _trans = (_use_syllable_machine_index_offsets[(cs) as usize]) as u32;
352 _klen = (_use_syllable_machine_single_lengths[(cs) as usize]) as i32;
353 __have = 0;
354 if (_klen > 0) {
355 {
356 let mut _lower: i32 = _keys;
357 let mut _upper: i32 = _keys + _klen - 1;
358 let mut _mid: i32 = 0;
359 while (true) {
360 if (_upper < _lower) {
361 {
362 _keys += _klen;
363 _trans += (_klen) as u32;
364 break;
365 }
366 }
367 _mid = _lower + ((_upper - _lower) >> 1);
368 if ((infos[p.index()].get().use_category() as u8)
369 < _use_syllable_machine_trans_keys[(_mid) as usize])
370 {
371 _upper = _mid - 1;
372 } else if ((infos[p.index()].get().use_category() as u8)
373 > _use_syllable_machine_trans_keys[(_mid) as usize])
374 {
375 _lower = _mid + 1;
376 } else {
377 {
378 __have = 1;
379 _trans += (_mid - _keys) as u32;
380 break;
381 }
382 }
383 }
384 }
385 }
386 _klen = (_use_syllable_machine_range_lengths[(cs) as usize]) as i32;
387 if (__have == 0 && _klen > 0) {
388 {
389 let mut _lower: i32 = _keys;
390 let mut _upper: i32 = _keys + (_klen << 1) - 2;
391 let mut _mid: i32 = 0;
392 while (true) {
393 if (_upper < _lower) {
394 {
395 _trans += (_klen) as u32;
396 break;
397 }
398 }
399 _mid = _lower + (((_upper - _lower) >> 1) & !1);
400 if ((infos[p.index()].get().use_category() as u8)
401 < _use_syllable_machine_trans_keys[(_mid) as usize])
402 {
403 _upper = _mid - 2;
404 } else if ((infos[p.index()].get().use_category() as u8)
405 > _use_syllable_machine_trans_keys[(_mid + 1) as usize])
406 {
407 _lower = _mid + 2;
408 } else {
409 {
410 _trans += ((_mid - _keys) >> 1) as u32;
411 break;
412 }
413 }
414 }
415 }
416 }
417 }
418 }
419 cs = (_use_syllable_machine_cond_targs[(_trans) as usize]) as i32;
420 if (_use_syllable_machine_cond_actions[(_trans) as usize] != 0) {
421 {
422 _acts = (_use_syllable_machine_cond_actions[(_trans) as usize]) as i32;
423 _nacts = (_use_syllable_machine_actions[(_acts) as usize]) as u32;
424 _acts += 1;
425 while (_nacts > 0) {
426 match (_use_syllable_machine_actions[(_acts) as usize]) {
427 2 => {
428 te = p + 1;
429 }
430 3 => {
431 te = p + 1;
432 {
433 found_syllable!(SyllableType::ViramaTerminatedCluster);
434 }
435 }
436 4 => {
437 te = p + 1;
438 {
439 found_syllable!(SyllableType::SakotTerminatedCluster);
440 }
441 }
442 5 => {
443 te = p + 1;
444 {
445 found_syllable!(SyllableType::StandardCluster);
446 }
447 }
448 6 => {
449 te = p + 1;
450 {
451 found_syllable!(
452 SyllableType::NumberJoinerTerminatedCluster
453 );
454 }
455 }
456 7 => {
457 te = p + 1;
458 {
459 found_syllable!(SyllableType::NumeralCluster);
460 }
461 }
462 8 => {
463 te = p + 1;
464 {
465 found_syllable!(SyllableType::SymbolCluster);
466 }
467 }
468 9 => {
469 te = p + 1;
470 {
471 found_syllable!(SyllableType::HieroglyphCluster);
472 }
473 }
474 10 => {
475 te = p + 1;
476 {
477 found_syllable!(SyllableType::BrokenCluster);
478 buffer.scratch_flags |=
479 HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE;
480 }
481 }
482 11 => {
483 te = p + 1;
484 {
485 found_syllable!(SyllableType::NonCluster);
486 }
487 }
488 12 => {
489 te = p;
490 p = p - 1;
491 {
492 found_syllable!(SyllableType::ViramaTerminatedCluster);
493 }
494 }
495 13 => {
496 te = p;
497 p = p - 1;
498 {
499 found_syllable!(SyllableType::SakotTerminatedCluster);
500 }
501 }
502 14 => {
503 te = p;
504 p = p - 1;
505 {
506 found_syllable!(SyllableType::StandardCluster);
507 }
508 }
509 15 => {
510 te = p;
511 p = p - 1;
512 {
513 found_syllable!(
514 SyllableType::NumberJoinerTerminatedCluster
515 );
516 }
517 }
518 16 => {
519 te = p;
520 p = p - 1;
521 {
522 found_syllable!(SyllableType::NumeralCluster);
523 }
524 }
525 17 => {
526 te = p;
527 p = p - 1;
528 {
529 found_syllable!(SyllableType::SymbolCluster);
530 }
531 }
532 18 => {
533 te = p;
534 p = p - 1;
535 {
536 found_syllable!(SyllableType::HieroglyphCluster);
537 }
538 }
539 19 => {
540 te = p;
541 p = p - 1;
542 {
543 found_syllable!(SyllableType::BrokenCluster);
544 buffer.scratch_flags |=
545 HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE;
546 }
547 }
548 20 => {
549 te = p;
550 p = p - 1;
551 {
552 found_syllable!(SyllableType::NonCluster);
553 }
554 }
555 21 => {
556 p = (te) - 1;
557 {
558 found_syllable!(SyllableType::SymbolCluster);
559 }
560 }
561
562 _ => {}
563 }
564 _nacts -= 1;
565 _acts += 1;
566 }
567 }
568 }
569 break '_again;
570 }
571 if (p == eof) {
572 {
573 if (cs >= 1) {
574 break '_resume;
575 }
576 }
577 } else {
578 {
579 _acts = (_use_syllable_machine_to_state_actions[(cs) as usize]) as i32;
580 _nacts = (_use_syllable_machine_actions[(_acts) as usize]) as u32;
581 _acts += 1;
582 while (_nacts > 0) {
583 match (_use_syllable_machine_actions[(_acts) as usize]) {
584 0 => {
585 ts = p0;
586 }
587
588 _ => {}
589 }
590 _nacts -= 1;
591 _acts += 1;
592 }
593 p += 1;
594 continue '_resume;
595 }
596 }
597 break '_resume;
598 }
599 }
600}
601
602#[inline]
603fn found_syllable(
604 start: usize,
605 end: usize,
606 syllable_serial: &mut u8,
607 kind: SyllableType,
608 buffer: &[Cell<hb_glyph_info_t>],
609) {
610 for i: usize in start..end {
611 let mut glyph: hb_glyph_info_t = buffer[i].get();
612 glyph.set_syllable((*syllable_serial << 4) | kind as u8);
613 buffer[i].set(val:glyph);
614 }
615
616 *syllable_serial += 1;
617
618 if *syllable_serial == 16 {
619 *syllable_serial = 1;
620 }
621}
622
623fn not_ccs_default_ignorable(i: &hb_glyph_info_t) -> bool {
624 i.use_category() != category::CGJ
625}
626
627fn included(infos: &[Cell<hb_glyph_info_t>], i: usize) -> bool {
628 let glyph: hb_glyph_info_t = infos[i].get();
629 if !not_ccs_default_ignorable(&glyph) {
630 return false;
631 }
632 if glyph.use_category() == category::ZWNJ {
633 for glyph2: &Cell in &infos[i + 1..] {
634 if not_ccs_default_ignorable(&glyph2.get()) {
635 return !_hb_glyph_info_is_unicode_mark(&glyph2.get());
636 }
637 }
638 }
639 true
640}
641