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, 38, 5, 40, 41,
170 39, 42, 39, 39, 39, 39, 39, 39,
171 39, 43, 44, 45, 46, 47, 48, 49,
172 50, 51, 40, 52, 53, 54, 55, 39,
173 56, 57, 58, 39, 59, 60, 39, 61,
174 62, 63, 64, 61, 39, 39, 39, 39,
175 65, 39, 39, 64, 39, 40, 41, 39,
176 42, 39, 39, 39, 39, 39, 39, 39,
177 43, 44, 45, 46, 47, 48, 49, 50,
178 51, 40, 52, 53, 54, 55, 39, 56,
179 57, 58, 39, 39, 39, 39, 61, 62,
180 63, 64, 61, 39, 39, 39, 39, 65,
181 39, 39, 64, 39, 40, 39, 39, 39,
182 39, 39, 39, 39, 39, 39, 39, 39,
183 39, 42, 39, 39, 39, 39, 39, 39,
184 39, 39, 44, 45, 46, 47, 39, 39,
185 39, 39, 39, 39, 39, 39, 39, 39,
186 56, 57, 58, 39, 39, 39, 39, 39,
187 62, 63, 64, 66, 39, 39, 39, 39,
188 44, 39, 42, 39, 39, 39, 39, 39,
189 39, 39, 39, 44, 45, 46, 47, 39,
190 39, 39, 39, 39, 39, 39, 39, 39,
191 39, 56, 57, 58, 39, 39, 39, 39,
192 39, 62, 63, 64, 66, 39, 42, 39,
193 39, 39, 39, 39, 39, 39, 39, 39,
194 45, 46, 47, 39, 39, 39, 39, 39,
195 39, 39, 39, 39, 39, 39, 39, 39,
196 39, 39, 39, 39, 39, 62, 63, 64,
197 39, 42, 39, 39, 39, 39, 39, 39,
198 39, 39, 39, 39, 46, 47, 39, 39,
199 39, 39, 39, 39, 39, 39, 39, 39,
200 39, 39, 39, 39, 39, 39, 39, 39,
201 62, 63, 64, 39, 42, 39, 39, 39,
202 39, 39, 39, 39, 39, 39, 39, 39,
203 47, 39, 39, 39, 39, 39, 39, 39,
204 39, 39, 39, 39, 39, 39, 39, 39,
205 39, 39, 39, 62, 63, 64, 39, 42,
206 39, 39, 39, 39, 39, 39, 39, 39,
207 39, 39, 39, 39, 39, 39, 39, 39,
208 39, 39, 39, 39, 39, 39, 39, 39,
209 39, 39, 39, 39, 39, 39, 62, 63,
210 39, 42, 39, 39, 39, 39, 39, 39,
211 39, 39, 39, 39, 39, 39, 39, 39,
212 39, 39, 39, 39, 39, 39, 39, 39,
213 39, 39, 39, 39, 39, 39, 39, 39,
214 39, 63, 39, 42, 39, 42, 39, 39,
215 39, 39, 39, 39, 39, 39, 39, 45,
216 46, 47, 39, 39, 39, 39, 39, 39,
217 39, 39, 39, 39, 56, 57, 58, 39,
218 39, 39, 39, 39, 62, 63, 64, 66,
219 39, 42, 39, 39, 39, 39, 39, 39,
220 39, 39, 39, 45, 46, 47, 39, 39,
221 39, 39, 39, 39, 39, 39, 39, 39,
222 39, 57, 58, 39, 39, 39, 39, 39,
223 62, 63, 64, 66, 39, 42, 39, 39,
224 39, 39, 39, 39, 39, 39, 39, 45,
225 46, 47, 39, 39, 39, 39, 39, 39,
226 39, 39, 39, 39, 39, 39, 58, 39,
227 39, 39, 39, 39, 62, 63, 64, 66,
228 39, 67, 39, 39, 39, 39, 39, 39,
229 39, 39, 39, 39, 39, 39, 42, 39,
230 42, 39, 39, 39, 39, 39, 39, 39,
231 39, 39, 45, 46, 47, 39, 39, 39,
232 39, 39, 39, 39, 39, 39, 39, 39,
233 39, 39, 39, 39, 39, 39, 39, 62,
234 63, 64, 66, 39, 42, 39, 39, 39,
235 39, 39, 39, 39, 43, 44, 45, 46,
236 47, 39, 39, 39, 39, 39, 39, 53,
237 54, 55, 39, 56, 57, 58, 39, 39,
238 39, 39, 39, 62, 63, 64, 66, 39,
239 39, 39, 39, 44, 39, 42, 39, 39,
240 39, 39, 39, 39, 39, 39, 44, 45,
241 46, 47, 39, 39, 39, 39, 39, 39,
242 53, 54, 55, 39, 56, 57, 58, 39,
243 39, 39, 39, 39, 62, 63, 64, 66,
244 39, 39, 39, 39, 44, 39, 42, 39,
245 39, 39, 39, 39, 39, 39, 39, 44,
246 45, 46, 47, 39, 39, 39, 39, 39,
247 39, 39, 54, 55, 39, 56, 57, 58,
248 39, 39, 39, 39, 39, 62, 63, 64,
249 66, 39, 39, 39, 39, 44, 39, 42,
250 39, 39, 39, 39, 39, 39, 39, 39,
251 44, 45, 46, 47, 39, 39, 39, 39,
252 39, 39, 39, 39, 55, 39, 56, 57,
253 58, 39, 39, 39, 39, 39, 62, 63,
254 64, 66, 39, 39, 39, 39, 44, 39,
255 68, 39, 42, 39, 39, 39, 39, 39,
256 39, 39, 43, 44, 45, 46, 47, 39,
257 49, 50, 39, 39, 39, 53, 54, 55,
258 39, 56, 57, 58, 39, 39, 39, 39,
259 39, 62, 63, 64, 66, 39, 39, 39,
260 39, 44, 39, 42, 39, 39, 39, 39,
261 39, 39, 39, 39, 44, 45, 46, 47,
262 39, 39, 39, 39, 39, 39, 39, 39,
263 39, 39, 56, 57, 58, 39, 39, 39,
264 39, 39, 62, 63, 64, 66, 39, 39,
265 39, 39, 44, 39, 68, 39, 42, 39,
266 39, 39, 39, 39, 39, 39, 43, 44,
267 45, 46, 47, 39, 39, 50, 39, 39,
268 39, 53, 54, 55, 39, 56, 57, 58,
269 39, 39, 39, 39, 39, 62, 63, 64,
270 66, 39, 39, 39, 39, 44, 39, 68,
271 39, 42, 39, 39, 39, 39, 39, 39,
272 39, 43, 44, 45, 46, 47, 39, 39,
273 39, 39, 39, 39, 53, 54, 55, 39,
274 56, 57, 58, 39, 39, 39, 39, 39,
275 62, 63, 64, 66, 39, 39, 39, 39,
276 44, 39, 68, 39, 42, 39, 39, 39,
277 39, 39, 39, 39, 43, 44, 45, 46,
278 47, 48, 49, 50, 39, 39, 39, 53,
279 54, 55, 39, 56, 57, 58, 39, 39,
280 39, 39, 39, 62, 63, 64, 66, 39,
281 39, 39, 39, 44, 39, 40, 41, 39,
282 42, 39, 39, 39, 39, 39, 39, 39,
283 43, 44, 45, 46, 47, 48, 49, 50,
284 51, 39, 52, 53, 54, 55, 39, 56,
285 57, 58, 39, 39, 39, 39, 61, 62,
286 63, 64, 61, 39, 39, 39, 39, 65,
287 39, 39, 64, 39, 40, 39, 39, 39,
288 39, 39, 39, 39, 39, 39, 39, 39,
289 39, 42, 39, 40, 39, 39, 39, 39,
290 39, 39, 39, 39, 39, 39, 39, 39,
291 42, 39, 39, 39, 39, 39, 39, 39,
292 39, 44, 45, 46, 47, 39, 39, 39,
293 39, 39, 39, 39, 39, 39, 39, 56,
294 57, 58, 39, 39, 39, 39, 39, 62,
295 63, 64, 66, 39, 42, 39, 39, 39,
296 39, 39, 39, 39, 39, 39, 39, 39,
297 39, 39, 39, 39, 39, 39, 39, 39,
298 39, 39, 39, 39, 39, 39, 39, 59,
299 60, 39, 42, 39, 39, 39, 39, 39,
300 39, 39, 39, 39, 39, 39, 39, 39,
301 39, 39, 39, 39, 39, 39, 39, 39,
302 39, 39, 39, 39, 39, 39, 60, 39,
303 4, 70, 69, 71, 69, 69, 69, 69,
304 69, 69, 69, 72, 73, 74, 75, 76,
305 77, 78, 79, 80, 4, 81, 82, 83,
306 84, 69, 85, 86, 87, 69, 69, 69,
307 69, 88, 89, 90, 91, 92, 69, 69,
308 69, 69, 93, 69, 69, 94, 69, 4,
309 69, 69, 69, 69, 69, 69, 69, 69,
310 69, 69, 69, 69, 71, 69, 69, 69,
311 69, 69, 69, 69, 69, 73, 74, 75,
312 76, 69, 69, 69, 69, 69, 69, 69,
313 69, 69, 69, 85, 86, 87, 69, 69,
314 69, 69, 69, 89, 90, 91, 95, 69,
315 69, 69, 69, 73, 69, 71, 69, 69,
316 69, 69, 69, 69, 69, 69, 73, 74,
317 75, 76, 69, 69, 69, 69, 69, 69,
318 69, 69, 69, 69, 85, 86, 87, 69,
319 69, 69, 69, 69, 89, 90, 91, 95,
320 69, 71, 69, 69, 69, 69, 69, 69,
321 69, 69, 69, 74, 75, 76, 69, 69,
322 69, 69, 69, 69, 69, 69, 69, 69,
323 69, 69, 69, 69, 69, 69, 69, 69,
324 89, 90, 91, 69, 71, 69, 69, 69,
325 69, 69, 69, 69, 69, 69, 69, 75,
326 76, 69, 69, 69, 69, 69, 69, 69,
327 69, 69, 69, 69, 69, 69, 69, 69,
328 69, 69, 69, 89, 90, 91, 69, 71,
329 69, 69, 69, 69, 69, 69, 69, 69,
330 69, 69, 69, 76, 69, 69, 69, 69,
331 69, 69, 69, 69, 69, 69, 69, 69,
332 69, 69, 69, 69, 69, 69, 89, 90,
333 91, 69, 71, 69, 69, 69, 69, 69,
334 69, 69, 69, 69, 69, 69, 69, 69,
335 69, 69, 69, 69, 69, 69, 69, 69,
336 69, 69, 69, 69, 69, 69, 69, 69,
337 69, 89, 90, 69, 71, 69, 69, 69,
338 69, 69, 69, 69, 69, 69, 69, 69,
339 69, 69, 69, 69, 69, 69, 69, 69,
340 69, 69, 69, 69, 69, 69, 69, 69,
341 69, 69, 69, 69, 90, 69, 71, 69,
342 71, 69, 69, 69, 69, 69, 69, 69,
343 69, 69, 74, 75, 76, 69, 69, 69,
344 69, 69, 69, 69, 69, 69, 69, 85,
345 86, 87, 69, 69, 69, 69, 69, 89,
346 90, 91, 95, 69, 71, 69, 69, 69,
347 69, 69, 69, 69, 69, 69, 74, 75,
348 76, 69, 69, 69, 69, 69, 69, 69,
349 69, 69, 69, 69, 86, 87, 69, 69,
350 69, 69, 69, 89, 90, 91, 95, 69,
351 71, 69, 69, 69, 69, 69, 69, 69,
352 69, 69, 74, 75, 76, 69, 69, 69,
353 69, 69, 69, 69, 69, 69, 69, 69,
354 69, 87, 69, 69, 69, 69, 69, 89,
355 90, 91, 95, 69, 97, 96, 96, 96,
356 96, 96, 96, 96, 96, 96, 96, 96,
357 96, 98, 96, 71, 69, 69, 69, 69,
358 69, 69, 69, 69, 69, 74, 75, 76,
359 69, 69, 69, 69, 69, 69, 69, 69,
360 69, 69, 69, 69, 69, 69, 69, 69,
361 69, 69, 89, 90, 91, 95, 69, 71,
362 69, 69, 69, 69, 69, 69, 69, 72,
363 73, 74, 75, 76, 69, 69, 69, 69,
364 69, 69, 82, 83, 84, 69, 85, 86,
365 87, 69, 69, 69, 69, 69, 89, 90,
366 91, 95, 69, 69, 69, 69, 73, 69,
367 71, 69, 69, 69, 69, 69, 69, 69,
368 69, 73, 74, 75, 76, 69, 69, 69,
369 69, 69, 69, 82, 83, 84, 69, 85,
370 86, 87, 69, 69, 69, 69, 69, 89,
371 90, 91, 95, 69, 69, 69, 69, 73,
372 69, 71, 69, 69, 69, 69, 69, 69,
373 69, 69, 73, 74, 75, 76, 69, 69,
374 69, 69, 69, 69, 69, 83, 84, 69,
375 85, 86, 87, 69, 69, 69, 69, 69,
376 89, 90, 91, 95, 69, 69, 69, 69,
377 73, 69, 71, 69, 69, 69, 69, 69,
378 69, 69, 69, 73, 74, 75, 76, 69,
379 69, 69, 69, 69, 69, 69, 69, 84,
380 69, 85, 86, 87, 69, 69, 69, 69,
381 69, 89, 90, 91, 95, 69, 69, 69,
382 69, 73, 69, 99, 69, 71, 69, 69,
383 69, 69, 69, 69, 69, 72, 73, 74,
384 75, 76, 69, 78, 79, 69, 69, 69,
385 82, 83, 84, 69, 85, 86, 87, 69,
386 69, 69, 69, 69, 89, 90, 91, 95,
387 69, 69, 69, 69, 73, 69, 71, 69,
388 69, 69, 69, 69, 69, 69, 69, 73,
389 74, 75, 76, 69, 69, 69, 69, 69,
390 69, 69, 69, 69, 69, 85, 86, 87,
391 69, 69, 69, 69, 69, 89, 90, 91,
392 95, 69, 69, 69, 69, 73, 69, 99,
393 69, 71, 69, 69, 69, 69, 69, 69,
394 69, 72, 73, 74, 75, 76, 69, 69,
395 79, 69, 69, 69, 82, 83, 84, 69,
396 85, 86, 87, 69, 69, 69, 69, 69,
397 89, 90, 91, 95, 69, 69, 69, 69,
398 73, 69, 99, 69, 71, 69, 69, 69,
399 69, 69, 69, 69, 72, 73, 74, 75,
400 76, 69, 69, 69, 69, 69, 69, 82,
401 83, 84, 69, 85, 86, 87, 69, 69,
402 69, 69, 69, 89, 90, 91, 95, 69,
403 69, 69, 69, 73, 69, 99, 69, 71,
404 69, 69, 69, 69, 69, 69, 69, 72,
405 73, 74, 75, 76, 77, 78, 79, 69,
406 69, 69, 82, 83, 84, 69, 85, 86,
407 87, 69, 69, 69, 69, 69, 89, 90,
408 91, 95, 69, 69, 69, 69, 73, 69,
409 4, 70, 69, 71, 69, 69, 69, 69,
410 69, 69, 69, 72, 73, 74, 75, 76,
411 77, 78, 79, 80, 69, 81, 82, 83,
412 84, 69, 85, 86, 87, 69, 69, 69,
413 69, 88, 89, 90, 91, 92, 69, 69,
414 69, 69, 93, 69, 69, 94, 69, 4,
415 100, 100, 100, 100, 100, 100, 100, 100,
416 100, 100, 100, 100, 101, 100, 4, 96,
417 96, 96, 96, 96, 96, 96, 96, 96,
418 96, 96, 96, 98, 96, 4, 69, 69,
419 69, 69, 69, 69, 69, 69, 69, 69,
420 69, 69, 71, 69, 69, 69, 69, 69,
421 69, 69, 69, 73, 74, 75, 76, 69,
422 69, 69, 69, 69, 69, 69, 69, 69,
423 69, 85, 86, 87, 69, 69, 69, 69,
424 69, 89, 90, 91, 95, 69, 101, 100,
425 103, 104, 102, 6, 105, 105, 105, 105,
426 105, 105, 105, 105, 105, 106, 105, 107,
427 108, 69, 71, 69, 69, 69, 69, 69,
428 69, 69, 109, 110, 111, 112, 113, 114,
429 115, 116, 117, 107, 118, 119, 120, 121,
430 69, 122, 123, 124, 69, 59, 60, 69,
431 125, 126, 127, 128, 129, 69, 69, 69,
432 69, 130, 69, 69, 131, 69, 107, 108,
433 69, 71, 69, 69, 69, 69, 69, 69,
434 69, 109, 110, 111, 112, 113, 114, 115,
435 116, 117, 107, 118, 119, 120, 121, 69,
436 122, 123, 124, 69, 69, 69, 69, 125,
437 126, 127, 128, 129, 69, 69, 69, 69,
438 130, 69, 69, 131, 69, 107, 69, 69,
439 69, 69, 69, 69, 69, 69, 69, 69,
440 69, 69, 71, 69, 69, 69, 69, 69,
441 69, 69, 69, 110, 111, 112, 113, 69,
442 69, 69, 69, 69, 69, 69, 69, 69,
443 69, 122, 123, 124, 69, 69, 69, 69,
444 69, 126, 127, 128, 132, 69, 69, 69,
445 69, 110, 69, 71, 69, 69, 69, 69,
446 69, 69, 69, 69, 110, 111, 112, 113,
447 69, 69, 69, 69, 69, 69, 69, 69,
448 69, 69, 122, 123, 124, 69, 69, 69,
449 69, 69, 126, 127, 128, 132, 69, 71,
450 69, 69, 69, 69, 69, 69, 69, 69,
451 69, 111, 112, 113, 69, 69, 69, 69,
452 69, 69, 69, 69, 69, 69, 69, 69,
453 69, 69, 69, 69, 69, 69, 126, 127,
454 128, 69, 71, 69, 69, 69, 69, 69,
455 69, 69, 69, 69, 69, 112, 113, 69,
456 69, 69, 69, 69, 69, 69, 69, 69,
457 69, 69, 69, 69, 69, 69, 69, 69,
458 69, 126, 127, 128, 69, 71, 69, 69,
459 69, 69, 69, 69, 69, 69, 69, 69,
460 69, 113, 69, 69, 69, 69, 69, 69,
461 69, 69, 69, 69, 69, 69, 69, 69,
462 69, 69, 69, 69, 126, 127, 128, 69,
463 71, 69, 69, 69, 69, 69, 69, 69,
464 69, 69, 69, 69, 69, 69, 69, 69,
465 69, 69, 69, 69, 69, 69, 69, 69,
466 69, 69, 69, 69, 69, 69, 69, 126,
467 127, 69, 71, 69, 69, 69, 69, 69,
468 69, 69, 69, 69, 69, 69, 69, 69,
469 69, 69, 69, 69, 69, 69, 69, 69,
470 69, 69, 69, 69, 69, 69, 69, 69,
471 69, 69, 127, 69, 71, 69, 71, 69,
472 69, 69, 69, 69, 69, 69, 69, 69,
473 111, 112, 113, 69, 69, 69, 69, 69,
474 69, 69, 69, 69, 69, 122, 123, 124,
475 69, 69, 69, 69, 69, 126, 127, 128,
476 132, 69, 71, 69, 69, 69, 69, 69,
477 69, 69, 69, 69, 111, 112, 113, 69,
478 69, 69, 69, 69, 69, 69, 69, 69,
479 69, 69, 123, 124, 69, 69, 69, 69,
480 69, 126, 127, 128, 132, 69, 71, 69,
481 69, 69, 69, 69, 69, 69, 69, 69,
482 111, 112, 113, 69, 69, 69, 69, 69,
483 69, 69, 69, 69, 69, 69, 69, 124,
484 69, 69, 69, 69, 69, 126, 127, 128,
485 132, 69, 133, 96, 96, 96, 96, 96,
486 96, 96, 96, 96, 96, 96, 96, 98,
487 96, 71, 69, 69, 69, 69, 69, 69,
488 69, 69, 69, 111, 112, 113, 69, 69,
489 69, 69, 69, 69, 69, 69, 69, 69,
490 69, 69, 69, 69, 69, 69, 69, 69,
491 126, 127, 128, 132, 69, 71, 69, 69,
492 69, 69, 69, 69, 69, 109, 110, 111,
493 112, 113, 69, 69, 69, 69, 69, 69,
494 119, 120, 121, 69, 122, 123, 124, 69,
495 69, 69, 69, 69, 126, 127, 128, 132,
496 69, 69, 69, 69, 110, 69, 71, 69,
497 69, 69, 69, 69, 69, 69, 69, 110,
498 111, 112, 113, 69, 69, 69, 69, 69,
499 69, 119, 120, 121, 69, 122, 123, 124,
500 69, 69, 69, 69, 69, 126, 127, 128,
501 132, 69, 69, 69, 69, 110, 69, 71,
502 69, 69, 69, 69, 69, 69, 69, 69,
503 110, 111, 112, 113, 69, 69, 69, 69,
504 69, 69, 69, 120, 121, 69, 122, 123,
505 124, 69, 69, 69, 69, 69, 126, 127,
506 128, 132, 69, 69, 69, 69, 110, 69,
507 71, 69, 69, 69, 69, 69, 69, 69,
508 69, 110, 111, 112, 113, 69, 69, 69,
509 69, 69, 69, 69, 69, 121, 69, 122,
510 123, 124, 69, 69, 69, 69, 69, 126,
511 127, 128, 132, 69, 69, 69, 69, 110,
512 69, 134, 69, 71, 69, 69, 69, 69,
513 69, 69, 69, 109, 110, 111, 112, 113,
514 69, 115, 116, 69, 69, 69, 119, 120,
515 121, 69, 122, 123, 124, 69, 69, 69,
516 69, 69, 126, 127, 128, 132, 69, 69,
517 69, 69, 110, 69, 71, 69, 69, 69,
518 69, 69, 69, 69, 69, 110, 111, 112,
519 113, 69, 69, 69, 69, 69, 69, 69,
520 69, 69, 69, 122, 123, 124, 69, 69,
521 69, 69, 69, 126, 127, 128, 132, 69,
522 69, 69, 69, 110, 69, 134, 69, 71,
523 69, 69, 69, 69, 69, 69, 69, 109,
524 110, 111, 112, 113, 69, 69, 116, 69,
525 69, 69, 119, 120, 121, 69, 122, 123,
526 124, 69, 69, 69, 69, 69, 126, 127,
527 128, 132, 69, 69, 69, 69, 110, 69,
528 134, 69, 71, 69, 69, 69, 69, 69,
529 69, 69, 109, 110, 111, 112, 113, 69,
530 69, 69, 69, 69, 69, 119, 120, 121,
531 69, 122, 123, 124, 69, 69, 69, 69,
532 69, 126, 127, 128, 132, 69, 69, 69,
533 69, 110, 69, 134, 69, 71, 69, 69,
534 69, 69, 69, 69, 69, 109, 110, 111,
535 112, 113, 114, 115, 116, 69, 69, 69,
536 119, 120, 121, 69, 122, 123, 124, 69,
537 69, 69, 69, 69, 126, 127, 128, 132,
538 69, 69, 69, 69, 110, 69, 107, 108,
539 69, 71, 69, 69, 69, 69, 69, 69,
540 69, 109, 110, 111, 112, 113, 114, 115,
541 116, 117, 69, 118, 119, 120, 121, 69,
542 122, 123, 124, 69, 69, 69, 69, 125,
543 126, 127, 128, 129, 69, 69, 69, 69,
544 130, 69, 69, 131, 69, 107, 100, 100,
545 100, 100, 100, 100, 100, 100, 100, 100,
546 100, 100, 101, 100, 107, 96, 96, 96,
547 96, 96, 96, 96, 96, 96, 96, 96,
548 96, 98, 96, 107, 69, 69, 69, 69,
549 69, 69, 69, 69, 69, 69, 69, 69,
550 71, 69, 69, 69, 69, 69, 69, 69,
551 69, 110, 111, 112, 113, 69, 69, 69,
552 69, 69, 69, 69, 69, 69, 69, 122,
553 123, 124, 69, 69, 69, 69, 69, 126,
554 127, 128, 132, 69, 101, 100, 8, 9,
555 135, 11, 135, 135, 135, 135, 135, 135,
556 135, 13, 14, 15, 16, 17, 18, 19,
557 20, 21, 8, 22, 23, 24, 25, 135,
558 26, 27, 28, 135, 135, 135, 135, 32,
559 33, 34, 38, 32, 135, 135, 135, 135,
560 37, 135, 135, 38, 135, 8, 135, 135,
561 135, 135, 135, 135, 135, 135, 135, 135,
562 135, 135, 11, 135, 135, 135, 135, 135,
563 135, 135, 135, 14, 15, 16, 17, 135,
564 135, 135, 135, 135, 135, 135, 135, 135,
565 135, 26, 27, 28, 135, 135, 135, 135,
566 135, 33, 34, 38, 136, 135, 135, 135,
567 135, 14, 135, 11, 135, 135, 135, 135,
568 135, 135, 135, 135, 14, 15, 16, 17,
569 135, 135, 135, 135, 135, 135, 135, 135,
570 135, 135, 26, 27, 28, 135, 135, 135,
571 135, 135, 33, 34, 38, 136, 135, 11,
572 135, 135, 135, 135, 135, 135, 135, 135,
573 135, 15, 16, 17, 135, 135, 135, 135,
574 135, 135, 135, 135, 135, 135, 135, 135,
575 135, 135, 135, 135, 135, 135, 33, 34,
576 38, 135, 11, 135, 135, 135, 135, 135,
577 135, 135, 135, 135, 135, 16, 17, 135,
578 135, 135, 135, 135, 135, 135, 135, 135,
579 135, 135, 135, 135, 135, 135, 135, 135,
580 135, 33, 34, 38, 135, 11, 135, 135,
581 135, 135, 135, 135, 135, 135, 135, 135,
582 135, 17, 135, 135, 135, 135, 135, 135,
583 135, 135, 135, 135, 135, 135, 135, 135,
584 135, 135, 135, 135, 33, 34, 38, 135,
585 11, 135, 135, 135, 135, 135, 135, 135,
586 135, 135, 135, 135, 135, 135, 135, 135,
587 135, 135, 135, 135, 135, 135, 135, 135,
588 135, 135, 135, 135, 135, 135, 135, 33,
589 34, 135, 11, 135, 135, 135, 135, 135,
590 135, 135, 135, 135, 135, 135, 135, 135,
591 135, 135, 135, 135, 135, 135, 135, 135,
592 135, 135, 135, 135, 135, 135, 135, 135,
593 135, 135, 34, 135, 11, 137, 11, 135,
594 135, 135, 135, 135, 135, 135, 135, 135,
595 15, 16, 17, 135, 135, 135, 135, 135,
596 135, 135, 135, 135, 135, 26, 27, 28,
597 135, 135, 135, 135, 135, 33, 34, 38,
598 136, 135, 11, 135, 135, 135, 135, 135,
599 135, 135, 135, 135, 15, 16, 17, 135,
600 135, 135, 135, 135, 135, 135, 135, 135,
601 135, 135, 27, 28, 135, 135, 135, 135,
602 135, 33, 34, 38, 136, 135, 11, 135,
603 135, 135, 135, 135, 135, 135, 135, 135,
604 15, 16, 17, 135, 135, 135, 135, 135,
605 135, 135, 135, 135, 135, 135, 135, 28,
606 135, 135, 135, 135, 135, 33, 34, 38,
607 136, 135, 138, 135, 135, 135, 135, 135,
608 135, 135, 135, 135, 135, 135, 135, 11,
609 135, 11, 135, 135, 135, 135, 135, 135,
610 135, 135, 135, 15, 16, 17, 135, 135,
611 135, 135, 135, 135, 135, 135, 135, 135,
612 135, 135, 135, 135, 135, 135, 135, 135,
613 33, 34, 38, 136, 135, 11, 135, 135,
614 135, 135, 135, 135, 135, 13, 14, 15,
615 16, 17, 135, 135, 135, 135, 135, 135,
616 23, 24, 25, 135, 26, 27, 28, 135,
617 135, 135, 135, 135, 33, 34, 38, 136,
618 135, 135, 135, 135, 14, 135, 11, 135,
619 135, 135, 135, 135, 135, 135, 135, 14,
620 15, 16, 17, 135, 135, 135, 135, 135,
621 135, 23, 24, 25, 135, 26, 27, 28,
622 135, 135, 135, 135, 135, 33, 34, 38,
623 136, 135, 135, 135, 135, 14, 135, 11,
624 135, 135, 135, 135, 135, 135, 135, 135,
625 14, 15, 16, 17, 135, 135, 135, 135,
626 135, 135, 135, 24, 25, 135, 26, 27,
627 28, 135, 135, 135, 135, 135, 33, 34,
628 38, 136, 135, 135, 135, 135, 14, 135,
629 11, 135, 135, 135, 135, 135, 135, 135,
630 135, 14, 15, 16, 17, 135, 135, 135,
631 135, 135, 135, 135, 135, 25, 135, 26,
632 27, 28, 135, 135, 135, 135, 135, 33,
633 34, 38, 136, 135, 135, 135, 135, 14,
634 135, 139, 135, 11, 135, 135, 135, 135,
635 135, 135, 135, 13, 14, 15, 16, 17,
636 135, 19, 20, 135, 135, 135, 23, 24,
637 25, 135, 26, 27, 28, 135, 135, 135,
638 135, 135, 33, 34, 38, 136, 135, 135,
639 135, 135, 14, 135, 11, 135, 135, 135,
640 135, 135, 135, 135, 135, 14, 15, 16,
641 17, 135, 135, 135, 135, 135, 135, 135,
642 135, 135, 135, 26, 27, 28, 135, 135,
643 135, 135, 135, 33, 34, 38, 136, 135,
644 135, 135, 135, 14, 135, 139, 135, 11,
645 135, 135, 135, 135, 135, 135, 135, 13,
646 14, 15, 16, 17, 135, 135, 20, 135,
647 135, 135, 23, 24, 25, 135, 26, 27,
648 28, 135, 135, 135, 135, 135, 33, 34,
649 38, 136, 135, 135, 135, 135, 14, 135,
650 139, 135, 11, 135, 135, 135, 135, 135,
651 135, 135, 13, 14, 15, 16, 17, 135,
652 135, 135, 135, 135, 135, 23, 24, 25,
653 135, 26, 27, 28, 135, 135, 135, 135,
654 135, 33, 34, 38, 136, 135, 135, 135,
655 135, 14, 135, 139, 135, 11, 135, 135,
656 135, 135, 135, 135, 135, 13, 14, 15,
657 16, 17, 18, 19, 20, 135, 135, 135,
658 23, 24, 25, 135, 26, 27, 28, 135,
659 135, 135, 135, 135, 33, 34, 38, 136,
660 135, 135, 135, 135, 14, 135, 8, 9,
661 135, 11, 135, 135, 135, 135, 135, 135,
662 135, 13, 14, 15, 16, 17, 18, 19,
663 20, 21, 135, 22, 23, 24, 25, 135,
664 26, 27, 28, 135, 135, 135, 135, 32,
665 33, 34, 38, 32, 135, 135, 135, 135,
666 37, 135, 135, 38, 135, 8, 135, 135,
667 135, 135, 135, 135, 135, 135, 135, 135,
668 135, 135, 11, 135, 8, 135, 135, 135,
669 135, 135, 135, 135, 135, 135, 135, 135,
670 135, 11, 135, 135, 135, 135, 135, 135,
671 135, 135, 14, 15, 16, 17, 135, 135,
672 135, 135, 135, 135, 135, 135, 135, 135,
673 26, 27, 28, 135, 135, 135, 135, 135,
674 33, 34, 38, 136, 135, 140, 135, 135,
675 135, 135, 135, 135, 135, 135, 135, 11,
676 135, 10, 11, 135, 4, 135, 135, 135,
677 4, 135, 135, 135, 135, 135, 8, 9,
678 10, 11, 135, 135, 135, 135, 135, 135,
679 135, 13, 14, 15, 16, 17, 18, 19,
680 20, 21, 8, 22, 23, 24, 25, 135,
681 26, 27, 28, 135, 29, 30, 135, 32,
682 33, 34, 38, 32, 135, 135, 135, 135,
683 37, 135, 135, 38, 135, 11, 135, 135,
684 135, 135, 135, 135, 135, 135, 135, 135,
685 135, 135, 135, 135, 135, 135, 135, 135,
686 135, 135, 135, 135, 135, 135, 135, 135,
687 29, 30, 135, 11, 135, 135, 135, 135,
688 135, 135, 135, 135, 135, 135, 135, 135,
689 135, 135, 135, 135, 135, 135, 135, 135,
690 135, 135, 135, 135, 135, 135, 135, 30,
691 135, 4, 141, 141, 141, 4, 141, 143,
692 142, 142, 142, 142, 142, 142, 142, 142,
693 142, 142, 142, 142, 142, 142, 142, 142,
694 142, 142, 142, 142, 142, 142, 142, 142,
695 142, 142, 142, 142, 142, 142, 142, 142,
696 142, 142, 142, 144, 142, 145, 142, 145,
697 146, 142, 143, 142, 142, 142, 142, 142,
698 142, 142, 142, 142, 142, 142, 142, 142,
699 142, 142, 142, 142, 142, 142, 142, 142,
700 142, 142, 142, 142, 142, 142, 142, 142,
701 142, 142, 142, 142, 142, 1, 144, 144,
702 142, 143, 142, 142, 142, 142, 142, 142,
703 142, 142, 142, 142, 142, 142, 142, 142,
704 142, 142, 142, 142, 142, 142, 142, 142,
705 142, 142, 142, 142, 142, 142, 142, 142,
706 142, 142, 142, 142, 142, 144, 142, 145,
707 142, 143, 142, 142, 142, 142, 142, 142,
708 142, 142, 142, 142, 142, 142, 142, 142,
709 142, 142, 142, 142, 142, 142, 142, 142,
710 142, 142, 142, 142, 142, 142, 142, 142,
711 142, 142, 142, 142, 142, 144, 142, 145,
712 142, 145, 142, 40, 41, 39, 42, 39,
713 39, 39, 39, 39, 39, 39, 43, 44,
714 45, 46, 47, 48, 49, 50, 51, 40,
715 52, 53, 54, 55, 39, 56, 57, 58,
716 39, 59, 60, 39, 61, 62, 63, 64,
717 61, 1, 39, 2, 39, 65, 39, 39,
718 64, 39, 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, 98, 1,
727 3, 4, 1, 17, 5, 6, 7, 8,
728 21, 23, 24, 25, 26, 18, 19, 20,
729 12, 13, 14, 29, 30, 27, 9, 10,
730 11, 28, 15, 16, 22, 1, 32, 1,
731 45, 33, 34, 35, 36, 49, 51, 52,
732 53, 54, 46, 47, 48, 40, 41, 42,
733 55, 37, 38, 39, 56, 57, 58, 43,
734 1, 44, 1, 50, 1, 1, 1, 60,
735 1, 1, 1, 62, 63, 76, 64, 65,
736 66, 67, 80, 82, 83, 84, 85, 77,
737 78, 79, 71, 72, 73, 86, 68, 69,
738 70, 87, 88, 89, 74, 75, 81, 1,
739 102, 1, 103, 109, 117, 1, 1, 1,
740 123, 124, 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, 6, 7, 0, 8, 9,
749 0, 0, 10, 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, 0, 11, 0, 12,
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, 0,
756 13, 0, 14, 0, 15, 16, 17, 0,
757 18, 19, 20, 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, 0, 21,
761 0, 22, 0, 0, 0, 23, 24, 25,
762 0, 0, 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, 40, 40, 40, 40, 40, 40,
805 40, 40, 40, 40, 40, 40, 40, 40,
806 40, 40, 40, 40, 40, 40, 40, 40,
807 40, 40, 40, 40, 40, 40, 40, 70,
808 70, 70, 70, 70, 70, 70, 70, 70,
809 70, 70, 70, 97, 70, 70, 70, 70,
810 70, 70, 70, 70, 70, 70, 70, 101,
811 97, 70, 101, 103, 106, 70, 70, 70,
812 70, 70, 70, 70, 70, 70, 70, 70,
813 70, 70, 97, 70, 70, 70, 70, 70,
814 70, 70, 70, 70, 70, 70, 101, 97,
815 70, 101, 136, 136, 136, 136, 136, 136,
816 136, 136, 138, 136, 136, 136, 136, 136,
817 136, 136, 136, 136, 136, 136, 136, 136,
818 136, 136, 136, 136, 136, 136, 136, 136,
819 136, 142, 143, 143, 143, 143, 40
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 186 "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 ()__anonddaa6bf10108894 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 286 "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 7:
978 #line 1 "NONE"
979 {te = p+1;}
980 break;
981 case 16:
982 #line 173 "hb-ot-shaper-use-machine.rl"
983 {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
984 break;
985 case 14:
986 #line 174 "hb-ot-shaper-use-machine.rl"
987 {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
988 break;
989 case 12:
990 #line 175 "hb-ot-shaper-use-machine.rl"
991 {te = p+1;{ found_syllable (use_standard_cluster); }}
992 break;
993 case 20:
994 #line 176 "hb-ot-shaper-use-machine.rl"
995 {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
996 break;
997 case 18:
998 #line 177 "hb-ot-shaper-use-machine.rl"
999 {te = p+1;{ found_syllable (use_numeral_cluster); }}
1000 break;
1001 case 10:
1002 #line 178 "hb-ot-shaper-use-machine.rl"
1003 {te = p+1;{ found_syllable (use_symbol_cluster); }}
1004 break;
1005 case 25:
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 181 "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 182 "hb-ot-shaper-use-machine.rl"
1015 {te = p+1;{ found_syllable (use_non_cluster); }}
1016 break;
1017 case 15:
1018 #line 173 "hb-ot-shaper-use-machine.rl"
1019 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1020 break;
1021 case 13:
1022 #line 174 "hb-ot-shaper-use-machine.rl"
1023 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1024 break;
1025 case 11:
1026 #line 175 "hb-ot-shaper-use-machine.rl"
1027 {te = p;p--;{ found_syllable (use_standard_cluster); }}
1028 break;
1029 case 19:
1030 #line 176 "hb-ot-shaper-use-machine.rl"
1031 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1032 break;
1033 case 17:
1034 #line 177 "hb-ot-shaper-use-machine.rl"
1035 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1036 break;
1037 case 9:
1038 #line 178 "hb-ot-shaper-use-machine.rl"
1039 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1040 break;
1041 case 24:
1042 #line 179 "hb-ot-shaper-use-machine.rl"
1043 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1044 break;
1045 case 21:
1046 #line 181 "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 23:
1050 #line 182 "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 case 22:
1058 #line 1 "NONE"
1059 { switch( act ) {
1060 case 8:
1061 {{p = ((te))-1;} found_syllable (use_non_cluster); }
1062 break;
1063 case 9:
1064 {{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
1065 break;
1066 }
1067 }
1068 break;
1069 case 6:
1070 #line 1 "NONE"
1071 {te = p+1;}
1072 #line 180 "hb-ot-shaper-use-machine.rl"
1073 {act = 8;}
1074 break;
1075 case 8:
1076 #line 1 "NONE"
1077 {te = p+1;}
1078 #line 181 "hb-ot-shaper-use-machine.rl"
1079 {act = 9;}
1080 break;
1081 #line 1082 "hb-ot-shaper-use-machine.hh"
1082 }
1083
1084 _again:
1085 switch ( _use_syllable_machine_to_state_actions[cs] ) {
1086 case 2:
1087 #line 1 "NONE"
1088 {ts = 0;}
1089 break;
1090 #line 1091 "hb-ot-shaper-use-machine.hh"
1091 }
1092
1093 if ( ++p != pe )
1094 goto _resume;
1095 _test_eof: {}
1096 if ( p == eof )
1097 {
1098 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1099 _trans = _use_syllable_machine_eof_trans[cs] - 1;
1100 goto _eof_trans;
1101 }
1102 }
1103
1104 }
1105
1106 #line 291 "hb-ot-shaper-use-machine.rl"
1107
1108 }
1109
1110 #undef found_syllable
1111
1112 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1113