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 54 "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_HN 13u
72 #define use_syllable_machine_ex_HVM 53u
73 #define use_syllable_machine_ex_IS 44u
74 #define use_syllable_machine_ex_J 50u
75 #define use_syllable_machine_ex_MAbv 27u
76 #define use_syllable_machine_ex_MBlw 28u
77 #define use_syllable_machine_ex_MPre 30u
78 #define use_syllable_machine_ex_MPst 29u
79 #define use_syllable_machine_ex_N 4u
80 #define use_syllable_machine_ex_O 0u
81 #define use_syllable_machine_ex_R 18u
82 #define use_syllable_machine_ex_SB 51u
83 #define use_syllable_machine_ex_SE 52u
84 #define use_syllable_machine_ex_SMAbv 41u
85 #define use_syllable_machine_ex_SMBlw 42u
86 #define use_syllable_machine_ex_SUB 11u
87 #define use_syllable_machine_ex_Sk 48u
88 #define use_syllable_machine_ex_VAbv 33u
89 #define use_syllable_machine_ex_VBlw 34u
90 #define use_syllable_machine_ex_VMAbv 37u
91 #define use_syllable_machine_ex_VMBlw 38u
92 #define use_syllable_machine_ex_VMPre 23u
93 #define use_syllable_machine_ex_VMPst 39u
94 #define use_syllable_machine_ex_VPre 22u
95 #define use_syllable_machine_ex_VPst 35u
96 #define use_syllable_machine_ex_WJ 16u
97 #define use_syllable_machine_ex_ZWNJ 14u
98
99
100 #line 96 "hb-ot-shaper-use-machine.hh"
101 static const unsigned char _use_syllable_machine_trans_keys[] = {
102 0u, 53u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u,
103 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u,
104 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u,
105 12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 11u, 53u, 14u, 42u, 14u, 42u, 11u, 53u,
106 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u,
107 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u,
108 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u,
109 1u, 14u, 1u, 14u, 1u, 48u, 13u, 14u, 4u, 14u, 11u, 53u, 11u, 53u, 1u, 53u,
110 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u,
111 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u,
112 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 14u,
113 1u, 48u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u,
114 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u,
115 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u,
116 12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 53u, 11u, 53u,
117 14u, 42u, 14u, 42u, 1u, 5u, 14u, 52u, 14u, 52u, 14u, 51u, 0
118 };
119
120 static const char _use_syllable_machine_key_spans[] = {
121 54, 43, 43, 53, 35, 34, 34, 34,
122 33, 33, 1, 35, 35, 35, 14, 35,
123 40, 40, 40, 40, 42, 40, 42, 42,
124 42, 43, 14, 48, 43, 29, 29, 43,
125 43, 53, 35, 34, 34, 34, 33, 33,
126 1, 35, 35, 35, 14, 35, 40, 40,
127 40, 40, 42, 40, 42, 42, 42, 43,
128 14, 14, 48, 2, 11, 43, 43, 53,
129 35, 34, 34, 34, 33, 33, 1, 35,
130 35, 35, 14, 35, 40, 40, 40, 40,
131 42, 40, 42, 42, 42, 43, 14, 14,
132 48, 43, 43, 53, 35, 34, 34, 34,
133 33, 33, 1, 35, 35, 35, 14, 35,
134 40, 40, 40, 40, 42, 40, 42, 42,
135 42, 43, 14, 48, 11, 2, 53, 43,
136 29, 29, 5, 39, 39, 38
137 };
138
139 static const short _use_syllable_machine_index_offsets[] = {
140 0, 55, 99, 143, 197, 233, 268, 303,
141 338, 372, 406, 408, 444, 480, 516, 531,
142 567, 608, 649, 690, 731, 774, 815, 858,
143 901, 944, 988, 1003, 1052, 1096, 1126, 1156,
144 1200, 1244, 1298, 1334, 1369, 1404, 1439, 1473,
145 1507, 1509, 1545, 1581, 1617, 1632, 1668, 1709,
146 1750, 1791, 1832, 1875, 1916, 1959, 2002, 2045,
147 2089, 2104, 2119, 2168, 2171, 2183, 2227, 2271,
148 2325, 2361, 2396, 2431, 2466, 2500, 2534, 2536,
149 2572, 2608, 2644, 2659, 2695, 2736, 2777, 2818,
150 2859, 2902, 2943, 2986, 3029, 3072, 3116, 3131,
151 3146, 3195, 3239, 3283, 3337, 3373, 3408, 3443,
152 3478, 3512, 3546, 3548, 3584, 3620, 3656, 3671,
153 3707, 3748, 3789, 3830, 3871, 3914, 3955, 3998,
154 4041, 4084, 4128, 4143, 4192, 4204, 4207, 4261,
155 4305, 4335, 4365, 4371, 4411, 4451
156 };
157
158 static const unsigned char _use_syllable_machine_indicies[] = {
159 0, 1, 2, 2, 3, 4, 2, 2,
160 2, 2, 2, 5, 6, 7, 8, 2,
161 2, 2, 9, 2, 2, 2, 10, 11,
162 12, 13, 14, 15, 16, 17, 18, 19,
163 20, 21, 22, 23, 2, 24, 25, 26,
164 2, 27, 28, 29, 30, 31, 32, 33,
165 30, 34, 2, 35, 2, 36, 2, 38,
166 39, 37, 40, 37, 37, 37, 37, 37,
167 37, 37, 41, 42, 43, 44, 45, 46,
168 47, 48, 49, 50, 51, 52, 53, 54,
169 37, 55, 56, 57, 37, 58, 59, 37,
170 60, 61, 62, 63, 60, 37, 37, 37,
171 37, 64, 37, 38, 39, 37, 40, 37,
172 37, 37, 37, 37, 37, 37, 41, 42,
173 43, 44, 45, 46, 47, 48, 49, 51,
174 51, 52, 53, 54, 37, 55, 56, 57,
175 37, 37, 37, 37, 60, 61, 62, 63,
176 60, 37, 37, 37, 37, 64, 37, 38,
177 37, 37, 37, 37, 37, 37, 37, 37,
178 37, 37, 37, 37, 40, 37, 37, 37,
179 37, 37, 37, 37, 37, 42, 43, 44,
180 45, 37, 37, 37, 37, 37, 37, 37,
181 37, 37, 37, 55, 56, 57, 37, 37,
182 37, 37, 37, 61, 62, 63, 65, 37,
183 37, 37, 37, 42, 37, 40, 37, 37,
184 37, 37, 37, 37, 37, 37, 42, 43,
185 44, 45, 37, 37, 37, 37, 37, 37,
186 37, 37, 37, 37, 55, 56, 57, 37,
187 37, 37, 37, 37, 61, 62, 63, 65,
188 37, 40, 37, 37, 37, 37, 37, 37,
189 37, 37, 37, 43, 44, 45, 37, 37,
190 37, 37, 37, 37, 37, 37, 37, 37,
191 37, 37, 37, 37, 37, 37, 37, 37,
192 61, 62, 63, 37, 40, 37, 37, 37,
193 37, 37, 37, 37, 37, 37, 37, 44,
194 45, 37, 37, 37, 37, 37, 37, 37,
195 37, 37, 37, 37, 37, 37, 37, 37,
196 37, 37, 37, 61, 62, 63, 37, 40,
197 37, 37, 37, 37, 37, 37, 37, 37,
198 37, 37, 37, 45, 37, 37, 37, 37,
199 37, 37, 37, 37, 37, 37, 37, 37,
200 37, 37, 37, 37, 37, 37, 61, 62,
201 63, 37, 40, 37, 37, 37, 37, 37,
202 37, 37, 37, 37, 37, 37, 37, 37,
203 37, 37, 37, 37, 37, 37, 37, 37,
204 37, 37, 37, 37, 37, 37, 37, 37,
205 37, 61, 62, 37, 40, 37, 37, 37,
206 37, 37, 37, 37, 37, 37, 37, 37,
207 37, 37, 37, 37, 37, 37, 37, 37,
208 37, 37, 37, 37, 37, 37, 37, 37,
209 37, 37, 37, 37, 62, 37, 40, 37,
210 40, 37, 37, 37, 37, 37, 37, 37,
211 37, 37, 43, 44, 45, 37, 37, 37,
212 37, 37, 37, 37, 37, 37, 37, 55,
213 56, 57, 37, 37, 37, 37, 37, 61,
214 62, 63, 65, 37, 40, 37, 37, 37,
215 37, 37, 37, 37, 37, 37, 43, 44,
216 45, 37, 37, 37, 37, 37, 37, 37,
217 37, 37, 37, 37, 56, 57, 37, 37,
218 37, 37, 37, 61, 62, 63, 65, 37,
219 40, 37, 37, 37, 37, 37, 37, 37,
220 37, 37, 43, 44, 45, 37, 37, 37,
221 37, 37, 37, 37, 37, 37, 37, 37,
222 37, 57, 37, 37, 37, 37, 37, 61,
223 62, 63, 65, 37, 66, 37, 37, 37,
224 37, 37, 37, 37, 37, 37, 37, 37,
225 37, 40, 37, 40, 37, 37, 37, 37,
226 37, 37, 37, 37, 37, 43, 44, 45,
227 37, 37, 37, 37, 37, 37, 37, 37,
228 37, 37, 37, 37, 37, 37, 37, 37,
229 37, 37, 61, 62, 63, 65, 37, 40,
230 37, 37, 37, 37, 37, 37, 37, 41,
231 42, 43, 44, 45, 37, 37, 37, 37,
232 37, 37, 52, 53, 54, 37, 55, 56,
233 57, 37, 37, 37, 37, 37, 61, 62,
234 63, 65, 37, 37, 37, 37, 42, 37,
235 40, 37, 37, 37, 37, 37, 37, 37,
236 37, 42, 43, 44, 45, 37, 37, 37,
237 37, 37, 37, 52, 53, 54, 37, 55,
238 56, 57, 37, 37, 37, 37, 37, 61,
239 62, 63, 65, 37, 37, 37, 37, 42,
240 37, 40, 37, 37, 37, 37, 37, 37,
241 37, 37, 42, 43, 44, 45, 37, 37,
242 37, 37, 37, 37, 37, 53, 54, 37,
243 55, 56, 57, 37, 37, 37, 37, 37,
244 61, 62, 63, 65, 37, 37, 37, 37,
245 42, 37, 40, 37, 37, 37, 37, 37,
246 37, 37, 37, 42, 43, 44, 45, 37,
247 37, 37, 37, 37, 37, 37, 37, 54,
248 37, 55, 56, 57, 37, 37, 37, 37,
249 37, 61, 62, 63, 65, 37, 37, 37,
250 37, 42, 37, 67, 37, 40, 37, 37,
251 37, 37, 37, 37, 37, 41, 42, 43,
252 44, 45, 37, 47, 48, 37, 37, 37,
253 52, 53, 54, 37, 55, 56, 57, 37,
254 37, 37, 37, 37, 61, 62, 63, 65,
255 37, 37, 37, 37, 42, 37, 40, 37,
256 37, 37, 37, 37, 37, 37, 37, 42,
257 43, 44, 45, 37, 37, 37, 37, 37,
258 37, 37, 37, 37, 37, 55, 56, 57,
259 37, 37, 37, 37, 37, 61, 62, 63,
260 65, 37, 37, 37, 37, 42, 37, 67,
261 37, 40, 37, 37, 37, 37, 37, 37,
262 37, 41, 42, 43, 44, 45, 37, 37,
263 48, 37, 37, 37, 52, 53, 54, 37,
264 55, 56, 57, 37, 37, 37, 37, 37,
265 61, 62, 63, 65, 37, 37, 37, 37,
266 42, 37, 67, 37, 40, 37, 37, 37,
267 37, 37, 37, 37, 41, 42, 43, 44,
268 45, 37, 37, 37, 37, 37, 37, 52,
269 53, 54, 37, 55, 56, 57, 37, 37,
270 37, 37, 37, 61, 62, 63, 65, 37,
271 37, 37, 37, 42, 37, 67, 37, 40,
272 37, 37, 37, 37, 37, 37, 37, 41,
273 42, 43, 44, 45, 46, 47, 48, 37,
274 37, 37, 52, 53, 54, 37, 55, 56,
275 57, 37, 37, 37, 37, 37, 61, 62,
276 63, 65, 37, 37, 37, 37, 42, 37,
277 38, 39, 37, 40, 37, 37, 37, 37,
278 37, 37, 37, 41, 42, 43, 44, 45,
279 46, 47, 48, 49, 37, 51, 52, 53,
280 54, 37, 55, 56, 57, 37, 37, 37,
281 37, 60, 61, 62, 63, 60, 37, 37,
282 37, 37, 64, 37, 38, 37, 37, 37,
283 37, 37, 37, 37, 37, 37, 37, 37,
284 37, 40, 37, 38, 37, 37, 37, 37,
285 37, 37, 37, 37, 37, 37, 37, 37,
286 40, 37, 37, 37, 37, 37, 37, 37,
287 37, 42, 43, 44, 45, 37, 37, 37,
288 37, 37, 37, 37, 37, 37, 37, 55,
289 56, 57, 37, 37, 37, 37, 37, 61,
290 62, 63, 65, 37, 38, 39, 37, 40,
291 37, 37, 37, 37, 37, 37, 37, 41,
292 42, 43, 44, 45, 46, 47, 48, 49,
293 50, 51, 52, 53, 54, 37, 55, 56,
294 57, 37, 37, 37, 37, 60, 61, 62,
295 63, 60, 37, 37, 37, 37, 64, 37,
296 40, 37, 37, 37, 37, 37, 37, 37,
297 37, 37, 37, 37, 37, 37, 37, 37,
298 37, 37, 37, 37, 37, 37, 37, 37,
299 37, 37, 37, 58, 59, 37, 40, 37,
300 37, 37, 37, 37, 37, 37, 37, 37,
301 37, 37, 37, 37, 37, 37, 37, 37,
302 37, 37, 37, 37, 37, 37, 37, 37,
303 37, 37, 59, 37, 69, 70, 68, 71,
304 68, 68, 68, 68, 68, 68, 68, 72,
305 73, 74, 75, 76, 77, 78, 79, 80,
306 1, 81, 82, 83, 84, 68, 85, 86,
307 87, 68, 68, 68, 68, 88, 89, 90,
308 91, 92, 68, 68, 68, 68, 93, 68,
309 69, 70, 68, 71, 68, 68, 68, 68,
310 68, 68, 68, 72, 73, 74, 75, 76,
311 77, 78, 79, 80, 81, 81, 82, 83,
312 84, 68, 85, 86, 87, 68, 68, 68,
313 68, 88, 89, 90, 91, 92, 68, 68,
314 68, 68, 93, 68, 69, 68, 68, 68,
315 68, 68, 68, 68, 68, 68, 68, 68,
316 68, 71, 68, 68, 68, 68, 68, 68,
317 68, 68, 73, 74, 75, 76, 68, 68,
318 68, 68, 68, 68, 68, 68, 68, 68,
319 85, 86, 87, 68, 68, 68, 68, 68,
320 89, 90, 91, 94, 68, 68, 68, 68,
321 73, 68, 71, 68, 68, 68, 68, 68,
322 68, 68, 68, 73, 74, 75, 76, 68,
323 68, 68, 68, 68, 68, 68, 68, 68,
324 68, 85, 86, 87, 68, 68, 68, 68,
325 68, 89, 90, 91, 94, 68, 71, 68,
326 68, 68, 68, 68, 68, 68, 68, 68,
327 74, 75, 76, 68, 68, 68, 68, 68,
328 68, 68, 68, 68, 68, 68, 68, 68,
329 68, 68, 68, 68, 68, 89, 90, 91,
330 68, 71, 68, 68, 68, 68, 68, 68,
331 68, 68, 68, 68, 75, 76, 68, 68,
332 68, 68, 68, 68, 68, 68, 68, 68,
333 68, 68, 68, 68, 68, 68, 68, 68,
334 89, 90, 91, 68, 71, 68, 68, 68,
335 68, 68, 68, 68, 68, 68, 68, 68,
336 76, 68, 68, 68, 68, 68, 68, 68,
337 68, 68, 68, 68, 68, 68, 68, 68,
338 68, 68, 68, 89, 90, 91, 68, 71,
339 68, 68, 68, 68, 68, 68, 68, 68,
340 68, 68, 68, 68, 68, 68, 68, 68,
341 68, 68, 68, 68, 68, 68, 68, 68,
342 68, 68, 68, 68, 68, 68, 89, 90,
343 68, 71, 68, 68, 68, 68, 68, 68,
344 68, 68, 68, 68, 68, 68, 68, 68,
345 68, 68, 68, 68, 68, 68, 68, 68,
346 68, 68, 68, 68, 68, 68, 68, 68,
347 68, 90, 68, 71, 68, 71, 68, 68,
348 68, 68, 68, 68, 68, 68, 68, 74,
349 75, 76, 68, 68, 68, 68, 68, 68,
350 68, 68, 68, 68, 85, 86, 87, 68,
351 68, 68, 68, 68, 89, 90, 91, 94,
352 68, 71, 68, 68, 68, 68, 68, 68,
353 68, 68, 68, 74, 75, 76, 68, 68,
354 68, 68, 68, 68, 68, 68, 68, 68,
355 68, 86, 87, 68, 68, 68, 68, 68,
356 89, 90, 91, 94, 68, 71, 68, 68,
357 68, 68, 68, 68, 68, 68, 68, 74,
358 75, 76, 68, 68, 68, 68, 68, 68,
359 68, 68, 68, 68, 68, 68, 87, 68,
360 68, 68, 68, 68, 89, 90, 91, 94,
361 68, 96, 95, 95, 95, 95, 95, 95,
362 95, 95, 95, 95, 95, 95, 97, 95,
363 71, 68, 68, 68, 68, 68, 68, 68,
364 68, 68, 74, 75, 76, 68, 68, 68,
365 68, 68, 68, 68, 68, 68, 68, 68,
366 68, 68, 68, 68, 68, 68, 68, 89,
367 90, 91, 94, 68, 71, 68, 68, 68,
368 68, 68, 68, 68, 72, 73, 74, 75,
369 76, 68, 68, 68, 68, 68, 68, 82,
370 83, 84, 68, 85, 86, 87, 68, 68,
371 68, 68, 68, 89, 90, 91, 94, 68,
372 68, 68, 68, 73, 68, 71, 68, 68,
373 68, 68, 68, 68, 68, 68, 73, 74,
374 75, 76, 68, 68, 68, 68, 68, 68,
375 82, 83, 84, 68, 85, 86, 87, 68,
376 68, 68, 68, 68, 89, 90, 91, 94,
377 68, 68, 68, 68, 73, 68, 71, 68,
378 68, 68, 68, 68, 68, 68, 68, 73,
379 74, 75, 76, 68, 68, 68, 68, 68,
380 68, 68, 83, 84, 68, 85, 86, 87,
381 68, 68, 68, 68, 68, 89, 90, 91,
382 94, 68, 68, 68, 68, 73, 68, 71,
383 68, 68, 68, 68, 68, 68, 68, 68,
384 73, 74, 75, 76, 68, 68, 68, 68,
385 68, 68, 68, 68, 84, 68, 85, 86,
386 87, 68, 68, 68, 68, 68, 89, 90,
387 91, 94, 68, 68, 68, 68, 73, 68,
388 98, 68, 71, 68, 68, 68, 68, 68,
389 68, 68, 72, 73, 74, 75, 76, 68,
390 78, 79, 68, 68, 68, 82, 83, 84,
391 68, 85, 86, 87, 68, 68, 68, 68,
392 68, 89, 90, 91, 94, 68, 68, 68,
393 68, 73, 68, 71, 68, 68, 68, 68,
394 68, 68, 68, 68, 73, 74, 75, 76,
395 68, 68, 68, 68, 68, 68, 68, 68,
396 68, 68, 85, 86, 87, 68, 68, 68,
397 68, 68, 89, 90, 91, 94, 68, 68,
398 68, 68, 73, 68, 98, 68, 71, 68,
399 68, 68, 68, 68, 68, 68, 72, 73,
400 74, 75, 76, 68, 68, 79, 68, 68,
401 68, 82, 83, 84, 68, 85, 86, 87,
402 68, 68, 68, 68, 68, 89, 90, 91,
403 94, 68, 68, 68, 68, 73, 68, 98,
404 68, 71, 68, 68, 68, 68, 68, 68,
405 68, 72, 73, 74, 75, 76, 68, 68,
406 68, 68, 68, 68, 82, 83, 84, 68,
407 85, 86, 87, 68, 68, 68, 68, 68,
408 89, 90, 91, 94, 68, 68, 68, 68,
409 73, 68, 98, 68, 71, 68, 68, 68,
410 68, 68, 68, 68, 72, 73, 74, 75,
411 76, 77, 78, 79, 68, 68, 68, 82,
412 83, 84, 68, 85, 86, 87, 68, 68,
413 68, 68, 68, 89, 90, 91, 94, 68,
414 68, 68, 68, 73, 68, 69, 70, 68,
415 71, 68, 68, 68, 68, 68, 68, 68,
416 72, 73, 74, 75, 76, 77, 78, 79,
417 80, 68, 81, 82, 83, 84, 68, 85,
418 86, 87, 68, 68, 68, 68, 88, 89,
419 90, 91, 92, 68, 68, 68, 68, 93,
420 68, 69, 99, 99, 99, 99, 99, 99,
421 99, 99, 99, 99, 99, 99, 100, 99,
422 69, 95, 95, 95, 95, 95, 95, 95,
423 95, 95, 95, 95, 95, 97, 95, 69,
424 68, 68, 68, 68, 68, 68, 68, 68,
425 68, 68, 68, 68, 71, 68, 68, 68,
426 68, 68, 68, 68, 68, 73, 74, 75,
427 76, 68, 68, 68, 68, 68, 68, 68,
428 68, 68, 68, 85, 86, 87, 68, 68,
429 68, 68, 68, 89, 90, 91, 94, 68,
430 102, 103, 101, 3, 104, 104, 104, 104,
431 104, 104, 104, 104, 104, 105, 104, 106,
432 107, 68, 71, 68, 68, 68, 68, 68,
433 68, 68, 108, 109, 110, 111, 112, 113,
434 114, 115, 116, 117, 118, 119, 120, 121,
435 68, 122, 123, 124, 68, 58, 59, 68,
436 125, 126, 127, 128, 129, 68, 68, 68,
437 68, 130, 68, 106, 107, 68, 71, 68,
438 68, 68, 68, 68, 68, 68, 108, 109,
439 110, 111, 112, 113, 114, 115, 116, 118,
440 118, 119, 120, 121, 68, 122, 123, 124,
441 68, 68, 68, 68, 125, 126, 127, 128,
442 129, 68, 68, 68, 68, 130, 68, 106,
443 68, 68, 68, 68, 68, 68, 68, 68,
444 68, 68, 68, 68, 71, 68, 68, 68,
445 68, 68, 68, 68, 68, 109, 110, 111,
446 112, 68, 68, 68, 68, 68, 68, 68,
447 68, 68, 68, 122, 123, 124, 68, 68,
448 68, 68, 68, 126, 127, 128, 131, 68,
449 68, 68, 68, 109, 68, 71, 68, 68,
450 68, 68, 68, 68, 68, 68, 109, 110,
451 111, 112, 68, 68, 68, 68, 68, 68,
452 68, 68, 68, 68, 122, 123, 124, 68,
453 68, 68, 68, 68, 126, 127, 128, 131,
454 68, 71, 68, 68, 68, 68, 68, 68,
455 68, 68, 68, 110, 111, 112, 68, 68,
456 68, 68, 68, 68, 68, 68, 68, 68,
457 68, 68, 68, 68, 68, 68, 68, 68,
458 126, 127, 128, 68, 71, 68, 68, 68,
459 68, 68, 68, 68, 68, 68, 68, 111,
460 112, 68, 68, 68, 68, 68, 68, 68,
461 68, 68, 68, 68, 68, 68, 68, 68,
462 68, 68, 68, 126, 127, 128, 68, 71,
463 68, 68, 68, 68, 68, 68, 68, 68,
464 68, 68, 68, 112, 68, 68, 68, 68,
465 68, 68, 68, 68, 68, 68, 68, 68,
466 68, 68, 68, 68, 68, 68, 126, 127,
467 128, 68, 71, 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, 126, 127, 68, 71, 68, 68, 68,
472 68, 68, 68, 68, 68, 68, 68, 68,
473 68, 68, 68, 68, 68, 68, 68, 68,
474 68, 68, 68, 68, 68, 68, 68, 68,
475 68, 68, 68, 68, 127, 68, 71, 68,
476 71, 68, 68, 68, 68, 68, 68, 68,
477 68, 68, 110, 111, 112, 68, 68, 68,
478 68, 68, 68, 68, 68, 68, 68, 122,
479 123, 124, 68, 68, 68, 68, 68, 126,
480 127, 128, 131, 68, 71, 68, 68, 68,
481 68, 68, 68, 68, 68, 68, 110, 111,
482 112, 68, 68, 68, 68, 68, 68, 68,
483 68, 68, 68, 68, 123, 124, 68, 68,
484 68, 68, 68, 126, 127, 128, 131, 68,
485 71, 68, 68, 68, 68, 68, 68, 68,
486 68, 68, 110, 111, 112, 68, 68, 68,
487 68, 68, 68, 68, 68, 68, 68, 68,
488 68, 124, 68, 68, 68, 68, 68, 126,
489 127, 128, 131, 68, 132, 95, 95, 95,
490 95, 95, 95, 95, 95, 95, 95, 95,
491 95, 97, 95, 71, 68, 68, 68, 68,
492 68, 68, 68, 68, 68, 110, 111, 112,
493 68, 68, 68, 68, 68, 68, 68, 68,
494 68, 68, 68, 68, 68, 68, 68, 68,
495 68, 68, 126, 127, 128, 131, 68, 71,
496 68, 68, 68, 68, 68, 68, 68, 108,
497 109, 110, 111, 112, 68, 68, 68, 68,
498 68, 68, 119, 120, 121, 68, 122, 123,
499 124, 68, 68, 68, 68, 68, 126, 127,
500 128, 131, 68, 68, 68, 68, 109, 68,
501 71, 68, 68, 68, 68, 68, 68, 68,
502 68, 109, 110, 111, 112, 68, 68, 68,
503 68, 68, 68, 119, 120, 121, 68, 122,
504 123, 124, 68, 68, 68, 68, 68, 126,
505 127, 128, 131, 68, 68, 68, 68, 109,
506 68, 71, 68, 68, 68, 68, 68, 68,
507 68, 68, 109, 110, 111, 112, 68, 68,
508 68, 68, 68, 68, 68, 120, 121, 68,
509 122, 123, 124, 68, 68, 68, 68, 68,
510 126, 127, 128, 131, 68, 68, 68, 68,
511 109, 68, 71, 68, 68, 68, 68, 68,
512 68, 68, 68, 109, 110, 111, 112, 68,
513 68, 68, 68, 68, 68, 68, 68, 121,
514 68, 122, 123, 124, 68, 68, 68, 68,
515 68, 126, 127, 128, 131, 68, 68, 68,
516 68, 109, 68, 133, 68, 71, 68, 68,
517 68, 68, 68, 68, 68, 108, 109, 110,
518 111, 112, 68, 114, 115, 68, 68, 68,
519 119, 120, 121, 68, 122, 123, 124, 68,
520 68, 68, 68, 68, 126, 127, 128, 131,
521 68, 68, 68, 68, 109, 68, 71, 68,
522 68, 68, 68, 68, 68, 68, 68, 109,
523 110, 111, 112, 68, 68, 68, 68, 68,
524 68, 68, 68, 68, 68, 122, 123, 124,
525 68, 68, 68, 68, 68, 126, 127, 128,
526 131, 68, 68, 68, 68, 109, 68, 133,
527 68, 71, 68, 68, 68, 68, 68, 68,
528 68, 108, 109, 110, 111, 112, 68, 68,
529 115, 68, 68, 68, 119, 120, 121, 68,
530 122, 123, 124, 68, 68, 68, 68, 68,
531 126, 127, 128, 131, 68, 68, 68, 68,
532 109, 68, 133, 68, 71, 68, 68, 68,
533 68, 68, 68, 68, 108, 109, 110, 111,
534 112, 68, 68, 68, 68, 68, 68, 119,
535 120, 121, 68, 122, 123, 124, 68, 68,
536 68, 68, 68, 126, 127, 128, 131, 68,
537 68, 68, 68, 109, 68, 133, 68, 71,
538 68, 68, 68, 68, 68, 68, 68, 108,
539 109, 110, 111, 112, 113, 114, 115, 68,
540 68, 68, 119, 120, 121, 68, 122, 123,
541 124, 68, 68, 68, 68, 68, 126, 127,
542 128, 131, 68, 68, 68, 68, 109, 68,
543 106, 107, 68, 71, 68, 68, 68, 68,
544 68, 68, 68, 108, 109, 110, 111, 112,
545 113, 114, 115, 116, 68, 118, 119, 120,
546 121, 68, 122, 123, 124, 68, 68, 68,
547 68, 125, 126, 127, 128, 129, 68, 68,
548 68, 68, 130, 68, 106, 99, 99, 99,
549 99, 99, 99, 99, 99, 99, 99, 99,
550 99, 100, 99, 106, 95, 95, 95, 95,
551 95, 95, 95, 95, 95, 95, 95, 95,
552 97, 95, 106, 68, 68, 68, 68, 68,
553 68, 68, 68, 68, 68, 68, 68, 71,
554 68, 68, 68, 68, 68, 68, 68, 68,
555 109, 110, 111, 112, 68, 68, 68, 68,
556 68, 68, 68, 68, 68, 68, 122, 123,
557 124, 68, 68, 68, 68, 68, 126, 127,
558 128, 131, 68, 106, 107, 68, 71, 68,
559 68, 68, 68, 68, 68, 68, 108, 109,
560 110, 111, 112, 113, 114, 115, 116, 117,
561 118, 119, 120, 121, 68, 122, 123, 124,
562 68, 68, 68, 68, 125, 126, 127, 128,
563 129, 68, 68, 68, 68, 130, 68, 5,
564 6, 134, 8, 134, 134, 134, 134, 134,
565 134, 134, 10, 11, 12, 13, 14, 15,
566 16, 17, 18, 20, 20, 21, 22, 23,
567 134, 24, 25, 26, 134, 134, 134, 134,
568 30, 31, 32, 33, 30, 134, 134, 134,
569 134, 36, 134, 5, 134, 134, 134, 134,
570 134, 134, 134, 134, 134, 134, 134, 134,
571 8, 134, 134, 134, 134, 134, 134, 134,
572 134, 11, 12, 13, 14, 134, 134, 134,
573 134, 134, 134, 134, 134, 134, 134, 24,
574 25, 26, 134, 134, 134, 134, 134, 31,
575 32, 33, 135, 134, 134, 134, 134, 11,
576 134, 8, 134, 134, 134, 134, 134, 134,
577 134, 134, 11, 12, 13, 14, 134, 134,
578 134, 134, 134, 134, 134, 134, 134, 134,
579 24, 25, 26, 134, 134, 134, 134, 134,
580 31, 32, 33, 135, 134, 8, 134, 134,
581 134, 134, 134, 134, 134, 134, 134, 12,
582 13, 14, 134, 134, 134, 134, 134, 134,
583 134, 134, 134, 134, 134, 134, 134, 134,
584 134, 134, 134, 134, 31, 32, 33, 134,
585 8, 134, 134, 134, 134, 134, 134, 134,
586 134, 134, 134, 13, 14, 134, 134, 134,
587 134, 134, 134, 134, 134, 134, 134, 134,
588 134, 134, 134, 134, 134, 134, 134, 31,
589 32, 33, 134, 8, 134, 134, 134, 134,
590 134, 134, 134, 134, 134, 134, 134, 14,
591 134, 134, 134, 134, 134, 134, 134, 134,
592 134, 134, 134, 134, 134, 134, 134, 134,
593 134, 134, 31, 32, 33, 134, 8, 134,
594 134, 134, 134, 134, 134, 134, 134, 134,
595 134, 134, 134, 134, 134, 134, 134, 134,
596 134, 134, 134, 134, 134, 134, 134, 134,
597 134, 134, 134, 134, 134, 31, 32, 134,
598 8, 134, 134, 134, 134, 134, 134, 134,
599 134, 134, 134, 134, 134, 134, 134, 134,
600 134, 134, 134, 134, 134, 134, 134, 134,
601 134, 134, 134, 134, 134, 134, 134, 134,
602 32, 134, 8, 134, 8, 134, 134, 134,
603 134, 134, 134, 134, 134, 134, 12, 13,
604 14, 134, 134, 134, 134, 134, 134, 134,
605 134, 134, 134, 24, 25, 26, 134, 134,
606 134, 134, 134, 31, 32, 33, 135, 134,
607 8, 134, 134, 134, 134, 134, 134, 134,
608 134, 134, 12, 13, 14, 134, 134, 134,
609 134, 134, 134, 134, 134, 134, 134, 134,
610 25, 26, 134, 134, 134, 134, 134, 31,
611 32, 33, 135, 134, 8, 134, 134, 134,
612 134, 134, 134, 134, 134, 134, 12, 13,
613 14, 134, 134, 134, 134, 134, 134, 134,
614 134, 134, 134, 134, 134, 26, 134, 134,
615 134, 134, 134, 31, 32, 33, 135, 134,
616 136, 134, 134, 134, 134, 134, 134, 134,
617 134, 134, 134, 134, 134, 8, 134, 8,
618 134, 134, 134, 134, 134, 134, 134, 134,
619 134, 12, 13, 14, 134, 134, 134, 134,
620 134, 134, 134, 134, 134, 134, 134, 134,
621 134, 134, 134, 134, 134, 134, 31, 32,
622 33, 135, 134, 8, 134, 134, 134, 134,
623 134, 134, 134, 10, 11, 12, 13, 14,
624 134, 134, 134, 134, 134, 134, 21, 22,
625 23, 134, 24, 25, 26, 134, 134, 134,
626 134, 134, 31, 32, 33, 135, 134, 134,
627 134, 134, 11, 134, 8, 134, 134, 134,
628 134, 134, 134, 134, 134, 11, 12, 13,
629 14, 134, 134, 134, 134, 134, 134, 21,
630 22, 23, 134, 24, 25, 26, 134, 134,
631 134, 134, 134, 31, 32, 33, 135, 134,
632 134, 134, 134, 11, 134, 8, 134, 134,
633 134, 134, 134, 134, 134, 134, 11, 12,
634 13, 14, 134, 134, 134, 134, 134, 134,
635 134, 22, 23, 134, 24, 25, 26, 134,
636 134, 134, 134, 134, 31, 32, 33, 135,
637 134, 134, 134, 134, 11, 134, 8, 134,
638 134, 134, 134, 134, 134, 134, 134, 11,
639 12, 13, 14, 134, 134, 134, 134, 134,
640 134, 134, 134, 23, 134, 24, 25, 26,
641 134, 134, 134, 134, 134, 31, 32, 33,
642 135, 134, 134, 134, 134, 11, 134, 137,
643 134, 8, 134, 134, 134, 134, 134, 134,
644 134, 10, 11, 12, 13, 14, 134, 16,
645 17, 134, 134, 134, 21, 22, 23, 134,
646 24, 25, 26, 134, 134, 134, 134, 134,
647 31, 32, 33, 135, 134, 134, 134, 134,
648 11, 134, 8, 134, 134, 134, 134, 134,
649 134, 134, 134, 11, 12, 13, 14, 134,
650 134, 134, 134, 134, 134, 134, 134, 134,
651 134, 24, 25, 26, 134, 134, 134, 134,
652 134, 31, 32, 33, 135, 134, 134, 134,
653 134, 11, 134, 137, 134, 8, 134, 134,
654 134, 134, 134, 134, 134, 10, 11, 12,
655 13, 14, 134, 134, 17, 134, 134, 134,
656 21, 22, 23, 134, 24, 25, 26, 134,
657 134, 134, 134, 134, 31, 32, 33, 135,
658 134, 134, 134, 134, 11, 134, 137, 134,
659 8, 134, 134, 134, 134, 134, 134, 134,
660 10, 11, 12, 13, 14, 134, 134, 134,
661 134, 134, 134, 21, 22, 23, 134, 24,
662 25, 26, 134, 134, 134, 134, 134, 31,
663 32, 33, 135, 134, 134, 134, 134, 11,
664 134, 137, 134, 8, 134, 134, 134, 134,
665 134, 134, 134, 10, 11, 12, 13, 14,
666 15, 16, 17, 134, 134, 134, 21, 22,
667 23, 134, 24, 25, 26, 134, 134, 134,
668 134, 134, 31, 32, 33, 135, 134, 134,
669 134, 134, 11, 134, 5, 6, 134, 8,
670 134, 134, 134, 134, 134, 134, 134, 10,
671 11, 12, 13, 14, 15, 16, 17, 18,
672 134, 20, 21, 22, 23, 134, 24, 25,
673 26, 134, 134, 134, 134, 30, 31, 32,
674 33, 30, 134, 134, 134, 134, 36, 134,
675 5, 134, 134, 134, 134, 134, 134, 134,
676 134, 134, 134, 134, 134, 8, 134, 5,
677 134, 134, 134, 134, 134, 134, 134, 134,
678 134, 134, 134, 134, 8, 134, 134, 134,
679 134, 134, 134, 134, 134, 11, 12, 13,
680 14, 134, 134, 134, 134, 134, 134, 134,
681 134, 134, 134, 24, 25, 26, 134, 134,
682 134, 134, 134, 31, 32, 33, 135, 134,
683 138, 134, 134, 134, 134, 134, 134, 134,
684 134, 134, 8, 134, 7, 8, 134, 1,
685 134, 134, 134, 1, 134, 134, 134, 134,
686 134, 5, 6, 7, 8, 134, 134, 134,
687 134, 134, 134, 134, 10, 11, 12, 13,
688 14, 15, 16, 17, 18, 19, 20, 21,
689 22, 23, 134, 24, 25, 26, 134, 27,
690 28, 134, 30, 31, 32, 33, 30, 134,
691 134, 134, 134, 36, 134, 5, 6, 134,
692 8, 134, 134, 134, 134, 134, 134, 134,
693 10, 11, 12, 13, 14, 15, 16, 17,
694 18, 19, 20, 21, 22, 23, 134, 24,
695 25, 26, 134, 134, 134, 134, 30, 31,
696 32, 33, 30, 134, 134, 134, 134, 36,
697 134, 8, 134, 134, 134, 134, 134, 134,
698 134, 134, 134, 134, 134, 134, 134, 134,
699 134, 134, 134, 134, 134, 134, 134, 134,
700 134, 134, 134, 134, 27, 28, 134, 8,
701 134, 134, 134, 134, 134, 134, 134, 134,
702 134, 134, 134, 134, 134, 134, 134, 134,
703 134, 134, 134, 134, 134, 134, 134, 134,
704 134, 134, 134, 28, 134, 1, 139, 139,
705 139, 1, 139, 141, 140, 140, 140, 140,
706 140, 140, 140, 140, 140, 140, 140, 140,
707 140, 140, 140, 140, 140, 140, 140, 140,
708 140, 140, 140, 140, 140, 140, 140, 140,
709 140, 140, 140, 140, 140, 140, 140, 142,
710 140, 34, 140, 141, 140, 140, 140, 140,
711 140, 140, 140, 140, 140, 140, 140, 140,
712 140, 140, 140, 140, 140, 140, 140, 140,
713 140, 140, 140, 140, 140, 140, 140, 140,
714 140, 140, 140, 140, 140, 140, 34, 142,
715 140, 142, 140, 141, 140, 140, 140, 140,
716 140, 140, 140, 140, 140, 140, 140, 140,
717 140, 140, 140, 140, 140, 140, 140, 140,
718 140, 140, 140, 140, 140, 140, 140, 140,
719 140, 140, 140, 140, 140, 140, 34, 140,
720 35, 140, 0
721 };
722
723 static const char _use_syllable_machine_trans_targs[] = {
724 1, 31, 0, 59, 61, 90, 91, 116,
725 0, 118, 104, 92, 93, 94, 95, 108,
726 110, 111, 112, 119, 113, 105, 106, 107,
727 99, 100, 101, 120, 121, 122, 114, 96,
728 97, 98, 123, 125, 115, 0, 2, 3,
729 0, 16, 4, 5, 6, 7, 20, 22,
730 23, 24, 28, 25, 17, 18, 19, 11,
731 12, 13, 29, 30, 26, 8, 9, 10,
732 27, 14, 15, 21, 0, 32, 33, 0,
733 46, 34, 35, 36, 37, 50, 52, 53,
734 54, 55, 47, 48, 49, 41, 42, 43,
735 56, 38, 39, 40, 57, 58, 44, 0,
736 45, 0, 51, 0, 0, 0, 60, 0,
737 0, 0, 62, 63, 76, 64, 65, 66,
738 67, 80, 82, 83, 84, 89, 85, 77,
739 78, 79, 71, 72, 73, 86, 68, 69,
740 70, 87, 88, 74, 75, 81, 0, 102,
741 103, 109, 117, 0, 0, 0, 124
742 };
743
744 static const char _use_syllable_machine_trans_actions[] = {
745 0, 0, 3, 0, 0, 0, 0, 0,
746 4, 0, 0, 0, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 0, 0, 0,
748 0, 0, 0, 0, 0, 0, 0, 0,
749 0, 0, 0, 0, 0, 5, 0, 0,
750 6, 0, 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 7, 0, 0, 8,
754 0, 0, 0, 0, 0, 0, 0, 0,
755 0, 0, 0, 0, 0, 0, 0, 0,
756 0, 0, 0, 0, 0, 0, 0, 9,
757 0, 10, 0, 11, 12, 13, 0, 14,
758 15, 16, 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, 17, 0,
762 0, 0, 0, 18, 19, 20, 0
763 };
764
765 static const char _use_syllable_machine_to_state_actions[] = {
766 1, 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, 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
782 };
783
784 static const char _use_syllable_machine_from_state_actions[] = {
785 2, 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, 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
801 };
802
803 static const short _use_syllable_machine_eof_trans[] = {
804 0, 38, 38, 38, 38, 38, 38, 38,
805 38, 38, 38, 38, 38, 38, 38, 38,
806 38, 38, 38, 38, 38, 38, 38, 38,
807 38, 38, 38, 38, 38, 38, 38, 69,
808 69, 69, 69, 69, 69, 69, 69, 69,
809 69, 69, 69, 69, 96, 69, 69, 69,
810 69, 69, 69, 69, 69, 69, 69, 69,
811 100, 96, 69, 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, 69, 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, 135, 140, 141, 141, 141
820 };
821
822 static const int use_syllable_machine_start = 0;
823 static const int use_syllable_machine_first_final = 0;
824 static const int use_syllable_machine_error = -1;
825
826 static const int use_syllable_machine_en_main = 0;
827
828
829 #line 58 "hb-ot-shaper-use-machine.rl"
830
831
832
833 #line 182 "hb-ot-shaper-use-machine.rl"
834
835
836 #define found_syllable(syllable_type) \
837 HB_STMT_START { \
838 if (0) fprintf (stderr, "syllable %d..%d %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 ()__anon6245d2400108894 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 922 "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 282 "hb-ot-shaper-use-machine.rl"
941
942
943 unsigned int syllable_serial = 1;
944
945 #line 931 "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 2:
956 #line 1 "NONE"
957 {ts = p;}
958 break;
959 #line 943 "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 12:
978 #line 170 "hb-ot-shaper-use-machine.rl"
979 {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
980 break;
981 case 10:
982 #line 171 "hb-ot-shaper-use-machine.rl"
983 {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
984 break;
985 case 8:
986 #line 172 "hb-ot-shaper-use-machine.rl"
987 {te = p+1;{ found_syllable (use_standard_cluster); }}
988 break;
989 case 16:
990 #line 173 "hb-ot-shaper-use-machine.rl"
991 {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
992 break;
993 case 14:
994 #line 174 "hb-ot-shaper-use-machine.rl"
995 {te = p+1;{ found_syllable (use_numeral_cluster); }}
996 break;
997 case 6:
998 #line 175 "hb-ot-shaper-use-machine.rl"
999 {te = p+1;{ found_syllable (use_symbol_cluster); }}
1000 break;
1001 case 20:
1002 #line 176 "hb-ot-shaper-use-machine.rl"
1003 {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1004 break;
1005 case 4:
1006 #line 177 "hb-ot-shaper-use-machine.rl"
1007 {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1008 break;
1009 case 3:
1010 #line 178 "hb-ot-shaper-use-machine.rl"
1011 {te = p+1;{ found_syllable (use_non_cluster); }}
1012 break;
1013 case 11:
1014 #line 170 "hb-ot-shaper-use-machine.rl"
1015 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1016 break;
1017 case 9:
1018 #line 171 "hb-ot-shaper-use-machine.rl"
1019 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1020 break;
1021 case 7:
1022 #line 172 "hb-ot-shaper-use-machine.rl"
1023 {te = p;p--;{ found_syllable (use_standard_cluster); }}
1024 break;
1025 case 15:
1026 #line 173 "hb-ot-shaper-use-machine.rl"
1027 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1028 break;
1029 case 13:
1030 #line 174 "hb-ot-shaper-use-machine.rl"
1031 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1032 break;
1033 case 5:
1034 #line 175 "hb-ot-shaper-use-machine.rl"
1035 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1036 break;
1037 case 19:
1038 #line 176 "hb-ot-shaper-use-machine.rl"
1039 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1040 break;
1041 case 17:
1042 #line 177 "hb-ot-shaper-use-machine.rl"
1043 {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1044 break;
1045 case 18:
1046 #line 178 "hb-ot-shaper-use-machine.rl"
1047 {te = p;p--;{ found_syllable (use_non_cluster); }}
1048 break;
1049 #line 1014 "hb-ot-shaper-use-machine.hh"
1050 }
1051
1052 _again:
1053 switch ( _use_syllable_machine_to_state_actions[cs] ) {
1054 case 1:
1055 #line 1 "NONE"
1056 {ts = 0;}
1057 break;
1058 #line 1021 "hb-ot-shaper-use-machine.hh"
1059 }
1060
1061 if ( ++p != pe )
1062 goto _resume;
1063 _test_eof: {}
1064 if ( p == eof )
1065 {
1066 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1067 _trans = _use_syllable_machine_eof_trans[cs] - 1;
1068 goto _eof_trans;
1069 }
1070 }
1071
1072 }
1073
1074 #line 287 "hb-ot-shaper-use-machine.rl"
1075
1076 }
1077
1078 #undef found_syllable
1079
1080 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1081