1
2 #line 1 "hb-ot-shaper-use-machine.rl"
3 /*
4 * Copyright © 2015 Mozilla Foundation.
5 * Copyright © 2015 Google, Inc.
6 *
7 * This is part of HarfBuzz, a text shaping library.
8 *
9 * Permission is hereby granted, without written agreement and without
10 * license or royalty fees, to use, copy, modify, and distribute this
11 * software and its documentation for any purpose, provided that the
12 * above copyright notice and the following two paragraphs appear in
13 * all copies of this software.
14 *
15 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
16 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
17 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
18 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
19 * DAMAGE.
20 *
21 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
22 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
23 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
24 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
25 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
26 *
27 * Mozilla Author(s): Jonathan Kew
28 * Google Author(s): Behdad Esfahbod
29 */
30
31 #ifndef HB_OT_SHAPER_USE_MACHINE_HH
32 #define HB_OT_SHAPER_USE_MACHINE_HH
33
34 #include "hb.hh"
35
36 #include "hb-ot-shaper-syllabic.hh"
37
38 /* buffer var allocations */
39 #define use_category() ot_shaper_var_u8_category()
40
41 #define USE(Cat) use_syllable_machine_ex_##Cat
42
43 enum use_syllable_type_t {
44 use_virama_terminated_cluster,
45 use_sakot_terminated_cluster,
46 use_standard_cluster,
47 use_number_joiner_terminated_cluster,
48 use_numeral_cluster,
49 use_symbol_cluster,
50 use_hieroglyph_cluster,
51 use_broken_cluster,
52 use_non_cluster,
53 };
54
55
56 #line 57 "hb-ot-shaper-use-machine.hh"
57 #define use_syllable_machine_ex_B 1u
58 #define use_syllable_machine_ex_CGJ 6u
59 #define use_syllable_machine_ex_CMAbv 31u
60 #define use_syllable_machine_ex_CMBlw 32u
61 #define use_syllable_machine_ex_CS 43u
62 #define use_syllable_machine_ex_FAbv 24u
63 #define use_syllable_machine_ex_FBlw 25u
64 #define use_syllable_machine_ex_FMAbv 45u
65 #define use_syllable_machine_ex_FMBlw 46u
66 #define use_syllable_machine_ex_FMPst 47u
67 #define use_syllable_machine_ex_FPst 26u
68 #define use_syllable_machine_ex_G 49u
69 #define use_syllable_machine_ex_GB 5u
70 #define use_syllable_machine_ex_H 12u
71 #define use_syllable_machine_ex_HM 54u
72 #define use_syllable_machine_ex_HN 13u
73 #define use_syllable_machine_ex_HR 55u
74 #define use_syllable_machine_ex_HVM 53u
75 #define use_syllable_machine_ex_IS 44u
76 #define use_syllable_machine_ex_J 50u
77 #define use_syllable_machine_ex_MAbv 27u
78 #define use_syllable_machine_ex_MBlw 28u
79 #define use_syllable_machine_ex_MPre 30u
80 #define use_syllable_machine_ex_MPst 29u
81 #define use_syllable_machine_ex_N 4u
82 #define use_syllable_machine_ex_O 0u
83 #define use_syllable_machine_ex_R 18u
84 #define use_syllable_machine_ex_RK 56u
85 #define use_syllable_machine_ex_SB 51u
86 #define use_syllable_machine_ex_SE 52u
87 #define use_syllable_machine_ex_SMAbv 41u
88 #define use_syllable_machine_ex_SMBlw 42u
89 #define use_syllable_machine_ex_SUB 11u
90 #define use_syllable_machine_ex_Sk 48u
91 #define use_syllable_machine_ex_VAbv 33u
92 #define use_syllable_machine_ex_VBlw 34u
93 #define use_syllable_machine_ex_VMAbv 37u
94 #define use_syllable_machine_ex_VMBlw 38u
95 #define use_syllable_machine_ex_VMPre 23u
96 #define use_syllable_machine_ex_VMPst 39u
97 #define use_syllable_machine_ex_VPre 22u
98 #define use_syllable_machine_ex_VPst 35u
99 #define use_syllable_machine_ex_WJ 16u
100 #define use_syllable_machine_ex_ZWNJ 14u
101
102
103 #line 104 "hb-ot-shaper-use-machine.hh"
104 static const unsigned char _use_syllable_machine_trans_keys[] = {
105 49u, 51u, 0u, 56u, 11u, 56u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u,
106 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u,
107 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u,
108 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 56u,
109 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u,
110 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u,
111 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u,
112 1u, 14u, 1u, 48u, 14u, 14u, 13u, 14u, 4u, 14u, 11u, 56u, 11u, 56u, 1u, 53u,
113 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u,
114 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u,
115 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 14u,
116 1u, 48u, 14u, 14u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u,
117 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u,
118 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u,
119 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 56u, 14u, 42u,
120 14u, 42u, 1u, 5u, 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 56u, 0
121 };
122
123 static const char _use_syllable_machine_key_spans[] = {
124 3, 57, 46, 46, 53, 35, 34, 34,
125 34, 33, 33, 1, 35, 35, 35, 14,
126 35, 40, 40, 40, 40, 42, 40, 42,
127 42, 42, 46, 14, 48, 29, 29, 46,
128 53, 35, 34, 34, 34, 33, 33, 1,
129 35, 35, 35, 14, 35, 40, 40, 40,
130 40, 42, 40, 42, 42, 42, 46, 14,
131 14, 48, 1, 2, 11, 46, 46, 53,
132 35, 34, 34, 34, 33, 33, 1, 35,
133 35, 35, 14, 35, 40, 40, 40, 40,
134 42, 40, 42, 42, 42, 46, 14, 14,
135 48, 1, 46, 53, 35, 34, 34, 34,
136 33, 33, 1, 35, 35, 35, 14, 35,
137 40, 40, 40, 40, 42, 40, 42, 42,
138 42, 46, 14, 48, 11, 2, 56, 29,
139 29, 5, 42, 38, 39, 41, 46
140 };
141
142 static const short _use_syllable_machine_index_offsets[] = {
143 0, 4, 62, 109, 156, 210, 246, 281,
144 316, 351, 385, 419, 421, 457, 493, 529,
145 544, 580, 621, 662, 703, 744, 787, 828,
146 871, 914, 957, 1004, 1019, 1068, 1098, 1128,
147 1175, 1229, 1265, 1300, 1335, 1370, 1404, 1438,
148 1440, 1476, 1512, 1548, 1563, 1599, 1640, 1681,
149 1722, 1763, 1806, 1847, 1890, 1933, 1976, 2023,
150 2038, 2053, 2102, 2104, 2107, 2119, 2166, 2213,
151 2267, 2303, 2338, 2373, 2408, 2442, 2476, 2478,
152 2514, 2550, 2586, 2601, 2637, 2678, 2719, 2760,
153 2801, 2844, 2885, 2928, 2971, 3014, 3061, 3076,
154 3091, 3140, 3142, 3189, 3243, 3279, 3314, 3349,
155 3384, 3418, 3452, 3454, 3490, 3526, 3562, 3577,
156 3613, 3654, 3695, 3736, 3777, 3820, 3861, 3904,
157 3947, 3990, 4037, 4052, 4101, 4113, 4116, 4173,
158 4203, 4233, 4239, 4282, 4321, 4361, 4403
159 };
160
161 static const unsigned char _use_syllable_machine_indicies[] = {
162 1, 0, 2, 0, 3, 4, 5, 5,
163 6, 7, 5, 5, 5, 5, 5, 8,
164 9, 10, 11, 5, 5, 5, 12, 5,
165 5, 5, 13, 14, 15, 16, 17, 18,
166 19, 20, 21, 8, 22, 23, 24, 25,
167 5, 26, 27, 28, 5, 29, 30, 31,
168 32, 33, 34, 35, 32, 1, 5, 36,
169 5, 37, 5, 5, 35, 5, 39, 40,
170 38, 41, 38, 38, 38, 38, 38, 38,
171 38, 42, 43, 44, 45, 46, 47, 48,
172 49, 50, 39, 51, 52, 53, 54, 38,
173 55, 56, 57, 38, 58, 59, 38, 60,
174 61, 62, 63, 60, 38, 38, 38, 38,
175 64, 38, 38, 63, 38, 39, 40, 38,
176 41, 38, 38, 38, 38, 38, 38, 38,
177 42, 43, 44, 45, 46, 47, 48, 49,
178 50, 39, 51, 52, 53, 54, 38, 55,
179 56, 57, 38, 38, 38, 38, 60, 61,
180 62, 63, 60, 38, 38, 38, 38, 64,
181 38, 38, 63, 38, 39, 38, 38, 38,
182 38, 38, 38, 38, 38, 38, 38, 38,
183 38, 41, 38, 38, 38, 38, 38, 38,
184 38, 38, 43, 44, 45, 46, 38, 38,
185 38, 38, 38, 38, 38, 38, 38, 38,
186 55, 56, 57, 38, 38, 38, 38, 38,
187 61, 62, 63, 65, 38, 38, 38, 38,
188 43, 38, 41, 38, 38, 38, 38, 38,
189 38, 38, 38, 43, 44, 45, 46, 38,
190 38, 38, 38, 38, 38, 38, 38, 38,
191 38, 55, 56, 57, 38, 38, 38, 38,
192 38, 61, 62, 63, 65, 38, 41, 38,
193 38, 38, 38, 38, 38, 38, 38, 38,
194 44, 45, 46, 38, 38, 38, 38, 38,
195 38, 38, 38, 38, 38, 38, 38, 38,
196 38, 38, 38, 38, 38, 61, 62, 63,
197 38, 41, 38, 38, 38, 38, 38, 38,
198 38, 38, 38, 38, 45, 46, 38, 38,
199 38, 38, 38, 38, 38, 38, 38, 38,
200 38, 38, 38, 38, 38, 38, 38, 38,
201 61, 62, 63, 38, 41, 38, 38, 38,
202 38, 38, 38, 38, 38, 38, 38, 38,
203 46, 38, 38, 38, 38, 38, 38, 38,
204 38, 38, 38, 38, 38, 38, 38, 38,
205 38, 38, 38, 61, 62, 63, 38, 41,
206 38, 38, 38, 38, 38, 38, 38, 38,
207 38, 38, 38, 38, 38, 38, 38, 38,
208 38, 38, 38, 38, 38, 38, 38, 38,
209 38, 38, 38, 38, 38, 38, 61, 62,
210 38, 41, 38, 38, 38, 38, 38, 38,
211 38, 38, 38, 38, 38, 38, 38, 38,
212 38, 38, 38, 38, 38, 38, 38, 38,
213 38, 38, 38, 38, 38, 38, 38, 38,
214 38, 62, 38, 41, 38, 41, 38, 38,
215 38, 38, 38, 38, 38, 38, 38, 44,
216 45, 46, 38, 38, 38, 38, 38, 38,
217 38, 38, 38, 38, 55, 56, 57, 38,
218 38, 38, 38, 38, 61, 62, 63, 65,
219 38, 41, 38, 38, 38, 38, 38, 38,
220 38, 38, 38, 44, 45, 46, 38, 38,
221 38, 38, 38, 38, 38, 38, 38, 38,
222 38, 56, 57, 38, 38, 38, 38, 38,
223 61, 62, 63, 65, 38, 41, 38, 38,
224 38, 38, 38, 38, 38, 38, 38, 44,
225 45, 46, 38, 38, 38, 38, 38, 38,
226 38, 38, 38, 38, 38, 38, 57, 38,
227 38, 38, 38, 38, 61, 62, 63, 65,
228 38, 66, 38, 38, 38, 38, 38, 38,
229 38, 38, 38, 38, 38, 38, 41, 38,
230 41, 38, 38, 38, 38, 38, 38, 38,
231 38, 38, 44, 45, 46, 38, 38, 38,
232 38, 38, 38, 38, 38, 38, 38, 38,
233 38, 38, 38, 38, 38, 38, 38, 61,
234 62, 63, 65, 38, 41, 38, 38, 38,
235 38, 38, 38, 38, 42, 43, 44, 45,
236 46, 38, 38, 38, 38, 38, 38, 52,
237 53, 54, 38, 55, 56, 57, 38, 38,
238 38, 38, 38, 61, 62, 63, 65, 38,
239 38, 38, 38, 43, 38, 41, 38, 38,
240 38, 38, 38, 38, 38, 38, 43, 44,
241 45, 46, 38, 38, 38, 38, 38, 38,
242 52, 53, 54, 38, 55, 56, 57, 38,
243 38, 38, 38, 38, 61, 62, 63, 65,
244 38, 38, 38, 38, 43, 38, 41, 38,
245 38, 38, 38, 38, 38, 38, 38, 43,
246 44, 45, 46, 38, 38, 38, 38, 38,
247 38, 38, 53, 54, 38, 55, 56, 57,
248 38, 38, 38, 38, 38, 61, 62, 63,
249 65, 38, 38, 38, 38, 43, 38, 41,
250 38, 38, 38, 38, 38, 38, 38, 38,
251 43, 44, 45, 46, 38, 38, 38, 38,
252 38, 38, 38, 38, 54, 38, 55, 56,
253 57, 38, 38, 38, 38, 38, 61, 62,
254 63, 65, 38, 38, 38, 38, 43, 38,
255 67, 38, 41, 38, 38, 38, 38, 38,
256 38, 38, 42, 43, 44, 45, 46, 38,
257 48, 49, 38, 38, 38, 52, 53, 54,
258 38, 55, 56, 57, 38, 38, 38, 38,
259 38, 61, 62, 63, 65, 38, 38, 38,
260 38, 43, 38, 41, 38, 38, 38, 38,
261 38, 38, 38, 38, 43, 44, 45, 46,
262 38, 38, 38, 38, 38, 38, 38, 38,
263 38, 38, 55, 56, 57, 38, 38, 38,
264 38, 38, 61, 62, 63, 65, 38, 38,
265 38, 38, 43, 38, 67, 38, 41, 38,
266 38, 38, 38, 38, 38, 38, 42, 43,
267 44, 45, 46, 38, 38, 49, 38, 38,
268 38, 52, 53, 54, 38, 55, 56, 57,
269 38, 38, 38, 38, 38, 61, 62, 63,
270 65, 38, 38, 38, 38, 43, 38, 67,
271 38, 41, 38, 38, 38, 38, 38, 38,
272 38, 42, 43, 44, 45, 46, 38, 38,
273 38, 38, 38, 38, 52, 53, 54, 38,
274 55, 56, 57, 38, 38, 38, 38, 38,
275 61, 62, 63, 65, 38, 38, 38, 38,
276 43, 38, 67, 38, 41, 38, 38, 38,
277 38, 38, 38, 38, 42, 43, 44, 45,
278 46, 47, 48, 49, 38, 38, 38, 52,
279 53, 54, 38, 55, 56, 57, 38, 38,
280 38, 38, 38, 61, 62, 63, 65, 38,
281 38, 38, 38, 43, 38, 39, 40, 38,
282 41, 38, 38, 38, 38, 38, 38, 38,
283 42, 43, 44, 45, 46, 47, 48, 49,
284 50, 38, 51, 52, 53, 54, 38, 55,
285 56, 57, 38, 38, 38, 38, 60, 61,
286 62, 63, 60, 38, 38, 38, 38, 64,
287 38, 38, 63, 38, 39, 38, 38, 38,
288 38, 38, 38, 38, 38, 38, 38, 38,
289 38, 41, 38, 39, 38, 38, 38, 38,
290 38, 38, 38, 38, 38, 38, 38, 38,
291 41, 38, 38, 38, 38, 38, 38, 38,
292 38, 43, 44, 45, 46, 38, 38, 38,
293 38, 38, 38, 38, 38, 38, 38, 55,
294 56, 57, 38, 38, 38, 38, 38, 61,
295 62, 63, 65, 38, 41, 38, 38, 38,
296 38, 38, 38, 38, 38, 38, 38, 38,
297 38, 38, 38, 38, 38, 38, 38, 38,
298 38, 38, 38, 38, 38, 38, 38, 58,
299 59, 38, 41, 38, 38, 38, 38, 38,
300 38, 38, 38, 38, 38, 38, 38, 38,
301 38, 38, 38, 38, 38, 38, 38, 38,
302 38, 38, 38, 38, 38, 38, 59, 38,
303 4, 69, 68, 70, 68, 68, 68, 68,
304 68, 68, 68, 71, 72, 73, 74, 75,
305 76, 77, 78, 79, 4, 80, 81, 82,
306 83, 68, 84, 85, 86, 68, 68, 68,
307 68, 87, 88, 89, 90, 91, 68, 68,
308 68, 68, 92, 68, 68, 93, 68, 4,
309 68, 68, 68, 68, 68, 68, 68, 68,
310 68, 68, 68, 68, 70, 68, 68, 68,
311 68, 68, 68, 68, 68, 72, 73, 74,
312 75, 68, 68, 68, 68, 68, 68, 68,
313 68, 68, 68, 84, 85, 86, 68, 68,
314 68, 68, 68, 88, 89, 90, 94, 68,
315 68, 68, 68, 72, 68, 70, 68, 68,
316 68, 68, 68, 68, 68, 68, 72, 73,
317 74, 75, 68, 68, 68, 68, 68, 68,
318 68, 68, 68, 68, 84, 85, 86, 68,
319 68, 68, 68, 68, 88, 89, 90, 94,
320 68, 70, 68, 68, 68, 68, 68, 68,
321 68, 68, 68, 73, 74, 75, 68, 68,
322 68, 68, 68, 68, 68, 68, 68, 68,
323 68, 68, 68, 68, 68, 68, 68, 68,
324 88, 89, 90, 68, 70, 68, 68, 68,
325 68, 68, 68, 68, 68, 68, 68, 74,
326 75, 68, 68, 68, 68, 68, 68, 68,
327 68, 68, 68, 68, 68, 68, 68, 68,
328 68, 68, 68, 88, 89, 90, 68, 70,
329 68, 68, 68, 68, 68, 68, 68, 68,
330 68, 68, 68, 75, 68, 68, 68, 68,
331 68, 68, 68, 68, 68, 68, 68, 68,
332 68, 68, 68, 68, 68, 68, 88, 89,
333 90, 68, 70, 68, 68, 68, 68, 68,
334 68, 68, 68, 68, 68, 68, 68, 68,
335 68, 68, 68, 68, 68, 68, 68, 68,
336 68, 68, 68, 68, 68, 68, 68, 68,
337 68, 88, 89, 68, 70, 68, 68, 68,
338 68, 68, 68, 68, 68, 68, 68, 68,
339 68, 68, 68, 68, 68, 68, 68, 68,
340 68, 68, 68, 68, 68, 68, 68, 68,
341 68, 68, 68, 68, 89, 68, 70, 68,
342 70, 68, 68, 68, 68, 68, 68, 68,
343 68, 68, 73, 74, 75, 68, 68, 68,
344 68, 68, 68, 68, 68, 68, 68, 84,
345 85, 86, 68, 68, 68, 68, 68, 88,
346 89, 90, 94, 68, 70, 68, 68, 68,
347 68, 68, 68, 68, 68, 68, 73, 74,
348 75, 68, 68, 68, 68, 68, 68, 68,
349 68, 68, 68, 68, 85, 86, 68, 68,
350 68, 68, 68, 88, 89, 90, 94, 68,
351 70, 68, 68, 68, 68, 68, 68, 68,
352 68, 68, 73, 74, 75, 68, 68, 68,
353 68, 68, 68, 68, 68, 68, 68, 68,
354 68, 86, 68, 68, 68, 68, 68, 88,
355 89, 90, 94, 68, 96, 95, 95, 95,
356 95, 95, 95, 95, 95, 95, 95, 95,
357 95, 97, 95, 70, 68, 68, 68, 68,
358 68, 68, 68, 68, 68, 73, 74, 75,
359 68, 68, 68, 68, 68, 68, 68, 68,
360 68, 68, 68, 68, 68, 68, 68, 68,
361 68, 68, 88, 89, 90, 94, 68, 70,
362 68, 68, 68, 68, 68, 68, 68, 71,
363 72, 73, 74, 75, 68, 68, 68, 68,
364 68, 68, 81, 82, 83, 68, 84, 85,
365 86, 68, 68, 68, 68, 68, 88, 89,
366 90, 94, 68, 68, 68, 68, 72, 68,
367 70, 68, 68, 68, 68, 68, 68, 68,
368 68, 72, 73, 74, 75, 68, 68, 68,
369 68, 68, 68, 81, 82, 83, 68, 84,
370 85, 86, 68, 68, 68, 68, 68, 88,
371 89, 90, 94, 68, 68, 68, 68, 72,
372 68, 70, 68, 68, 68, 68, 68, 68,
373 68, 68, 72, 73, 74, 75, 68, 68,
374 68, 68, 68, 68, 68, 82, 83, 68,
375 84, 85, 86, 68, 68, 68, 68, 68,
376 88, 89, 90, 94, 68, 68, 68, 68,
377 72, 68, 70, 68, 68, 68, 68, 68,
378 68, 68, 68, 72, 73, 74, 75, 68,
379 68, 68, 68, 68, 68, 68, 68, 83,
380 68, 84, 85, 86, 68, 68, 68, 68,
381 68, 88, 89, 90, 94, 68, 68, 68,
382 68, 72, 68, 98, 68, 70, 68, 68,
383 68, 68, 68, 68, 68, 71, 72, 73,
384 74, 75, 68, 77, 78, 68, 68, 68,
385 81, 82, 83, 68, 84, 85, 86, 68,
386 68, 68, 68, 68, 88, 89, 90, 94,
387 68, 68, 68, 68, 72, 68, 70, 68,
388 68, 68, 68, 68, 68, 68, 68, 72,
389 73, 74, 75, 68, 68, 68, 68, 68,
390 68, 68, 68, 68, 68, 84, 85, 86,
391 68, 68, 68, 68, 68, 88, 89, 90,
392 94, 68, 68, 68, 68, 72, 68, 98,
393 68, 70, 68, 68, 68, 68, 68, 68,
394 68, 71, 72, 73, 74, 75, 68, 68,
395 78, 68, 68, 68, 81, 82, 83, 68,
396 84, 85, 86, 68, 68, 68, 68, 68,
397 88, 89, 90, 94, 68, 68, 68, 68,
398 72, 68, 98, 68, 70, 68, 68, 68,
399 68, 68, 68, 68, 71, 72, 73, 74,
400 75, 68, 68, 68, 68, 68, 68, 81,
401 82, 83, 68, 84, 85, 86, 68, 68,
402 68, 68, 68, 88, 89, 90, 94, 68,
403 68, 68, 68, 72, 68, 98, 68, 70,
404 68, 68, 68, 68, 68, 68, 68, 71,
405 72, 73, 74, 75, 76, 77, 78, 68,
406 68, 68, 81, 82, 83, 68, 84, 85,
407 86, 68, 68, 68, 68, 68, 88, 89,
408 90, 94, 68, 68, 68, 68, 72, 68,
409 4, 69, 68, 70, 68, 68, 68, 68,
410 68, 68, 68, 71, 72, 73, 74, 75,
411 76, 77, 78, 79, 68, 80, 81, 82,
412 83, 68, 84, 85, 86, 68, 68, 68,
413 68, 87, 88, 89, 90, 91, 68, 68,
414 68, 68, 92, 68, 68, 93, 68, 4,
415 99, 99, 99, 99, 99, 99, 99, 99,
416 99, 99, 99, 99, 100, 99, 4, 95,
417 95, 95, 95, 95, 95, 95, 95, 95,
418 95, 95, 95, 97, 95, 4, 68, 68,
419 68, 68, 68, 68, 68, 68, 68, 68,
420 68, 68, 70, 68, 68, 68, 68, 68,
421 68, 68, 68, 72, 73, 74, 75, 68,
422 68, 68, 68, 68, 68, 68, 68, 68,
423 68, 84, 85, 86, 68, 68, 68, 68,
424 68, 88, 89, 90, 94, 68, 100, 99,
425 102, 103, 101, 6, 104, 104, 104, 104,
426 104, 104, 104, 104, 104, 105, 104, 106,
427 107, 68, 70, 68, 68, 68, 68, 68,
428 68, 68, 108, 109, 110, 111, 112, 113,
429 114, 115, 116, 106, 117, 118, 119, 120,
430 68, 121, 122, 123, 68, 58, 59, 68,
431 124, 125, 126, 127, 128, 68, 68, 68,
432 68, 129, 68, 68, 130, 68, 106, 107,
433 68, 70, 68, 68, 68, 68, 68, 68,
434 68, 108, 109, 110, 111, 112, 113, 114,
435 115, 116, 106, 117, 118, 119, 120, 68,
436 121, 122, 123, 68, 68, 68, 68, 124,
437 125, 126, 127, 128, 68, 68, 68, 68,
438 129, 68, 68, 130, 68, 106, 68, 68,
439 68, 68, 68, 68, 68, 68, 68, 68,
440 68, 68, 70, 68, 68, 68, 68, 68,
441 68, 68, 68, 109, 110, 111, 112, 68,
442 68, 68, 68, 68, 68, 68, 68, 68,
443 68, 121, 122, 123, 68, 68, 68, 68,
444 68, 125, 126, 127, 131, 68, 68, 68,
445 68, 109, 68, 70, 68, 68, 68, 68,
446 68, 68, 68, 68, 109, 110, 111, 112,
447 68, 68, 68, 68, 68, 68, 68, 68,
448 68, 68, 121, 122, 123, 68, 68, 68,
449 68, 68, 125, 126, 127, 131, 68, 70,
450 68, 68, 68, 68, 68, 68, 68, 68,
451 68, 110, 111, 112, 68, 68, 68, 68,
452 68, 68, 68, 68, 68, 68, 68, 68,
453 68, 68, 68, 68, 68, 68, 125, 126,
454 127, 68, 70, 68, 68, 68, 68, 68,
455 68, 68, 68, 68, 68, 111, 112, 68,
456 68, 68, 68, 68, 68, 68, 68, 68,
457 68, 68, 68, 68, 68, 68, 68, 68,
458 68, 125, 126, 127, 68, 70, 68, 68,
459 68, 68, 68, 68, 68, 68, 68, 68,
460 68, 112, 68, 68, 68, 68, 68, 68,
461 68, 68, 68, 68, 68, 68, 68, 68,
462 68, 68, 68, 68, 125, 126, 127, 68,
463 70, 68, 68, 68, 68, 68, 68, 68,
464 68, 68, 68, 68, 68, 68, 68, 68,
465 68, 68, 68, 68, 68, 68, 68, 68,
466 68, 68, 68, 68, 68, 68, 68, 125,
467 126, 68, 70, 68, 68, 68, 68, 68,
468 68, 68, 68, 68, 68, 68, 68, 68,
469 68, 68, 68, 68, 68, 68, 68, 68,
470 68, 68, 68, 68, 68, 68, 68, 68,
471 68, 68, 126, 68, 70, 68, 70, 68,
472 68, 68, 68, 68, 68, 68, 68, 68,
473 110, 111, 112, 68, 68, 68, 68, 68,
474 68, 68, 68, 68, 68, 121, 122, 123,
475 68, 68, 68, 68, 68, 125, 126, 127,
476 131, 68, 70, 68, 68, 68, 68, 68,
477 68, 68, 68, 68, 110, 111, 112, 68,
478 68, 68, 68, 68, 68, 68, 68, 68,
479 68, 68, 122, 123, 68, 68, 68, 68,
480 68, 125, 126, 127, 131, 68, 70, 68,
481 68, 68, 68, 68, 68, 68, 68, 68,
482 110, 111, 112, 68, 68, 68, 68, 68,
483 68, 68, 68, 68, 68, 68, 68, 123,
484 68, 68, 68, 68, 68, 125, 126, 127,
485 131, 68, 132, 95, 95, 95, 95, 95,
486 95, 95, 95, 95, 95, 95, 95, 97,
487 95, 70, 68, 68, 68, 68, 68, 68,
488 68, 68, 68, 110, 111, 112, 68, 68,
489 68, 68, 68, 68, 68, 68, 68, 68,
490 68, 68, 68, 68, 68, 68, 68, 68,
491 125, 126, 127, 131, 68, 70, 68, 68,
492 68, 68, 68, 68, 68, 108, 109, 110,
493 111, 112, 68, 68, 68, 68, 68, 68,
494 118, 119, 120, 68, 121, 122, 123, 68,
495 68, 68, 68, 68, 125, 126, 127, 131,
496 68, 68, 68, 68, 109, 68, 70, 68,
497 68, 68, 68, 68, 68, 68, 68, 109,
498 110, 111, 112, 68, 68, 68, 68, 68,
499 68, 118, 119, 120, 68, 121, 122, 123,
500 68, 68, 68, 68, 68, 125, 126, 127,
501 131, 68, 68, 68, 68, 109, 68, 70,
502 68, 68, 68, 68, 68, 68, 68, 68,
503 109, 110, 111, 112, 68, 68, 68, 68,
504 68, 68, 68, 119, 120, 68, 121, 122,
505 123, 68, 68, 68, 68, 68, 125, 126,
506 127, 131, 68, 68, 68, 68, 109, 68,
507 70, 68, 68, 68, 68, 68, 68, 68,
508 68, 109, 110, 111, 112, 68, 68, 68,
509 68, 68, 68, 68, 68, 120, 68, 121,
510 122, 123, 68, 68, 68, 68, 68, 125,
511 126, 127, 131, 68, 68, 68, 68, 109,
512 68, 133, 68, 70, 68, 68, 68, 68,
513 68, 68, 68, 108, 109, 110, 111, 112,
514 68, 114, 115, 68, 68, 68, 118, 119,
515 120, 68, 121, 122, 123, 68, 68, 68,
516 68, 68, 125, 126, 127, 131, 68, 68,
517 68, 68, 109, 68, 70, 68, 68, 68,
518 68, 68, 68, 68, 68, 109, 110, 111,
519 112, 68, 68, 68, 68, 68, 68, 68,
520 68, 68, 68, 121, 122, 123, 68, 68,
521 68, 68, 68, 125, 126, 127, 131, 68,
522 68, 68, 68, 109, 68, 133, 68, 70,
523 68, 68, 68, 68, 68, 68, 68, 108,
524 109, 110, 111, 112, 68, 68, 115, 68,
525 68, 68, 118, 119, 120, 68, 121, 122,
526 123, 68, 68, 68, 68, 68, 125, 126,
527 127, 131, 68, 68, 68, 68, 109, 68,
528 133, 68, 70, 68, 68, 68, 68, 68,
529 68, 68, 108, 109, 110, 111, 112, 68,
530 68, 68, 68, 68, 68, 118, 119, 120,
531 68, 121, 122, 123, 68, 68, 68, 68,
532 68, 125, 126, 127, 131, 68, 68, 68,
533 68, 109, 68, 133, 68, 70, 68, 68,
534 68, 68, 68, 68, 68, 108, 109, 110,
535 111, 112, 113, 114, 115, 68, 68, 68,
536 118, 119, 120, 68, 121, 122, 123, 68,
537 68, 68, 68, 68, 125, 126, 127, 131,
538 68, 68, 68, 68, 109, 68, 106, 107,
539 68, 70, 68, 68, 68, 68, 68, 68,
540 68, 108, 109, 110, 111, 112, 113, 114,
541 115, 116, 68, 117, 118, 119, 120, 68,
542 121, 122, 123, 68, 68, 68, 68, 124,
543 125, 126, 127, 128, 68, 68, 68, 68,
544 129, 68, 68, 130, 68, 106, 99, 99,
545 99, 99, 99, 99, 99, 99, 99, 99,
546 99, 99, 100, 99, 106, 95, 95, 95,
547 95, 95, 95, 95, 95, 95, 95, 95,
548 95, 97, 95, 106, 68, 68, 68, 68,
549 68, 68, 68, 68, 68, 68, 68, 68,
550 70, 68, 68, 68, 68, 68, 68, 68,
551 68, 109, 110, 111, 112, 68, 68, 68,
552 68, 68, 68, 68, 68, 68, 68, 121,
553 122, 123, 68, 68, 68, 68, 68, 125,
554 126, 127, 131, 68, 100, 99, 8, 9,
555 134, 11, 134, 134, 134, 134, 134, 134,
556 134, 13, 14, 15, 16, 17, 18, 19,
557 20, 21, 8, 22, 23, 24, 25, 134,
558 26, 27, 28, 134, 134, 134, 134, 32,
559 33, 34, 35, 32, 134, 134, 134, 134,
560 37, 134, 134, 35, 134, 8, 134, 134,
561 134, 134, 134, 134, 134, 134, 134, 134,
562 134, 134, 11, 134, 134, 134, 134, 134,
563 134, 134, 134, 14, 15, 16, 17, 134,
564 134, 134, 134, 134, 134, 134, 134, 134,
565 134, 26, 27, 28, 134, 134, 134, 134,
566 134, 33, 34, 35, 135, 134, 134, 134,
567 134, 14, 134, 11, 134, 134, 134, 134,
568 134, 134, 134, 134, 14, 15, 16, 17,
569 134, 134, 134, 134, 134, 134, 134, 134,
570 134, 134, 26, 27, 28, 134, 134, 134,
571 134, 134, 33, 34, 35, 135, 134, 11,
572 134, 134, 134, 134, 134, 134, 134, 134,
573 134, 15, 16, 17, 134, 134, 134, 134,
574 134, 134, 134, 134, 134, 134, 134, 134,
575 134, 134, 134, 134, 134, 134, 33, 34,
576 35, 134, 11, 134, 134, 134, 134, 134,
577 134, 134, 134, 134, 134, 16, 17, 134,
578 134, 134, 134, 134, 134, 134, 134, 134,
579 134, 134, 134, 134, 134, 134, 134, 134,
580 134, 33, 34, 35, 134, 11, 134, 134,
581 134, 134, 134, 134, 134, 134, 134, 134,
582 134, 17, 134, 134, 134, 134, 134, 134,
583 134, 134, 134, 134, 134, 134, 134, 134,
584 134, 134, 134, 134, 33, 34, 35, 134,
585 11, 134, 134, 134, 134, 134, 134, 134,
586 134, 134, 134, 134, 134, 134, 134, 134,
587 134, 134, 134, 134, 134, 134, 134, 134,
588 134, 134, 134, 134, 134, 134, 134, 33,
589 34, 134, 11, 134, 134, 134, 134, 134,
590 134, 134, 134, 134, 134, 134, 134, 134,
591 134, 134, 134, 134, 134, 134, 134, 134,
592 134, 134, 134, 134, 134, 134, 134, 134,
593 134, 134, 34, 134, 11, 134, 11, 134,
594 134, 134, 134, 134, 134, 134, 134, 134,
595 15, 16, 17, 134, 134, 134, 134, 134,
596 134, 134, 134, 134, 134, 26, 27, 28,
597 134, 134, 134, 134, 134, 33, 34, 35,
598 135, 134, 11, 134, 134, 134, 134, 134,
599 134, 134, 134, 134, 15, 16, 17, 134,
600 134, 134, 134, 134, 134, 134, 134, 134,
601 134, 134, 27, 28, 134, 134, 134, 134,
602 134, 33, 34, 35, 135, 134, 11, 134,
603 134, 134, 134, 134, 134, 134, 134, 134,
604 15, 16, 17, 134, 134, 134, 134, 134,
605 134, 134, 134, 134, 134, 134, 134, 28,
606 134, 134, 134, 134, 134, 33, 34, 35,
607 135, 134, 136, 134, 134, 134, 134, 134,
608 134, 134, 134, 134, 134, 134, 134, 11,
609 134, 11, 134, 134, 134, 134, 134, 134,
610 134, 134, 134, 15, 16, 17, 134, 134,
611 134, 134, 134, 134, 134, 134, 134, 134,
612 134, 134, 134, 134, 134, 134, 134, 134,
613 33, 34, 35, 135, 134, 11, 134, 134,
614 134, 134, 134, 134, 134, 13, 14, 15,
615 16, 17, 134, 134, 134, 134, 134, 134,
616 23, 24, 25, 134, 26, 27, 28, 134,
617 134, 134, 134, 134, 33, 34, 35, 135,
618 134, 134, 134, 134, 14, 134, 11, 134,
619 134, 134, 134, 134, 134, 134, 134, 14,
620 15, 16, 17, 134, 134, 134, 134, 134,
621 134, 23, 24, 25, 134, 26, 27, 28,
622 134, 134, 134, 134, 134, 33, 34, 35,
623 135, 134, 134, 134, 134, 14, 134, 11,
624 134, 134, 134, 134, 134, 134, 134, 134,
625 14, 15, 16, 17, 134, 134, 134, 134,
626 134, 134, 134, 24, 25, 134, 26, 27,
627 28, 134, 134, 134, 134, 134, 33, 34,
628 35, 135, 134, 134, 134, 134, 14, 134,
629 11, 134, 134, 134, 134, 134, 134, 134,
630 134, 14, 15, 16, 17, 134, 134, 134,
631 134, 134, 134, 134, 134, 25, 134, 26,
632 27, 28, 134, 134, 134, 134, 134, 33,
633 34, 35, 135, 134, 134, 134, 134, 14,
634 134, 137, 134, 11, 134, 134, 134, 134,
635 134, 134, 134, 13, 14, 15, 16, 17,
636 134, 19, 20, 134, 134, 134, 23, 24,
637 25, 134, 26, 27, 28, 134, 134, 134,
638 134, 134, 33, 34, 35, 135, 134, 134,
639 134, 134, 14, 134, 11, 134, 134, 134,
640 134, 134, 134, 134, 134, 14, 15, 16,
641 17, 134, 134, 134, 134, 134, 134, 134,
642 134, 134, 134, 26, 27, 28, 134, 134,
643 134, 134, 134, 33, 34, 35, 135, 134,
644 134, 134, 134, 14, 134, 137, 134, 11,
645 134, 134, 134, 134, 134, 134, 134, 13,
646 14, 15, 16, 17, 134, 134, 20, 134,
647 134, 134, 23, 24, 25, 134, 26, 27,
648 28, 134, 134, 134, 134, 134, 33, 34,
649 35, 135, 134, 134, 134, 134, 14, 134,
650 137, 134, 11, 134, 134, 134, 134, 134,
651 134, 134, 13, 14, 15, 16, 17, 134,
652 134, 134, 134, 134, 134, 23, 24, 25,
653 134, 26, 27, 28, 134, 134, 134, 134,
654 134, 33, 34, 35, 135, 134, 134, 134,
655 134, 14, 134, 137, 134, 11, 134, 134,
656 134, 134, 134, 134, 134, 13, 14, 15,
657 16, 17, 18, 19, 20, 134, 134, 134,
658 23, 24, 25, 134, 26, 27, 28, 134,
659 134, 134, 134, 134, 33, 34, 35, 135,
660 134, 134, 134, 134, 14, 134, 8, 9,
661 134, 11, 134, 134, 134, 134, 134, 134,
662 134, 13, 14, 15, 16, 17, 18, 19,
663 20, 21, 134, 22, 23, 24, 25, 134,
664 26, 27, 28, 134, 134, 134, 134, 32,
665 33, 34, 35, 32, 134, 134, 134, 134,
666 37, 134, 134, 35, 134, 8, 134, 134,
667 134, 134, 134, 134, 134, 134, 134, 134,
668 134, 134, 11, 134, 8, 134, 134, 134,
669 134, 134, 134, 134, 134, 134, 134, 134,
670 134, 11, 134, 134, 134, 134, 134, 134,
671 134, 134, 14, 15, 16, 17, 134, 134,
672 134, 134, 134, 134, 134, 134, 134, 134,
673 26, 27, 28, 134, 134, 134, 134, 134,
674 33, 34, 35, 135, 134, 138, 134, 134,
675 134, 134, 134, 134, 134, 134, 134, 11,
676 134, 10, 11, 134, 4, 134, 134, 134,
677 4, 134, 134, 134, 134, 134, 8, 9,
678 10, 11, 134, 134, 134, 134, 134, 134,
679 134, 13, 14, 15, 16, 17, 18, 19,
680 20, 21, 8, 22, 23, 24, 25, 134,
681 26, 27, 28, 134, 29, 30, 134, 32,
682 33, 34, 35, 32, 134, 134, 134, 134,
683 37, 134, 134, 35, 134, 11, 134, 134,
684 134, 134, 134, 134, 134, 134, 134, 134,
685 134, 134, 134, 134, 134, 134, 134, 134,
686 134, 134, 134, 134, 134, 134, 134, 134,
687 29, 30, 134, 11, 134, 134, 134, 134,
688 134, 134, 134, 134, 134, 134, 134, 134,
689 134, 134, 134, 134, 134, 134, 134, 134,
690 134, 134, 134, 134, 134, 134, 134, 30,
691 134, 4, 139, 139, 139, 4, 139, 141,
692 140, 140, 140, 140, 140, 140, 140, 140,
693 140, 140, 140, 140, 140, 140, 140, 140,
694 140, 140, 140, 140, 140, 140, 140, 140,
695 140, 140, 140, 140, 140, 140, 140, 140,
696 140, 140, 140, 142, 140, 143, 140, 143,
697 144, 140, 141, 140, 140, 140, 140, 140,
698 140, 140, 140, 140, 140, 140, 140, 140,
699 140, 140, 140, 140, 140, 140, 140, 140,
700 140, 140, 140, 140, 140, 140, 140, 140,
701 140, 140, 140, 140, 140, 1, 142, 142,
702 140, 141, 140, 140, 140, 140, 140, 140,
703 140, 140, 140, 140, 140, 140, 140, 140,
704 140, 140, 140, 140, 140, 140, 140, 140,
705 140, 140, 140, 140, 140, 140, 140, 140,
706 140, 140, 140, 140, 140, 142, 140, 143,
707 140, 141, 140, 140, 140, 140, 140, 140,
708 140, 140, 140, 140, 140, 140, 140, 140,
709 140, 140, 140, 140, 140, 140, 140, 140,
710 140, 140, 140, 140, 140, 140, 140, 140,
711 140, 140, 140, 140, 140, 142, 140, 143,
712 140, 143, 140, 39, 40, 38, 41, 38,
713 38, 38, 38, 38, 38, 38, 42, 43,
714 44, 45, 46, 47, 48, 49, 50, 39,
715 51, 52, 53, 54, 38, 55, 56, 57,
716 38, 58, 59, 38, 60, 61, 62, 63,
717 60, 1, 38, 2, 38, 64, 38, 38,
718 63, 38, 0
719 };
720
721 static const char _use_syllable_machine_trans_targs[] = {
722 1, 122, 0, 2, 31, 1, 59, 61,
723 90, 91, 116, 1, 118, 104, 92, 93,
724 94, 95, 108, 110, 111, 112, 113, 105,
725 106, 107, 99, 100, 101, 119, 120, 121,
726 114, 96, 97, 98, 126, 115, 1, 3,
727 4, 1, 17, 5, 6, 7, 8, 21,
728 23, 24, 25, 26, 18, 19, 20, 12,
729 13, 14, 29, 30, 27, 9, 10, 11,
730 28, 15, 16, 22, 1, 32, 1, 45,
731 33, 34, 35, 36, 49, 51, 52, 53,
732 54, 46, 47, 48, 40, 41, 42, 55,
733 37, 38, 39, 56, 57, 58, 43, 1,
734 44, 1, 50, 1, 1, 1, 60, 1,
735 1, 1, 62, 63, 76, 64, 65, 66,
736 67, 80, 82, 83, 84, 85, 77, 78,
737 79, 71, 72, 73, 86, 68, 69, 70,
738 87, 88, 89, 74, 75, 81, 1, 102,
739 103, 109, 117, 1, 1, 1, 123, 124,
740 125
741 };
742
743 static const char _use_syllable_machine_trans_actions[] = {
744 1, 0, 0, 0, 0, 4, 0, 0,
745 0, 0, 0, 5, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 0, 0, 0,
748 0, 0, 0, 0, 6, 0, 7, 0,
749 0, 8, 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 9, 0, 10, 0,
753 0, 0, 0, 0, 0, 0, 0, 0,
754 0, 0, 0, 0, 0, 0, 0, 0,
755 0, 0, 0, 0, 0, 0, 0, 11,
756 0, 12, 0, 13, 14, 15, 0, 16,
757 17, 18, 0, 0, 0, 0, 0, 0,
758 0, 0, 0, 0, 0, 0, 0, 0,
759 0, 0, 0, 0, 0, 0, 0, 0,
760 0, 0, 0, 0, 0, 0, 19, 0,
761 0, 0, 0, 20, 21, 22, 0, 0,
762 0
763 };
764
765 static const char _use_syllable_machine_to_state_actions[] = {
766 0, 2, 0, 0, 0, 0, 0, 0,
767 0, 0, 0, 0, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 0, 0,
769 0, 0, 0, 0, 0, 0, 0, 0,
770 0, 0, 0, 0, 0, 0, 0, 0,
771 0, 0, 0, 0, 0, 0, 0, 0,
772 0, 0, 0, 0, 0, 0, 0, 0,
773 0, 0, 0, 0, 0, 0, 0, 0,
774 0, 0, 0, 0, 0, 0, 0, 0,
775 0, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 0, 0,
778 0, 0, 0, 0, 0, 0, 0, 0,
779 0, 0, 0, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 0, 0, 0, 0,
781 0, 0, 0, 0, 0, 0, 0
782 };
783
784 static const char _use_syllable_machine_from_state_actions[] = {
785 0, 3, 0, 0, 0, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 0,
790 0, 0, 0, 0, 0, 0, 0, 0,
791 0, 0, 0, 0, 0, 0, 0, 0,
792 0, 0, 0, 0, 0, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 0, 0, 0, 0,
798 0, 0, 0, 0, 0, 0, 0, 0,
799 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 0
801 };
802
803 static const short _use_syllable_machine_eof_trans[] = {
804 1, 0, 39, 39, 39, 39, 39, 39,
805 39, 39, 39, 39, 39, 39, 39, 39,
806 39, 39, 39, 39, 39, 39, 39, 39,
807 39, 39, 39, 39, 39, 39, 39, 69,
808 69, 69, 69, 69, 69, 69, 69, 69,
809 69, 69, 69, 96, 69, 69, 69, 69,
810 69, 69, 69, 69, 69, 69, 69, 100,
811 96, 69, 100, 102, 105, 69, 69, 69,
812 69, 69, 69, 69, 69, 69, 69, 69,
813 69, 69, 96, 69, 69, 69, 69, 69,
814 69, 69, 69, 69, 69, 69, 100, 96,
815 69, 100, 135, 135, 135, 135, 135, 135,
816 135, 135, 135, 135, 135, 135, 135, 135,
817 135, 135, 135, 135, 135, 135, 135, 135,
818 135, 135, 135, 135, 135, 135, 135, 135,
819 135, 140, 141, 141, 141, 141, 39
820 };
821
822 static const int use_syllable_machine_start = 1;
823 static const int use_syllable_machine_first_final = 1;
824 static const int use_syllable_machine_error = -1;
825
826 static const int use_syllable_machine_en_main = 1;
827
828
829 #line 58 "hb-ot-shaper-use-machine.rl"
830
831
832
833 #line 185 "hb-ot-shaper-use-machine.rl"
834
835
836 #define found_syllable(syllable_type) \
837 HB_STMT_START { \
838 if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
839 for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
840 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
841 syllable_serial++; \
842 if (syllable_serial == 16) syllable_serial = 1; \
843 } HB_STMT_END
844
845
846 template <typename Iter>
847 struct machine_index_t :
848 hb_iter_with_fallback_t<machine_index_t<Iter>,
849 typename Iter::item_t>
850 {
machine_index_tmachine_index_t851 machine_index_t (const Iter& it) : it (it) {}
machine_index_tmachine_index_t852 machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
853 typename Iter::item_t> (),
854 it (o.it), is_null (o.is_null) {}
855
856 static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
857 static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
858
__item__machine_index_t859 typename Iter::item_t __item__ () const { return *it; }
__item_at__machine_index_t860 typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
__len__machine_index_t861 unsigned __len__ () const { return it.len (); }
__next__machine_index_t862 void __next__ () { ++it; }
__forward__machine_index_t863 void __forward__ (unsigned n) { it += n; }
__prev__machine_index_t864 void __prev__ () { --it; }
__rewind__machine_index_t865 void __rewind__ (unsigned n) { it -= n; }
866
operator =machine_index_t867 void operator = (unsigned n)
868 {
869 assert (n == 0);
870 is_null = true;
871 }
operator boolmachine_index_t872 explicit operator bool () { return !is_null; }
873
operator =machine_index_t874 void operator = (const machine_index_t& o)
875 {
876 is_null = o.is_null;
877 unsigned index = (*it).first;
878 unsigned n = (*o.it).first;
879 if (index < n) it += n - index; else if (index > n) it -= index - n;
880 }
operator ==machine_index_t881 bool operator == (const machine_index_t& o) const
882 { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
operator !=machine_index_t883 bool operator != (const machine_index_t& o) const { return !(*this == o); }
884
885 private:
886 Iter it;
887 bool is_null = false;
888 };
889 struct
890 {
891 template <typename Iter,
892 hb_requires (hb_is_iterable (Iter))>
893 machine_index_t<hb_iter_type<Iter>>
operator ()__anon91e711710108894 operator () (Iter&& it) const
895 { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
896 }
897 HB_FUNCOBJ (machine_index);
898
899
900
901 static bool
not_ccs_default_ignorable(const hb_glyph_info_t & i)902 not_ccs_default_ignorable (const hb_glyph_info_t &i)
903 { return i.use_category() != USE(CGJ); }
904
905 static inline void
find_syllables_use(hb_buffer_t * buffer)906 find_syllables_use (hb_buffer_t *buffer)
907 {
908 hb_glyph_info_t *info = buffer->info;
909 auto p =
910 + hb_iter (info, buffer->len)
911 | hb_enumerate
912 | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
913 hb_second)
914 | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
915 {
916 if (p.second.use_category() == USE(ZWNJ))
917 for (unsigned i = p.first + 1; i < buffer->len; ++i)
918 if (not_ccs_default_ignorable (info[i]))
919 return !_hb_glyph_info_is_unicode_mark (&info[i]);
920 return true;
921 })
922 | hb_enumerate
923 | machine_index
924 ;
925 auto pe = p + p.len ();
926 auto eof = +pe;
927 auto ts = +p;
928 auto te = +p;
929 unsigned int act HB_UNUSED;
930 int cs;
931
932 #line 933 "hb-ot-shaper-use-machine.hh"
933 {
934 cs = use_syllable_machine_start;
935 ts = 0;
936 te = 0;
937 act = 0;
938 }
939
940 #line 285 "hb-ot-shaper-use-machine.rl"
941
942
943 unsigned int syllable_serial = 1;
944
945 #line 946 "hb-ot-shaper-use-machine.hh"
946 {
947 int _slen;
948 int _trans;
949 const unsigned char *_keys;
950 const unsigned char *_inds;
951 if ( p == pe )
952 goto _test_eof;
953 _resume:
954 switch ( _use_syllable_machine_from_state_actions[cs] ) {
955 case 3:
956 #line 1 "NONE"
957 {ts = p;}
958 break;
959 #line 960 "hb-ot-shaper-use-machine.hh"
960 }
961
962 _keys = _use_syllable_machine_trans_keys + (cs<<1);
963 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
964
965 _slen = _use_syllable_machine_key_spans[cs];
966 _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
967 ( (*p).second.second.use_category()) <= _keys[1] ?
968 ( (*p).second.second.use_category()) - _keys[0] : _slen ];
969
970 _eof_trans:
971 cs = _use_syllable_machine_trans_targs[_trans];
972
973 if ( _use_syllable_machine_trans_actions[_trans] == 0 )
974 goto _again;
975
976 switch ( _use_syllable_machine_trans_actions[_trans] ) {
977 case 6:
978 #line 1 "NONE"
979 {te = p+1;}
980 break;
981 case 14:
982 #line 173 "hb-ot-shaper-use-machine.rl"
983 {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
984 break;
985 case 12:
986 #line 174 "hb-ot-shaper-use-machine.rl"
987 {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
988 break;
989 case 10:
990 #line 175 "hb-ot-shaper-use-machine.rl"
991 {te = p+1;{ found_syllable (use_standard_cluster); }}
992 break;
993 case 18:
994 #line 176 "hb-ot-shaper-use-machine.rl"
995 {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
996 break;
997 case 16:
998 #line 177 "hb-ot-shaper-use-machine.rl"
999 {te = p+1;{ found_syllable (use_numeral_cluster); }}
1000 break;
1001 case 8:
1002 #line 178 "hb-ot-shaper-use-machine.rl"
1003 {te = p+1;{ found_syllable (use_symbol_cluster); }}
1004 break;
1005 case 22:
1006 #line 179 "hb-ot-shaper-use-machine.rl"
1007 {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1008 break;
1009 case 5:
1010 #line 180 "hb-ot-shaper-use-machine.rl"
1011 {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1012 break;
1013 case 4:
1014 #line 181 "hb-ot-shaper-use-machine.rl"
1015 {te = p+1;{ found_syllable (use_non_cluster); }}
1016 break;
1017 case 13:
1018 #line 173 "hb-ot-shaper-use-machine.rl"
1019 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1020 break;
1021 case 11:
1022 #line 174 "hb-ot-shaper-use-machine.rl"
1023 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1024 break;
1025 case 9:
1026 #line 175 "hb-ot-shaper-use-machine.rl"
1027 {te = p;p--;{ found_syllable (use_standard_cluster); }}
1028 break;
1029 case 17:
1030 #line 176 "hb-ot-shaper-use-machine.rl"
1031 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1032 break;
1033 case 15:
1034 #line 177 "hb-ot-shaper-use-machine.rl"
1035 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1036 break;
1037 case 7:
1038 #line 178 "hb-ot-shaper-use-machine.rl"
1039 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1040 break;
1041 case 21:
1042 #line 179 "hb-ot-shaper-use-machine.rl"
1043 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1044 break;
1045 case 19:
1046 #line 180 "hb-ot-shaper-use-machine.rl"
1047 {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1048 break;
1049 case 20:
1050 #line 181 "hb-ot-shaper-use-machine.rl"
1051 {te = p;p--;{ found_syllable (use_non_cluster); }}
1052 break;
1053 case 1:
1054 #line 178 "hb-ot-shaper-use-machine.rl"
1055 {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1056 break;
1057 #line 1058 "hb-ot-shaper-use-machine.hh"
1058 }
1059
1060 _again:
1061 switch ( _use_syllable_machine_to_state_actions[cs] ) {
1062 case 2:
1063 #line 1 "NONE"
1064 {ts = 0;}
1065 break;
1066 #line 1067 "hb-ot-shaper-use-machine.hh"
1067 }
1068
1069 if ( ++p != pe )
1070 goto _resume;
1071 _test_eof: {}
1072 if ( p == eof )
1073 {
1074 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1075 _trans = _use_syllable_machine_eof_trans[cs] - 1;
1076 goto _eof_trans;
1077 }
1078 }
1079
1080 }
1081
1082 #line 290 "hb-ot-shaper-use-machine.rl"
1083
1084 }
1085
1086 #undef found_syllable
1087
1088 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1089