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_SB 51u
85 #define use_syllable_machine_ex_SE 52u
86 #define use_syllable_machine_ex_SMAbv 41u
87 #define use_syllable_machine_ex_SMBlw 42u
88 #define use_syllable_machine_ex_SUB 11u
89 #define use_syllable_machine_ex_Sk 48u
90 #define use_syllable_machine_ex_VAbv 33u
91 #define use_syllable_machine_ex_VBlw 34u
92 #define use_syllable_machine_ex_VMAbv 37u
93 #define use_syllable_machine_ex_VMBlw 38u
94 #define use_syllable_machine_ex_VMPre 23u
95 #define use_syllable_machine_ex_VMPst 39u
96 #define use_syllable_machine_ex_VPre 22u
97 #define use_syllable_machine_ex_VPst 35u
98 #define use_syllable_machine_ex_WJ 16u
99 #define use_syllable_machine_ex_ZWNJ 14u
100
101
102 #line 103 "hb-ot-shaper-use-machine.hh"
103 static const unsigned char _use_syllable_machine_trans_keys[] = {
104 49u, 51u, 0u, 53u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u,
105 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u,
106 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u,
107 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 53u,
108 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u,
109 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u,
110 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u,
111 1u, 14u, 1u, 48u, 13u, 14u, 4u, 14u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u,
112 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u,
113 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u,
114 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 14u, 1u, 48u,
115 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u,
116 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u,
117 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u,
118 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 53u, 14u, 42u, 14u, 42u, 1u, 5u,
119 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 53u, 0
120 };
121
122 static const char _use_syllable_machine_key_spans[] = {
123 3, 54, 43, 43, 53, 35, 34, 34,
124 34, 33, 33, 1, 35, 35, 35, 14,
125 35, 40, 40, 40, 40, 42, 40, 42,
126 42, 42, 43, 14, 48, 29, 29, 43,
127 53, 35, 34, 34, 34, 33, 33, 1,
128 35, 35, 35, 14, 35, 40, 40, 40,
129 40, 42, 40, 42, 42, 42, 43, 14,
130 14, 48, 2, 11, 43, 43, 53, 35,
131 34, 34, 34, 33, 33, 1, 35, 35,
132 35, 14, 35, 40, 40, 40, 40, 42,
133 40, 42, 42, 42, 43, 14, 14, 48,
134 43, 53, 35, 34, 34, 34, 33, 33,
135 1, 35, 35, 35, 14, 35, 40, 40,
136 40, 40, 42, 40, 42, 42, 42, 43,
137 14, 48, 11, 2, 53, 29, 29, 5,
138 42, 38, 39, 41, 43
139 };
140
141 static const short _use_syllable_machine_index_offsets[] = {
142 0, 4, 59, 103, 147, 201, 237, 272,
143 307, 342, 376, 410, 412, 448, 484, 520,
144 535, 571, 612, 653, 694, 735, 778, 819,
145 862, 905, 948, 992, 1007, 1056, 1086, 1116,
146 1160, 1214, 1250, 1285, 1320, 1355, 1389, 1423,
147 1425, 1461, 1497, 1533, 1548, 1584, 1625, 1666,
148 1707, 1748, 1791, 1832, 1875, 1918, 1961, 2005,
149 2020, 2035, 2084, 2087, 2099, 2143, 2187, 2241,
150 2277, 2312, 2347, 2382, 2416, 2450, 2452, 2488,
151 2524, 2560, 2575, 2611, 2652, 2693, 2734, 2775,
152 2818, 2859, 2902, 2945, 2988, 3032, 3047, 3062,
153 3111, 3155, 3209, 3245, 3280, 3315, 3350, 3384,
154 3418, 3420, 3456, 3492, 3528, 3543, 3579, 3620,
155 3661, 3702, 3743, 3786, 3827, 3870, 3913, 3956,
156 4000, 4015, 4064, 4076, 4079, 4133, 4163, 4193,
157 4199, 4242, 4281, 4321, 4363
158 };
159
160 static const unsigned char _use_syllable_machine_indicies[] = {
161 1, 0, 2, 0, 3, 4, 5, 5,
162 6, 7, 5, 5, 5, 5, 5, 8,
163 9, 10, 11, 5, 5, 5, 12, 5,
164 5, 5, 13, 14, 15, 16, 17, 18,
165 19, 20, 21, 8, 22, 23, 24, 25,
166 5, 26, 27, 28, 5, 29, 30, 31,
167 32, 33, 34, 35, 32, 1, 5, 36,
168 5, 37, 5, 39, 40, 38, 41, 38,
169 38, 38, 38, 38, 38, 38, 42, 43,
170 44, 45, 46, 47, 48, 49, 50, 39,
171 51, 52, 53, 54, 38, 55, 56, 57,
172 38, 58, 59, 38, 60, 61, 62, 63,
173 60, 38, 38, 38, 38, 64, 38, 39,
174 40, 38, 41, 38, 38, 38, 38, 38,
175 38, 38, 42, 43, 44, 45, 46, 47,
176 48, 49, 50, 39, 51, 52, 53, 54,
177 38, 55, 56, 57, 38, 38, 38, 38,
178 60, 61, 62, 63, 60, 38, 38, 38,
179 38, 64, 38, 39, 38, 38, 38, 38,
180 38, 38, 38, 38, 38, 38, 38, 38,
181 41, 38, 38, 38, 38, 38, 38, 38,
182 38, 43, 44, 45, 46, 38, 38, 38,
183 38, 38, 38, 38, 38, 38, 38, 55,
184 56, 57, 38, 38, 38, 38, 38, 61,
185 62, 63, 65, 38, 38, 38, 38, 43,
186 38, 41, 38, 38, 38, 38, 38, 38,
187 38, 38, 43, 44, 45, 46, 38, 38,
188 38, 38, 38, 38, 38, 38, 38, 38,
189 55, 56, 57, 38, 38, 38, 38, 38,
190 61, 62, 63, 65, 38, 41, 38, 38,
191 38, 38, 38, 38, 38, 38, 38, 44,
192 45, 46, 38, 38, 38, 38, 38, 38,
193 38, 38, 38, 38, 38, 38, 38, 38,
194 38, 38, 38, 38, 61, 62, 63, 38,
195 41, 38, 38, 38, 38, 38, 38, 38,
196 38, 38, 38, 45, 46, 38, 38, 38,
197 38, 38, 38, 38, 38, 38, 38, 38,
198 38, 38, 38, 38, 38, 38, 38, 61,
199 62, 63, 38, 41, 38, 38, 38, 38,
200 38, 38, 38, 38, 38, 38, 38, 46,
201 38, 38, 38, 38, 38, 38, 38, 38,
202 38, 38, 38, 38, 38, 38, 38, 38,
203 38, 38, 61, 62, 63, 38, 41, 38,
204 38, 38, 38, 38, 38, 38, 38, 38,
205 38, 38, 38, 38, 38, 38, 38, 38,
206 38, 38, 38, 38, 38, 38, 38, 38,
207 38, 38, 38, 38, 38, 61, 62, 38,
208 41, 38, 38, 38, 38, 38, 38, 38,
209 38, 38, 38, 38, 38, 38, 38, 38,
210 38, 38, 38, 38, 38, 38, 38, 38,
211 38, 38, 38, 38, 38, 38, 38, 38,
212 62, 38, 41, 38, 41, 38, 38, 38,
213 38, 38, 38, 38, 38, 38, 44, 45,
214 46, 38, 38, 38, 38, 38, 38, 38,
215 38, 38, 38, 55, 56, 57, 38, 38,
216 38, 38, 38, 61, 62, 63, 65, 38,
217 41, 38, 38, 38, 38, 38, 38, 38,
218 38, 38, 44, 45, 46, 38, 38, 38,
219 38, 38, 38, 38, 38, 38, 38, 38,
220 56, 57, 38, 38, 38, 38, 38, 61,
221 62, 63, 65, 38, 41, 38, 38, 38,
222 38, 38, 38, 38, 38, 38, 44, 45,
223 46, 38, 38, 38, 38, 38, 38, 38,
224 38, 38, 38, 38, 38, 57, 38, 38,
225 38, 38, 38, 61, 62, 63, 65, 38,
226 66, 38, 38, 38, 38, 38, 38, 38,
227 38, 38, 38, 38, 38, 41, 38, 41,
228 38, 38, 38, 38, 38, 38, 38, 38,
229 38, 44, 45, 46, 38, 38, 38, 38,
230 38, 38, 38, 38, 38, 38, 38, 38,
231 38, 38, 38, 38, 38, 38, 61, 62,
232 63, 65, 38, 41, 38, 38, 38, 38,
233 38, 38, 38, 42, 43, 44, 45, 46,
234 38, 38, 38, 38, 38, 38, 52, 53,
235 54, 38, 55, 56, 57, 38, 38, 38,
236 38, 38, 61, 62, 63, 65, 38, 38,
237 38, 38, 43, 38, 41, 38, 38, 38,
238 38, 38, 38, 38, 38, 43, 44, 45,
239 46, 38, 38, 38, 38, 38, 38, 52,
240 53, 54, 38, 55, 56, 57, 38, 38,
241 38, 38, 38, 61, 62, 63, 65, 38,
242 38, 38, 38, 43, 38, 41, 38, 38,
243 38, 38, 38, 38, 38, 38, 43, 44,
244 45, 46, 38, 38, 38, 38, 38, 38,
245 38, 53, 54, 38, 55, 56, 57, 38,
246 38, 38, 38, 38, 61, 62, 63, 65,
247 38, 38, 38, 38, 43, 38, 41, 38,
248 38, 38, 38, 38, 38, 38, 38, 43,
249 44, 45, 46, 38, 38, 38, 38, 38,
250 38, 38, 38, 54, 38, 55, 56, 57,
251 38, 38, 38, 38, 38, 61, 62, 63,
252 65, 38, 38, 38, 38, 43, 38, 67,
253 38, 41, 38, 38, 38, 38, 38, 38,
254 38, 42, 43, 44, 45, 46, 38, 48,
255 49, 38, 38, 38, 52, 53, 54, 38,
256 55, 56, 57, 38, 38, 38, 38, 38,
257 61, 62, 63, 65, 38, 38, 38, 38,
258 43, 38, 41, 38, 38, 38, 38, 38,
259 38, 38, 38, 43, 44, 45, 46, 38,
260 38, 38, 38, 38, 38, 38, 38, 38,
261 38, 55, 56, 57, 38, 38, 38, 38,
262 38, 61, 62, 63, 65, 38, 38, 38,
263 38, 43, 38, 67, 38, 41, 38, 38,
264 38, 38, 38, 38, 38, 42, 43, 44,
265 45, 46, 38, 38, 49, 38, 38, 38,
266 52, 53, 54, 38, 55, 56, 57, 38,
267 38, 38, 38, 38, 61, 62, 63, 65,
268 38, 38, 38, 38, 43, 38, 67, 38,
269 41, 38, 38, 38, 38, 38, 38, 38,
270 42, 43, 44, 45, 46, 38, 38, 38,
271 38, 38, 38, 52, 53, 54, 38, 55,
272 56, 57, 38, 38, 38, 38, 38, 61,
273 62, 63, 65, 38, 38, 38, 38, 43,
274 38, 67, 38, 41, 38, 38, 38, 38,
275 38, 38, 38, 42, 43, 44, 45, 46,
276 47, 48, 49, 38, 38, 38, 52, 53,
277 54, 38, 55, 56, 57, 38, 38, 38,
278 38, 38, 61, 62, 63, 65, 38, 38,
279 38, 38, 43, 38, 39, 40, 38, 41,
280 38, 38, 38, 38, 38, 38, 38, 42,
281 43, 44, 45, 46, 47, 48, 49, 50,
282 38, 51, 52, 53, 54, 38, 55, 56,
283 57, 38, 38, 38, 38, 60, 61, 62,
284 63, 60, 38, 38, 38, 38, 64, 38,
285 39, 38, 38, 38, 38, 38, 38, 38,
286 38, 38, 38, 38, 38, 41, 38, 39,
287 38, 38, 38, 38, 38, 38, 38, 38,
288 38, 38, 38, 38, 41, 38, 38, 38,
289 38, 38, 38, 38, 38, 43, 44, 45,
290 46, 38, 38, 38, 38, 38, 38, 38,
291 38, 38, 38, 55, 56, 57, 38, 38,
292 38, 38, 38, 61, 62, 63, 65, 38,
293 41, 38, 38, 38, 38, 38, 38, 38,
294 38, 38, 38, 38, 38, 38, 38, 38,
295 38, 38, 38, 38, 38, 38, 38, 38,
296 38, 38, 38, 58, 59, 38, 41, 38,
297 38, 38, 38, 38, 38, 38, 38, 38,
298 38, 38, 38, 38, 38, 38, 38, 38,
299 38, 38, 38, 38, 38, 38, 38, 38,
300 38, 38, 59, 38, 4, 69, 68, 70,
301 68, 68, 68, 68, 68, 68, 68, 71,
302 72, 73, 74, 75, 76, 77, 78, 79,
303 4, 80, 81, 82, 83, 68, 84, 85,
304 86, 68, 68, 68, 68, 87, 88, 89,
305 90, 91, 68, 68, 68, 68, 92, 68,
306 4, 68, 68, 68, 68, 68, 68, 68,
307 68, 68, 68, 68, 68, 70, 68, 68,
308 68, 68, 68, 68, 68, 68, 72, 73,
309 74, 75, 68, 68, 68, 68, 68, 68,
310 68, 68, 68, 68, 84, 85, 86, 68,
311 68, 68, 68, 68, 88, 89, 90, 93,
312 68, 68, 68, 68, 72, 68, 70, 68,
313 68, 68, 68, 68, 68, 68, 68, 72,
314 73, 74, 75, 68, 68, 68, 68, 68,
315 68, 68, 68, 68, 68, 84, 85, 86,
316 68, 68, 68, 68, 68, 88, 89, 90,
317 93, 68, 70, 68, 68, 68, 68, 68,
318 68, 68, 68, 68, 73, 74, 75, 68,
319 68, 68, 68, 68, 68, 68, 68, 68,
320 68, 68, 68, 68, 68, 68, 68, 68,
321 68, 88, 89, 90, 68, 70, 68, 68,
322 68, 68, 68, 68, 68, 68, 68, 68,
323 74, 75, 68, 68, 68, 68, 68, 68,
324 68, 68, 68, 68, 68, 68, 68, 68,
325 68, 68, 68, 68, 88, 89, 90, 68,
326 70, 68, 68, 68, 68, 68, 68, 68,
327 68, 68, 68, 68, 75, 68, 68, 68,
328 68, 68, 68, 68, 68, 68, 68, 68,
329 68, 68, 68, 68, 68, 68, 68, 88,
330 89, 90, 68, 70, 68, 68, 68, 68,
331 68, 68, 68, 68, 68, 68, 68, 68,
332 68, 68, 68, 68, 68, 68, 68, 68,
333 68, 68, 68, 68, 68, 68, 68, 68,
334 68, 68, 88, 89, 68, 70, 68, 68,
335 68, 68, 68, 68, 68, 68, 68, 68,
336 68, 68, 68, 68, 68, 68, 68, 68,
337 68, 68, 68, 68, 68, 68, 68, 68,
338 68, 68, 68, 68, 68, 89, 68, 70,
339 68, 70, 68, 68, 68, 68, 68, 68,
340 68, 68, 68, 73, 74, 75, 68, 68,
341 68, 68, 68, 68, 68, 68, 68, 68,
342 84, 85, 86, 68, 68, 68, 68, 68,
343 88, 89, 90, 93, 68, 70, 68, 68,
344 68, 68, 68, 68, 68, 68, 68, 73,
345 74, 75, 68, 68, 68, 68, 68, 68,
346 68, 68, 68, 68, 68, 85, 86, 68,
347 68, 68, 68, 68, 88, 89, 90, 93,
348 68, 70, 68, 68, 68, 68, 68, 68,
349 68, 68, 68, 73, 74, 75, 68, 68,
350 68, 68, 68, 68, 68, 68, 68, 68,
351 68, 68, 86, 68, 68, 68, 68, 68,
352 88, 89, 90, 93, 68, 95, 94, 94,
353 94, 94, 94, 94, 94, 94, 94, 94,
354 94, 94, 96, 94, 70, 68, 68, 68,
355 68, 68, 68, 68, 68, 68, 73, 74,
356 75, 68, 68, 68, 68, 68, 68, 68,
357 68, 68, 68, 68, 68, 68, 68, 68,
358 68, 68, 68, 88, 89, 90, 93, 68,
359 70, 68, 68, 68, 68, 68, 68, 68,
360 71, 72, 73, 74, 75, 68, 68, 68,
361 68, 68, 68, 81, 82, 83, 68, 84,
362 85, 86, 68, 68, 68, 68, 68, 88,
363 89, 90, 93, 68, 68, 68, 68, 72,
364 68, 70, 68, 68, 68, 68, 68, 68,
365 68, 68, 72, 73, 74, 75, 68, 68,
366 68, 68, 68, 68, 81, 82, 83, 68,
367 84, 85, 86, 68, 68, 68, 68, 68,
368 88, 89, 90, 93, 68, 68, 68, 68,
369 72, 68, 70, 68, 68, 68, 68, 68,
370 68, 68, 68, 72, 73, 74, 75, 68,
371 68, 68, 68, 68, 68, 68, 82, 83,
372 68, 84, 85, 86, 68, 68, 68, 68,
373 68, 88, 89, 90, 93, 68, 68, 68,
374 68, 72, 68, 70, 68, 68, 68, 68,
375 68, 68, 68, 68, 72, 73, 74, 75,
376 68, 68, 68, 68, 68, 68, 68, 68,
377 83, 68, 84, 85, 86, 68, 68, 68,
378 68, 68, 88, 89, 90, 93, 68, 68,
379 68, 68, 72, 68, 97, 68, 70, 68,
380 68, 68, 68, 68, 68, 68, 71, 72,
381 73, 74, 75, 68, 77, 78, 68, 68,
382 68, 81, 82, 83, 68, 84, 85, 86,
383 68, 68, 68, 68, 68, 88, 89, 90,
384 93, 68, 68, 68, 68, 72, 68, 70,
385 68, 68, 68, 68, 68, 68, 68, 68,
386 72, 73, 74, 75, 68, 68, 68, 68,
387 68, 68, 68, 68, 68, 68, 84, 85,
388 86, 68, 68, 68, 68, 68, 88, 89,
389 90, 93, 68, 68, 68, 68, 72, 68,
390 97, 68, 70, 68, 68, 68, 68, 68,
391 68, 68, 71, 72, 73, 74, 75, 68,
392 68, 78, 68, 68, 68, 81, 82, 83,
393 68, 84, 85, 86, 68, 68, 68, 68,
394 68, 88, 89, 90, 93, 68, 68, 68,
395 68, 72, 68, 97, 68, 70, 68, 68,
396 68, 68, 68, 68, 68, 71, 72, 73,
397 74, 75, 68, 68, 68, 68, 68, 68,
398 81, 82, 83, 68, 84, 85, 86, 68,
399 68, 68, 68, 68, 88, 89, 90, 93,
400 68, 68, 68, 68, 72, 68, 97, 68,
401 70, 68, 68, 68, 68, 68, 68, 68,
402 71, 72, 73, 74, 75, 76, 77, 78,
403 68, 68, 68, 81, 82, 83, 68, 84,
404 85, 86, 68, 68, 68, 68, 68, 88,
405 89, 90, 93, 68, 68, 68, 68, 72,
406 68, 4, 69, 68, 70, 68, 68, 68,
407 68, 68, 68, 68, 71, 72, 73, 74,
408 75, 76, 77, 78, 79, 68, 80, 81,
409 82, 83, 68, 84, 85, 86, 68, 68,
410 68, 68, 87, 88, 89, 90, 91, 68,
411 68, 68, 68, 92, 68, 4, 98, 98,
412 98, 98, 98, 98, 98, 98, 98, 98,
413 98, 98, 99, 98, 4, 94, 94, 94,
414 94, 94, 94, 94, 94, 94, 94, 94,
415 94, 96, 94, 4, 68, 68, 68, 68,
416 68, 68, 68, 68, 68, 68, 68, 68,
417 70, 68, 68, 68, 68, 68, 68, 68,
418 68, 72, 73, 74, 75, 68, 68, 68,
419 68, 68, 68, 68, 68, 68, 68, 84,
420 85, 86, 68, 68, 68, 68, 68, 88,
421 89, 90, 93, 68, 101, 102, 100, 6,
422 103, 103, 103, 103, 103, 103, 103, 103,
423 103, 104, 103, 105, 106, 68, 70, 68,
424 68, 68, 68, 68, 68, 68, 107, 108,
425 109, 110, 111, 112, 113, 114, 115, 105,
426 116, 117, 118, 119, 68, 120, 121, 122,
427 68, 58, 59, 68, 123, 124, 125, 126,
428 127, 68, 68, 68, 68, 128, 68, 105,
429 106, 68, 70, 68, 68, 68, 68, 68,
430 68, 68, 107, 108, 109, 110, 111, 112,
431 113, 114, 115, 105, 116, 117, 118, 119,
432 68, 120, 121, 122, 68, 68, 68, 68,
433 123, 124, 125, 126, 127, 68, 68, 68,
434 68, 128, 68, 105, 68, 68, 68, 68,
435 68, 68, 68, 68, 68, 68, 68, 68,
436 70, 68, 68, 68, 68, 68, 68, 68,
437 68, 108, 109, 110, 111, 68, 68, 68,
438 68, 68, 68, 68, 68, 68, 68, 120,
439 121, 122, 68, 68, 68, 68, 68, 124,
440 125, 126, 129, 68, 68, 68, 68, 108,
441 68, 70, 68, 68, 68, 68, 68, 68,
442 68, 68, 108, 109, 110, 111, 68, 68,
443 68, 68, 68, 68, 68, 68, 68, 68,
444 120, 121, 122, 68, 68, 68, 68, 68,
445 124, 125, 126, 129, 68, 70, 68, 68,
446 68, 68, 68, 68, 68, 68, 68, 109,
447 110, 111, 68, 68, 68, 68, 68, 68,
448 68, 68, 68, 68, 68, 68, 68, 68,
449 68, 68, 68, 68, 124, 125, 126, 68,
450 70, 68, 68, 68, 68, 68, 68, 68,
451 68, 68, 68, 110, 111, 68, 68, 68,
452 68, 68, 68, 68, 68, 68, 68, 68,
453 68, 68, 68, 68, 68, 68, 68, 124,
454 125, 126, 68, 70, 68, 68, 68, 68,
455 68, 68, 68, 68, 68, 68, 68, 111,
456 68, 68, 68, 68, 68, 68, 68, 68,
457 68, 68, 68, 68, 68, 68, 68, 68,
458 68, 68, 124, 125, 126, 68, 70, 68,
459 68, 68, 68, 68, 68, 68, 68, 68,
460 68, 68, 68, 68, 68, 68, 68, 68,
461 68, 68, 68, 68, 68, 68, 68, 68,
462 68, 68, 68, 68, 68, 124, 125, 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, 68,
467 125, 68, 70, 68, 70, 68, 68, 68,
468 68, 68, 68, 68, 68, 68, 109, 110,
469 111, 68, 68, 68, 68, 68, 68, 68,
470 68, 68, 68, 120, 121, 122, 68, 68,
471 68, 68, 68, 124, 125, 126, 129, 68,
472 70, 68, 68, 68, 68, 68, 68, 68,
473 68, 68, 109, 110, 111, 68, 68, 68,
474 68, 68, 68, 68, 68, 68, 68, 68,
475 121, 122, 68, 68, 68, 68, 68, 124,
476 125, 126, 129, 68, 70, 68, 68, 68,
477 68, 68, 68, 68, 68, 68, 109, 110,
478 111, 68, 68, 68, 68, 68, 68, 68,
479 68, 68, 68, 68, 68, 122, 68, 68,
480 68, 68, 68, 124, 125, 126, 129, 68,
481 130, 94, 94, 94, 94, 94, 94, 94,
482 94, 94, 94, 94, 94, 96, 94, 70,
483 68, 68, 68, 68, 68, 68, 68, 68,
484 68, 109, 110, 111, 68, 68, 68, 68,
485 68, 68, 68, 68, 68, 68, 68, 68,
486 68, 68, 68, 68, 68, 68, 124, 125,
487 126, 129, 68, 70, 68, 68, 68, 68,
488 68, 68, 68, 107, 108, 109, 110, 111,
489 68, 68, 68, 68, 68, 68, 117, 118,
490 119, 68, 120, 121, 122, 68, 68, 68,
491 68, 68, 124, 125, 126, 129, 68, 68,
492 68, 68, 108, 68, 70, 68, 68, 68,
493 68, 68, 68, 68, 68, 108, 109, 110,
494 111, 68, 68, 68, 68, 68, 68, 117,
495 118, 119, 68, 120, 121, 122, 68, 68,
496 68, 68, 68, 124, 125, 126, 129, 68,
497 68, 68, 68, 108, 68, 70, 68, 68,
498 68, 68, 68, 68, 68, 68, 108, 109,
499 110, 111, 68, 68, 68, 68, 68, 68,
500 68, 118, 119, 68, 120, 121, 122, 68,
501 68, 68, 68, 68, 124, 125, 126, 129,
502 68, 68, 68, 68, 108, 68, 70, 68,
503 68, 68, 68, 68, 68, 68, 68, 108,
504 109, 110, 111, 68, 68, 68, 68, 68,
505 68, 68, 68, 119, 68, 120, 121, 122,
506 68, 68, 68, 68, 68, 124, 125, 126,
507 129, 68, 68, 68, 68, 108, 68, 131,
508 68, 70, 68, 68, 68, 68, 68, 68,
509 68, 107, 108, 109, 110, 111, 68, 113,
510 114, 68, 68, 68, 117, 118, 119, 68,
511 120, 121, 122, 68, 68, 68, 68, 68,
512 124, 125, 126, 129, 68, 68, 68, 68,
513 108, 68, 70, 68, 68, 68, 68, 68,
514 68, 68, 68, 108, 109, 110, 111, 68,
515 68, 68, 68, 68, 68, 68, 68, 68,
516 68, 120, 121, 122, 68, 68, 68, 68,
517 68, 124, 125, 126, 129, 68, 68, 68,
518 68, 108, 68, 131, 68, 70, 68, 68,
519 68, 68, 68, 68, 68, 107, 108, 109,
520 110, 111, 68, 68, 114, 68, 68, 68,
521 117, 118, 119, 68, 120, 121, 122, 68,
522 68, 68, 68, 68, 124, 125, 126, 129,
523 68, 68, 68, 68, 108, 68, 131, 68,
524 70, 68, 68, 68, 68, 68, 68, 68,
525 107, 108, 109, 110, 111, 68, 68, 68,
526 68, 68, 68, 117, 118, 119, 68, 120,
527 121, 122, 68, 68, 68, 68, 68, 124,
528 125, 126, 129, 68, 68, 68, 68, 108,
529 68, 131, 68, 70, 68, 68, 68, 68,
530 68, 68, 68, 107, 108, 109, 110, 111,
531 112, 113, 114, 68, 68, 68, 117, 118,
532 119, 68, 120, 121, 122, 68, 68, 68,
533 68, 68, 124, 125, 126, 129, 68, 68,
534 68, 68, 108, 68, 105, 106, 68, 70,
535 68, 68, 68, 68, 68, 68, 68, 107,
536 108, 109, 110, 111, 112, 113, 114, 115,
537 68, 116, 117, 118, 119, 68, 120, 121,
538 122, 68, 68, 68, 68, 123, 124, 125,
539 126, 127, 68, 68, 68, 68, 128, 68,
540 105, 98, 98, 98, 98, 98, 98, 98,
541 98, 98, 98, 98, 98, 99, 98, 105,
542 94, 94, 94, 94, 94, 94, 94, 94,
543 94, 94, 94, 94, 96, 94, 105, 68,
544 68, 68, 68, 68, 68, 68, 68, 68,
545 68, 68, 68, 70, 68, 68, 68, 68,
546 68, 68, 68, 68, 108, 109, 110, 111,
547 68, 68, 68, 68, 68, 68, 68, 68,
548 68, 68, 120, 121, 122, 68, 68, 68,
549 68, 68, 124, 125, 126, 129, 68, 8,
550 9, 132, 11, 132, 132, 132, 132, 132,
551 132, 132, 13, 14, 15, 16, 17, 18,
552 19, 20, 21, 8, 22, 23, 24, 25,
553 132, 26, 27, 28, 132, 132, 132, 132,
554 32, 33, 34, 35, 32, 132, 132, 132,
555 132, 37, 132, 8, 132, 132, 132, 132,
556 132, 132, 132, 132, 132, 132, 132, 132,
557 11, 132, 132, 132, 132, 132, 132, 132,
558 132, 14, 15, 16, 17, 132, 132, 132,
559 132, 132, 132, 132, 132, 132, 132, 26,
560 27, 28, 132, 132, 132, 132, 132, 33,
561 34, 35, 133, 132, 132, 132, 132, 14,
562 132, 11, 132, 132, 132, 132, 132, 132,
563 132, 132, 14, 15, 16, 17, 132, 132,
564 132, 132, 132, 132, 132, 132, 132, 132,
565 26, 27, 28, 132, 132, 132, 132, 132,
566 33, 34, 35, 133, 132, 11, 132, 132,
567 132, 132, 132, 132, 132, 132, 132, 15,
568 16, 17, 132, 132, 132, 132, 132, 132,
569 132, 132, 132, 132, 132, 132, 132, 132,
570 132, 132, 132, 132, 33, 34, 35, 132,
571 11, 132, 132, 132, 132, 132, 132, 132,
572 132, 132, 132, 16, 17, 132, 132, 132,
573 132, 132, 132, 132, 132, 132, 132, 132,
574 132, 132, 132, 132, 132, 132, 132, 33,
575 34, 35, 132, 11, 132, 132, 132, 132,
576 132, 132, 132, 132, 132, 132, 132, 17,
577 132, 132, 132, 132, 132, 132, 132, 132,
578 132, 132, 132, 132, 132, 132, 132, 132,
579 132, 132, 33, 34, 35, 132, 11, 132,
580 132, 132, 132, 132, 132, 132, 132, 132,
581 132, 132, 132, 132, 132, 132, 132, 132,
582 132, 132, 132, 132, 132, 132, 132, 132,
583 132, 132, 132, 132, 132, 33, 34, 132,
584 11, 132, 132, 132, 132, 132, 132, 132,
585 132, 132, 132, 132, 132, 132, 132, 132,
586 132, 132, 132, 132, 132, 132, 132, 132,
587 132, 132, 132, 132, 132, 132, 132, 132,
588 34, 132, 11, 132, 11, 132, 132, 132,
589 132, 132, 132, 132, 132, 132, 15, 16,
590 17, 132, 132, 132, 132, 132, 132, 132,
591 132, 132, 132, 26, 27, 28, 132, 132,
592 132, 132, 132, 33, 34, 35, 133, 132,
593 11, 132, 132, 132, 132, 132, 132, 132,
594 132, 132, 15, 16, 17, 132, 132, 132,
595 132, 132, 132, 132, 132, 132, 132, 132,
596 27, 28, 132, 132, 132, 132, 132, 33,
597 34, 35, 133, 132, 11, 132, 132, 132,
598 132, 132, 132, 132, 132, 132, 15, 16,
599 17, 132, 132, 132, 132, 132, 132, 132,
600 132, 132, 132, 132, 132, 28, 132, 132,
601 132, 132, 132, 33, 34, 35, 133, 132,
602 134, 132, 132, 132, 132, 132, 132, 132,
603 132, 132, 132, 132, 132, 11, 132, 11,
604 132, 132, 132, 132, 132, 132, 132, 132,
605 132, 15, 16, 17, 132, 132, 132, 132,
606 132, 132, 132, 132, 132, 132, 132, 132,
607 132, 132, 132, 132, 132, 132, 33, 34,
608 35, 133, 132, 11, 132, 132, 132, 132,
609 132, 132, 132, 13, 14, 15, 16, 17,
610 132, 132, 132, 132, 132, 132, 23, 24,
611 25, 132, 26, 27, 28, 132, 132, 132,
612 132, 132, 33, 34, 35, 133, 132, 132,
613 132, 132, 14, 132, 11, 132, 132, 132,
614 132, 132, 132, 132, 132, 14, 15, 16,
615 17, 132, 132, 132, 132, 132, 132, 23,
616 24, 25, 132, 26, 27, 28, 132, 132,
617 132, 132, 132, 33, 34, 35, 133, 132,
618 132, 132, 132, 14, 132, 11, 132, 132,
619 132, 132, 132, 132, 132, 132, 14, 15,
620 16, 17, 132, 132, 132, 132, 132, 132,
621 132, 24, 25, 132, 26, 27, 28, 132,
622 132, 132, 132, 132, 33, 34, 35, 133,
623 132, 132, 132, 132, 14, 132, 11, 132,
624 132, 132, 132, 132, 132, 132, 132, 14,
625 15, 16, 17, 132, 132, 132, 132, 132,
626 132, 132, 132, 25, 132, 26, 27, 28,
627 132, 132, 132, 132, 132, 33, 34, 35,
628 133, 132, 132, 132, 132, 14, 132, 135,
629 132, 11, 132, 132, 132, 132, 132, 132,
630 132, 13, 14, 15, 16, 17, 132, 19,
631 20, 132, 132, 132, 23, 24, 25, 132,
632 26, 27, 28, 132, 132, 132, 132, 132,
633 33, 34, 35, 133, 132, 132, 132, 132,
634 14, 132, 11, 132, 132, 132, 132, 132,
635 132, 132, 132, 14, 15, 16, 17, 132,
636 132, 132, 132, 132, 132, 132, 132, 132,
637 132, 26, 27, 28, 132, 132, 132, 132,
638 132, 33, 34, 35, 133, 132, 132, 132,
639 132, 14, 132, 135, 132, 11, 132, 132,
640 132, 132, 132, 132, 132, 13, 14, 15,
641 16, 17, 132, 132, 20, 132, 132, 132,
642 23, 24, 25, 132, 26, 27, 28, 132,
643 132, 132, 132, 132, 33, 34, 35, 133,
644 132, 132, 132, 132, 14, 132, 135, 132,
645 11, 132, 132, 132, 132, 132, 132, 132,
646 13, 14, 15, 16, 17, 132, 132, 132,
647 132, 132, 132, 23, 24, 25, 132, 26,
648 27, 28, 132, 132, 132, 132, 132, 33,
649 34, 35, 133, 132, 132, 132, 132, 14,
650 132, 135, 132, 11, 132, 132, 132, 132,
651 132, 132, 132, 13, 14, 15, 16, 17,
652 18, 19, 20, 132, 132, 132, 23, 24,
653 25, 132, 26, 27, 28, 132, 132, 132,
654 132, 132, 33, 34, 35, 133, 132, 132,
655 132, 132, 14, 132, 8, 9, 132, 11,
656 132, 132, 132, 132, 132, 132, 132, 13,
657 14, 15, 16, 17, 18, 19, 20, 21,
658 132, 22, 23, 24, 25, 132, 26, 27,
659 28, 132, 132, 132, 132, 32, 33, 34,
660 35, 32, 132, 132, 132, 132, 37, 132,
661 8, 132, 132, 132, 132, 132, 132, 132,
662 132, 132, 132, 132, 132, 11, 132, 8,
663 132, 132, 132, 132, 132, 132, 132, 132,
664 132, 132, 132, 132, 11, 132, 132, 132,
665 132, 132, 132, 132, 132, 14, 15, 16,
666 17, 132, 132, 132, 132, 132, 132, 132,
667 132, 132, 132, 26, 27, 28, 132, 132,
668 132, 132, 132, 33, 34, 35, 133, 132,
669 136, 132, 132, 132, 132, 132, 132, 132,
670 132, 132, 11, 132, 10, 11, 132, 4,
671 132, 132, 132, 4, 132, 132, 132, 132,
672 132, 8, 9, 10, 11, 132, 132, 132,
673 132, 132, 132, 132, 13, 14, 15, 16,
674 17, 18, 19, 20, 21, 8, 22, 23,
675 24, 25, 132, 26, 27, 28, 132, 29,
676 30, 132, 32, 33, 34, 35, 32, 132,
677 132, 132, 132, 37, 132, 11, 132, 132,
678 132, 132, 132, 132, 132, 132, 132, 132,
679 132, 132, 132, 132, 132, 132, 132, 132,
680 132, 132, 132, 132, 132, 132, 132, 132,
681 29, 30, 132, 11, 132, 132, 132, 132,
682 132, 132, 132, 132, 132, 132, 132, 132,
683 132, 132, 132, 132, 132, 132, 132, 132,
684 132, 132, 132, 132, 132, 132, 132, 30,
685 132, 4, 137, 137, 137, 4, 137, 139,
686 138, 138, 138, 138, 138, 138, 138, 138,
687 138, 138, 138, 138, 138, 138, 138, 138,
688 138, 138, 138, 138, 138, 138, 138, 138,
689 138, 138, 138, 138, 138, 138, 138, 138,
690 138, 138, 138, 140, 138, 141, 138, 141,
691 142, 138, 139, 138, 138, 138, 138, 138,
692 138, 138, 138, 138, 138, 138, 138, 138,
693 138, 138, 138, 138, 138, 138, 138, 138,
694 138, 138, 138, 138, 138, 138, 138, 138,
695 138, 138, 138, 138, 138, 1, 140, 140,
696 138, 139, 138, 138, 138, 138, 138, 138,
697 138, 138, 138, 138, 138, 138, 138, 138,
698 138, 138, 138, 138, 138, 138, 138, 138,
699 138, 138, 138, 138, 138, 138, 138, 138,
700 138, 138, 138, 138, 138, 140, 138, 141,
701 138, 139, 138, 138, 138, 138, 138, 138,
702 138, 138, 138, 138, 138, 138, 138, 138,
703 138, 138, 138, 138, 138, 138, 138, 138,
704 138, 138, 138, 138, 138, 138, 138, 138,
705 138, 138, 138, 138, 138, 140, 138, 141,
706 138, 141, 138, 39, 40, 38, 41, 38,
707 38, 38, 38, 38, 38, 38, 42, 43,
708 44, 45, 46, 47, 48, 49, 50, 39,
709 51, 52, 53, 54, 38, 55, 56, 57,
710 38, 58, 59, 38, 60, 61, 62, 63,
711 60, 1, 38, 2, 38, 64, 38, 0
712 };
713
714 static const char _use_syllable_machine_trans_targs[] = {
715 1, 120, 0, 2, 31, 1, 58, 60,
716 88, 89, 114, 1, 116, 102, 90, 91,
717 92, 93, 106, 108, 109, 110, 111, 103,
718 104, 105, 97, 98, 99, 117, 118, 119,
719 112, 94, 95, 96, 124, 113, 1, 3,
720 4, 1, 17, 5, 6, 7, 8, 21,
721 23, 24, 25, 26, 18, 19, 20, 12,
722 13, 14, 29, 30, 27, 9, 10, 11,
723 28, 15, 16, 22, 1, 32, 1, 45,
724 33, 34, 35, 36, 49, 51, 52, 53,
725 54, 46, 47, 48, 40, 41, 42, 55,
726 37, 38, 39, 56, 57, 43, 1, 44,
727 1, 50, 1, 1, 1, 59, 1, 1,
728 1, 61, 62, 75, 63, 64, 65, 66,
729 79, 81, 82, 83, 84, 76, 77, 78,
730 70, 71, 72, 85, 67, 68, 69, 86,
731 87, 73, 74, 80, 1, 100, 101, 107,
732 115, 1, 1, 1, 121, 122, 123
733 };
734
735 static const char _use_syllable_machine_trans_actions[] = {
736 1, 0, 0, 0, 0, 4, 0, 0,
737 0, 0, 0, 5, 0, 0, 0, 0,
738 0, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0,
740 0, 0, 0, 0, 6, 0, 7, 0,
741 0, 8, 0, 0, 0, 0, 0, 0,
742 0, 0, 0, 0, 0, 0, 0, 0,
743 0, 0, 0, 0, 0, 0, 0, 0,
744 0, 0, 0, 0, 9, 0, 10, 0,
745 0, 0, 0, 0, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 0, 11, 0,
748 12, 0, 13, 14, 15, 0, 16, 17,
749 18, 0, 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, 19, 0, 0, 0,
753 0, 20, 21, 22, 0, 0, 0
754 };
755
756 static const char _use_syllable_machine_to_state_actions[] = {
757 0, 2, 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, 0, 0,
761 0, 0, 0, 0, 0, 0, 0, 0,
762 0, 0, 0, 0, 0, 0, 0, 0,
763 0, 0, 0, 0, 0, 0, 0, 0,
764 0, 0, 0, 0, 0, 0, 0, 0,
765 0, 0, 0, 0, 0, 0, 0, 0,
766 0, 0, 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
773 };
774
775 static const char _use_syllable_machine_from_state_actions[] = {
776 0, 3, 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, 0,
782 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0,
785 0, 0, 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
792 };
793
794 static const short _use_syllable_machine_eof_trans[] = {
795 1, 0, 39, 39, 39, 39, 39, 39,
796 39, 39, 39, 39, 39, 39, 39, 39,
797 39, 39, 39, 39, 39, 39, 39, 39,
798 39, 39, 39, 39, 39, 39, 39, 69,
799 69, 69, 69, 69, 69, 69, 69, 69,
800 69, 69, 69, 95, 69, 69, 69, 69,
801 69, 69, 69, 69, 69, 69, 69, 99,
802 95, 69, 101, 104, 69, 69, 69, 69,
803 69, 69, 69, 69, 69, 69, 69, 69,
804 69, 95, 69, 69, 69, 69, 69, 69,
805 69, 69, 69, 69, 69, 99, 95, 69,
806 133, 133, 133, 133, 133, 133, 133, 133,
807 133, 133, 133, 133, 133, 133, 133, 133,
808 133, 133, 133, 133, 133, 133, 133, 133,
809 133, 133, 133, 133, 133, 133, 133, 138,
810 139, 139, 139, 139, 39
811 };
812
813 static const int use_syllable_machine_start = 1;
814 static const int use_syllable_machine_first_final = 1;
815 static const int use_syllable_machine_error = -1;
816
817 static const int use_syllable_machine_en_main = 1;
818
819
820 #line 58 "hb-ot-shaper-use-machine.rl"
821
822
823
824 #line 184 "hb-ot-shaper-use-machine.rl"
825
826
827 #define found_syllable(syllable_type) \
828 HB_STMT_START { \
829 if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
830 for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
831 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
832 syllable_serial++; \
833 if (syllable_serial == 16) syllable_serial = 1; \
834 } HB_STMT_END
835
836
837 template <typename Iter>
838 struct machine_index_t :
839 hb_iter_with_fallback_t<machine_index_t<Iter>,
840 typename Iter::item_t>
841 {
machine_index_tmachine_index_t842 machine_index_t (const Iter& it) : it (it) {}
machine_index_tmachine_index_t843 machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
844 typename Iter::item_t> (),
845 it (o.it), is_null (o.is_null) {}
846
847 static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
848 static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
849
__item__machine_index_t850 typename Iter::item_t __item__ () const { return *it; }
__item_at__machine_index_t851 typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
__len__machine_index_t852 unsigned __len__ () const { return it.len (); }
__next__machine_index_t853 void __next__ () { ++it; }
__forward__machine_index_t854 void __forward__ (unsigned n) { it += n; }
__prev__machine_index_t855 void __prev__ () { --it; }
__rewind__machine_index_t856 void __rewind__ (unsigned n) { it -= n; }
857
operator =machine_index_t858 void operator = (unsigned n)
859 {
860 assert (n == 0);
861 is_null = true;
862 }
operator boolmachine_index_t863 explicit operator bool () { return !is_null; }
864
operator =machine_index_t865 void operator = (const machine_index_t& o)
866 {
867 is_null = o.is_null;
868 unsigned index = (*it).first;
869 unsigned n = (*o.it).first;
870 if (index < n) it += n - index; else if (index > n) it -= index - n;
871 }
operator ==machine_index_t872 bool operator == (const machine_index_t& o) const
873 { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
operator !=machine_index_t874 bool operator != (const machine_index_t& o) const { return !(*this == o); }
875
876 private:
877 Iter it;
878 bool is_null = false;
879 };
880 struct
881 {
882 template <typename Iter,
883 hb_requires (hb_is_iterable (Iter))>
884 machine_index_t<hb_iter_type<Iter>>
operator ()__anon64e509e20108885 operator () (Iter&& it) const
886 { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
887 }
888 HB_FUNCOBJ (machine_index);
889
890
891
892 static bool
not_ccs_default_ignorable(const hb_glyph_info_t & i)893 not_ccs_default_ignorable (const hb_glyph_info_t &i)
894 { return i.use_category() != USE(CGJ); }
895
896 static inline void
find_syllables_use(hb_buffer_t * buffer)897 find_syllables_use (hb_buffer_t *buffer)
898 {
899 hb_glyph_info_t *info = buffer->info;
900 auto p =
901 + hb_iter (info, buffer->len)
902 | hb_enumerate
903 | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
904 hb_second)
905 | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
906 {
907 if (p.second.use_category() == USE(ZWNJ))
908 for (unsigned i = p.first + 1; i < buffer->len; ++i)
909 if (not_ccs_default_ignorable (info[i]))
910 return !_hb_glyph_info_is_unicode_mark (&info[i]);
911 return true;
912 })
913 | hb_enumerate
914 | machine_index
915 ;
916 auto pe = p + p.len ();
917 auto eof = +pe;
918 auto ts = +p;
919 auto te = +p;
920 unsigned int act HB_UNUSED;
921 int cs;
922
923 #line 924 "hb-ot-shaper-use-machine.hh"
924 {
925 cs = use_syllable_machine_start;
926 ts = 0;
927 te = 0;
928 act = 0;
929 }
930
931 #line 284 "hb-ot-shaper-use-machine.rl"
932
933
934 unsigned int syllable_serial = 1;
935
936 #line 937 "hb-ot-shaper-use-machine.hh"
937 {
938 int _slen;
939 int _trans;
940 const unsigned char *_keys;
941 const unsigned char *_inds;
942 if ( p == pe )
943 goto _test_eof;
944 _resume:
945 switch ( _use_syllable_machine_from_state_actions[cs] ) {
946 case 3:
947 #line 1 "NONE"
948 {ts = p;}
949 break;
950 #line 951 "hb-ot-shaper-use-machine.hh"
951 }
952
953 _keys = _use_syllable_machine_trans_keys + (cs<<1);
954 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
955
956 _slen = _use_syllable_machine_key_spans[cs];
957 _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
958 ( (*p).second.second.use_category()) <= _keys[1] ?
959 ( (*p).second.second.use_category()) - _keys[0] : _slen ];
960
961 _eof_trans:
962 cs = _use_syllable_machine_trans_targs[_trans];
963
964 if ( _use_syllable_machine_trans_actions[_trans] == 0 )
965 goto _again;
966
967 switch ( _use_syllable_machine_trans_actions[_trans] ) {
968 case 6:
969 #line 1 "NONE"
970 {te = p+1;}
971 break;
972 case 14:
973 #line 172 "hb-ot-shaper-use-machine.rl"
974 {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
975 break;
976 case 12:
977 #line 173 "hb-ot-shaper-use-machine.rl"
978 {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
979 break;
980 case 10:
981 #line 174 "hb-ot-shaper-use-machine.rl"
982 {te = p+1;{ found_syllable (use_standard_cluster); }}
983 break;
984 case 18:
985 #line 175 "hb-ot-shaper-use-machine.rl"
986 {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
987 break;
988 case 16:
989 #line 176 "hb-ot-shaper-use-machine.rl"
990 {te = p+1;{ found_syllable (use_numeral_cluster); }}
991 break;
992 case 8:
993 #line 177 "hb-ot-shaper-use-machine.rl"
994 {te = p+1;{ found_syllable (use_symbol_cluster); }}
995 break;
996 case 22:
997 #line 178 "hb-ot-shaper-use-machine.rl"
998 {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
999 break;
1000 case 5:
1001 #line 179 "hb-ot-shaper-use-machine.rl"
1002 {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1003 break;
1004 case 4:
1005 #line 180 "hb-ot-shaper-use-machine.rl"
1006 {te = p+1;{ found_syllable (use_non_cluster); }}
1007 break;
1008 case 13:
1009 #line 172 "hb-ot-shaper-use-machine.rl"
1010 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1011 break;
1012 case 11:
1013 #line 173 "hb-ot-shaper-use-machine.rl"
1014 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1015 break;
1016 case 9:
1017 #line 174 "hb-ot-shaper-use-machine.rl"
1018 {te = p;p--;{ found_syllable (use_standard_cluster); }}
1019 break;
1020 case 17:
1021 #line 175 "hb-ot-shaper-use-machine.rl"
1022 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1023 break;
1024 case 15:
1025 #line 176 "hb-ot-shaper-use-machine.rl"
1026 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1027 break;
1028 case 7:
1029 #line 177 "hb-ot-shaper-use-machine.rl"
1030 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1031 break;
1032 case 21:
1033 #line 178 "hb-ot-shaper-use-machine.rl"
1034 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1035 break;
1036 case 19:
1037 #line 179 "hb-ot-shaper-use-machine.rl"
1038 {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1039 break;
1040 case 20:
1041 #line 180 "hb-ot-shaper-use-machine.rl"
1042 {te = p;p--;{ found_syllable (use_non_cluster); }}
1043 break;
1044 case 1:
1045 #line 177 "hb-ot-shaper-use-machine.rl"
1046 {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1047 break;
1048 #line 1049 "hb-ot-shaper-use-machine.hh"
1049 }
1050
1051 _again:
1052 switch ( _use_syllable_machine_to_state_actions[cs] ) {
1053 case 2:
1054 #line 1 "NONE"
1055 {ts = 0;}
1056 break;
1057 #line 1058 "hb-ot-shaper-use-machine.hh"
1058 }
1059
1060 if ( ++p != pe )
1061 goto _resume;
1062 _test_eof: {}
1063 if ( p == eof )
1064 {
1065 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1066 _trans = _use_syllable_machine_eof_trans[cs] - 1;
1067 goto _eof_trans;
1068 }
1069 }
1070
1071 }
1072
1073 #line 289 "hb-ot-shaper-use-machine.rl"
1074
1075 }
1076
1077 #undef found_syllable
1078
1079 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1080