1
2 #line 1 "hb-ot-shape-complex-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_SHAPE_COMPLEX_USE_MACHINE_HH
32 #define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
33
34 #include "hb-private.hh"
35
36
37 #line 38 "hb-ot-shape-complex-use-machine.hh"
38 static const unsigned char _use_syllable_machine_trans_keys[] = {
39 0u, 0u, 4u, 4u, 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u,
40 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u,
41 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
42 8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u,
43 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
44 8u, 39u, 12u, 21u, 12u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u,
45 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
46 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u,
47 42u, 42u, 0
48 };
49
50 static const char _use_syllable_machine_key_spans[] = {
51 0, 1, 1, 40, 1, 32, 32, 1,
52 32, 32, 32, 19, 19, 19, 32, 32,
53 32, 32, 32, 32, 32, 32, 32, 32,
54 32, 32, 32, 1, 32, 32, 19, 19,
55 19, 32, 32, 32, 32, 32, 32, 32,
56 32, 10, 2, 32, 32, 32, 32, 19,
57 19, 19, 32, 32, 32, 32, 32, 32,
58 32, 32, 32, 32, 39, 32, 22, 2,
59 1
60 };
61
62 static const short _use_syllable_machine_index_offsets[] = {
63 0, 0, 2, 4, 45, 47, 80, 113,
64 115, 148, 181, 214, 234, 254, 274, 307,
65 340, 373, 406, 439, 472, 505, 538, 571,
66 604, 637, 670, 703, 705, 738, 771, 791,
67 811, 831, 864, 897, 930, 963, 996, 1029,
68 1062, 1095, 1106, 1109, 1142, 1175, 1208, 1241,
69 1261, 1281, 1301, 1334, 1367, 1400, 1433, 1466,
70 1499, 1532, 1565, 1598, 1631, 1671, 1704, 1727,
71 1730
72 };
73
74 static const char _use_syllable_machine_indicies[] = {
75 1, 0, 3, 2, 4, 5, 6,
76 4, 1, 5, 8, 8, 7, 8, 8,
77 3, 9, 8, 8, 8, 4, 4, 10,
78 11, 8, 8, 12, 13, 14, 15, 16,
79 17, 18, 12, 19, 20, 21, 22, 23,
80 24, 8, 25, 26, 27, 8, 29, 28,
81 31, 30, 30, 32, 33, 30, 30, 30,
82 30, 30, 30, 30, 30, 34, 35, 36,
83 37, 38, 39, 40, 41, 35, 42, 34,
84 43, 44, 45, 46, 30, 47, 48, 49,
85 30, 31, 30, 30, 32, 33, 30, 30,
86 30, 30, 30, 30, 30, 30, 50, 35,
87 36, 37, 38, 39, 40, 41, 35, 42,
88 43, 43, 44, 45, 46, 30, 47, 48,
89 49, 30, 32, 51, 31, 30, 30, 32,
90 33, 30, 30, 30, 30, 30, 30, 30,
91 30, 30, 35, 36, 37, 38, 39, 40,
92 41, 35, 42, 43, 43, 44, 45, 46,
93 30, 47, 48, 49, 30, 31, 30, 30,
94 30, 30, 30, 30, 30, 30, 30, 30,
95 30, 30, 30, 35, 36, 37, 38, 39,
96 30, 30, 30, 30, 30, 30, 44, 45,
97 46, 30, 47, 48, 49, 30, 31, 30,
98 30, 30, 30, 30, 30, 30, 30, 30,
99 30, 30, 30, 30, 30, 36, 37, 38,
100 39, 30, 30, 30, 30, 30, 30, 30,
101 30, 30, 30, 47, 48, 49, 30, 31,
102 30, 30, 30, 30, 30, 30, 30, 30,
103 30, 30, 30, 30, 30, 30, 30, 37,
104 38, 39, 30, 31, 30, 30, 30, 30,
105 30, 30, 30, 30, 30, 30, 30, 30,
106 30, 30, 30, 30, 38, 39, 30, 31,
107 30, 30, 30, 30, 30, 30, 30, 30,
108 30, 30, 30, 30, 30, 30, 30, 30,
109 30, 39, 30, 31, 30, 30, 30, 30,
110 30, 30, 30, 30, 30, 30, 30, 30,
111 30, 30, 30, 37, 38, 39, 30, 30,
112 30, 30, 30, 30, 30, 30, 30, 30,
113 47, 48, 49, 30, 31, 30, 30, 30,
114 30, 30, 30, 30, 30, 30, 30, 30,
115 30, 30, 30, 30, 37, 38, 39, 30,
116 30, 30, 30, 30, 30, 30, 30, 30,
117 30, 30, 48, 49, 30, 31, 30, 30,
118 30, 30, 30, 30, 30, 30, 30, 30,
119 30, 30, 30, 30, 30, 37, 38, 39,
120 30, 30, 30, 30, 30, 30, 30, 30,
121 30, 30, 30, 30, 49, 30, 31, 30,
122 30, 30, 30, 30, 30, 30, 30, 30,
123 30, 30, 30, 30, 30, 36, 37, 38,
124 39, 30, 30, 30, 30, 30, 30, 44,
125 45, 46, 30, 47, 48, 49, 30, 31,
126 30, 30, 30, 30, 30, 30, 30, 30,
127 30, 30, 30, 30, 30, 30, 36, 37,
128 38, 39, 30, 30, 30, 30, 30, 30,
129 30, 45, 46, 30, 47, 48, 49, 30,
130 31, 30, 30, 30, 30, 30, 30, 30,
131 30, 30, 30, 30, 30, 30, 30, 36,
132 37, 38, 39, 30, 30, 30, 30, 30,
133 30, 30, 30, 46, 30, 47, 48, 49,
134 30, 31, 30, 30, 30, 30, 30, 30,
135 30, 30, 30, 30, 30, 30, 30, 35,
136 36, 37, 38, 39, 30, 41, 35, 30,
137 30, 30, 44, 45, 46, 30, 47, 48,
138 49, 30, 31, 30, 30, 30, 30, 30,
139 30, 30, 30, 30, 30, 30, 30, 30,
140 35, 36, 37, 38, 39, 30, 30, 35,
141 30, 30, 30, 44, 45, 46, 30, 47,
142 48, 49, 30, 31, 30, 30, 30, 30,
143 30, 30, 30, 30, 30, 30, 30, 30,
144 30, 35, 36, 37, 38, 39, 40, 41,
145 35, 30, 30, 30, 44, 45, 46, 30,
146 47, 48, 49, 30, 31, 30, 30, 32,
147 33, 30, 30, 30, 30, 30, 30, 30,
148 30, 30, 35, 36, 37, 38, 39, 40,
149 41, 35, 42, 30, 43, 44, 45, 46,
150 30, 47, 48, 49, 30, 31, 30, 30,
151 32, 33, 30, 30, 30, 30, 30, 30,
152 30, 30, 30, 35, 36, 37, 38, 39,
153 40, 41, 35, 42, 34, 43, 44, 45,
154 46, 30, 47, 48, 49, 30, 53, 52,
155 52, 54, 55, 52, 52, 52, 52, 52,
156 52, 52, 52, 56, 52, 57, 58, 59,
157 60, 61, 62, 57, 63, 56, 64, 52,
158 52, 52, 52, 65, 66, 67, 52, 53,
159 52, 52, 54, 55, 52, 52, 52, 52,
160 52, 52, 52, 52, 68, 52, 57, 58,
161 59, 60, 61, 62, 57, 63, 64, 64,
162 52, 52, 52, 52, 65, 66, 67, 52,
163 54, 51, 53, 52, 52, 54, 55, 52,
164 52, 52, 52, 52, 52, 52, 52, 52,
165 52, 57, 58, 59, 60, 61, 62, 57,
166 63, 64, 64, 52, 52, 52, 52, 65,
167 66, 67, 52, 53, 52, 52, 52, 52,
168 52, 52, 52, 52, 52, 52, 52, 52,
169 52, 52, 57, 58, 59, 60, 52, 52,
170 52, 52, 52, 52, 52, 52, 52, 52,
171 65, 66, 67, 52, 53, 52, 52, 52,
172 52, 52, 52, 52, 52, 52, 52, 52,
173 52, 52, 52, 52, 58, 59, 60, 52,
174 53, 52, 52, 52, 52, 52, 52, 52,
175 52, 52, 52, 52, 52, 52, 52, 52,
176 52, 59, 60, 52, 53, 52, 52, 52,
177 52, 52, 52, 52, 52, 52, 52, 52,
178 52, 52, 52, 52, 52, 52, 60, 52,
179 53, 52, 52, 52, 52, 52, 52, 52,
180 52, 52, 52, 52, 52, 52, 52, 52,
181 58, 59, 60, 52, 52, 52, 52, 52,
182 52, 52, 52, 52, 52, 65, 66, 67,
183 52, 53, 52, 52, 52, 52, 52, 52,
184 52, 52, 52, 52, 52, 52, 52, 52,
185 52, 58, 59, 60, 52, 52, 52, 52,
186 52, 52, 52, 52, 52, 52, 52, 66,
187 67, 52, 53, 52, 52, 52, 52, 52,
188 52, 52, 52, 52, 52, 52, 52, 52,
189 52, 52, 58, 59, 60, 52, 52, 52,
190 52, 52, 52, 52, 52, 52, 52, 52,
191 52, 67, 52, 53, 52, 52, 52, 52,
192 52, 52, 52, 52, 52, 52, 52, 52,
193 52, 52, 57, 58, 59, 60, 52, 62,
194 57, 52, 52, 52, 52, 52, 52, 52,
195 65, 66, 67, 52, 53, 52, 52, 52,
196 52, 52, 52, 52, 52, 52, 52, 52,
197 52, 52, 52, 57, 58, 59, 60, 52,
198 52, 57, 52, 52, 52, 52, 52, 52,
199 52, 65, 66, 67, 52, 53, 52, 52,
200 52, 52, 52, 52, 52, 52, 52, 52,
201 52, 52, 52, 52, 57, 58, 59, 60,
202 61, 62, 57, 52, 52, 52, 52, 52,
203 52, 52, 65, 66, 67, 52, 53, 52,
204 52, 54, 55, 52, 52, 52, 52, 52,
205 52, 52, 52, 52, 52, 57, 58, 59,
206 60, 61, 62, 57, 63, 52, 64, 52,
207 52, 52, 52, 65, 66, 67, 52, 53,
208 52, 52, 54, 55, 52, 52, 52, 52,
209 52, 52, 52, 52, 52, 52, 57, 58,
210 59, 60, 61, 62, 57, 63, 56, 64,
211 52, 52, 52, 52, 65, 66, 67, 52,
212 70, 71, 69, 69, 69, 69, 69, 69,
213 69, 72, 69, 70, 71, 69, 7, 73,
214 73, 3, 9, 73, 73, 73, 73, 73,
215 73, 73, 73, 74, 12, 13, 14, 15,
216 16, 17, 18, 12, 19, 21, 21, 22,
217 23, 24, 73, 25, 26, 27, 73, 7,
218 73, 73, 3, 9, 73, 73, 73, 73,
219 73, 73, 73, 73, 73, 12, 13, 14,
220 15, 16, 17, 18, 12, 19, 21, 21,
221 22, 23, 24, 73, 25, 26, 27, 73,
222 7, 73, 73, 73, 73, 73, 73, 73,
223 73, 73, 73, 73, 73, 73, 12, 13,
224 14, 15, 16, 73, 73, 73, 73, 73,
225 73, 22, 23, 24, 73, 25, 26, 27,
226 73, 7, 73, 73, 73, 73, 73, 73,
227 73, 73, 73, 73, 73, 73, 73, 73,
228 13, 14, 15, 16, 73, 73, 73, 73,
229 73, 73, 73, 73, 73, 73, 25, 26,
230 27, 73, 7, 73, 73, 73, 73, 73,
231 73, 73, 73, 73, 73, 73, 73, 73,
232 73, 73, 14, 15, 16, 73, 7, 73,
233 73, 73, 73, 73, 73, 73, 73, 73,
234 73, 73, 73, 73, 73, 73, 73, 15,
235 16, 73, 7, 73, 73, 73, 73, 73,
236 73, 73, 73, 73, 73, 73, 73, 73,
237 73, 73, 73, 73, 16, 73, 7, 73,
238 73, 73, 73, 73, 73, 73, 73, 73,
239 73, 73, 73, 73, 73, 73, 14, 15,
240 16, 73, 73, 73, 73, 73, 73, 73,
241 73, 73, 73, 25, 26, 27, 73, 7,
242 73, 73, 73, 73, 73, 73, 73, 73,
243 73, 73, 73, 73, 73, 73, 73, 14,
244 15, 16, 73, 73, 73, 73, 73, 73,
245 73, 73, 73, 73, 73, 26, 27, 73,
246 7, 73, 73, 73, 73, 73, 73, 73,
247 73, 73, 73, 73, 73, 73, 73, 73,
248 14, 15, 16, 73, 73, 73, 73, 73,
249 73, 73, 73, 73, 73, 73, 73, 27,
250 73, 7, 73, 73, 73, 73, 73, 73,
251 73, 73, 73, 73, 73, 73, 73, 73,
252 13, 14, 15, 16, 73, 73, 73, 73,
253 73, 73, 22, 23, 24, 73, 25, 26,
254 27, 73, 7, 73, 73, 73, 73, 73,
255 73, 73, 73, 73, 73, 73, 73, 73,
256 73, 13, 14, 15, 16, 73, 73, 73,
257 73, 73, 73, 73, 23, 24, 73, 25,
258 26, 27, 73, 7, 73, 73, 73, 73,
259 73, 73, 73, 73, 73, 73, 73, 73,
260 73, 73, 13, 14, 15, 16, 73, 73,
261 73, 73, 73, 73, 73, 73, 24, 73,
262 25, 26, 27, 73, 7, 73, 73, 73,
263 73, 73, 73, 73, 73, 73, 73, 73,
264 73, 73, 12, 13, 14, 15, 16, 73,
265 18, 12, 73, 73, 73, 22, 23, 24,
266 73, 25, 26, 27, 73, 7, 73, 73,
267 73, 73, 73, 73, 73, 73, 73, 73,
268 73, 73, 73, 12, 13, 14, 15, 16,
269 73, 73, 12, 73, 73, 73, 22, 23,
270 24, 73, 25, 26, 27, 73, 7, 73,
271 73, 73, 73, 73, 73, 73, 73, 73,
272 73, 73, 73, 73, 12, 13, 14, 15,
273 16, 17, 18, 12, 73, 73, 73, 22,
274 23, 24, 73, 25, 26, 27, 73, 7,
275 73, 73, 3, 9, 73, 73, 73, 73,
276 73, 73, 73, 73, 73, 12, 13, 14,
277 15, 16, 17, 18, 12, 19, 73, 21,
278 22, 23, 24, 73, 25, 26, 27, 73,
279 5, 6, 73, 73, 5, 73, 73, 7,
280 73, 73, 3, 9, 73, 73, 73, 73,
281 73, 73, 73, 73, 73, 12, 13, 14,
282 15, 16, 17, 18, 12, 19, 20, 21,
283 22, 23, 24, 73, 25, 26, 27, 73,
284 7, 73, 73, 3, 9, 73, 73, 73,
285 73, 73, 73, 73, 73, 73, 12, 13,
286 14, 15, 16, 17, 18, 12, 19, 20,
287 21, 22, 23, 24, 73, 25, 26, 27,
288 73, 76, 75, 75, 75, 75, 75, 75,
289 75, 75, 75, 75, 75, 75, 75, 75,
290 75, 75, 75, 75, 75, 76, 77, 75,
291 76, 77, 75, 77, 75, 0
292 };
293
294 static const char _use_syllable_machine_trans_targs[] = {
295 3, 41, 3, 43, 4, 5, 25, 3,
296 0, 2, 60, 62, 45, 46, 47, 48,
297 49, 56, 57, 58, 61, 59, 53, 54,
298 55, 50, 51, 52, 3, 3, 3, 3,
299 6, 7, 24, 9, 10, 11, 12, 13,
300 20, 21, 22, 23, 17, 18, 19, 14,
301 15, 16, 8, 3, 3, 3, 26, 27,
302 40, 29, 30, 31, 32, 36, 37, 38,
303 39, 33, 34, 35, 28, 3, 3, 1,
304 42, 3, 44, 3, 63, 64
305 };
306
307 static const char _use_syllable_machine_trans_actions[] = {
308 1, 2, 3, 4, 0, 0, 0, 7,
309 0, 0, 4, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 4, 4, 0, 0,
311 0, 0, 0, 0, 8, 9, 10, 11,
312 0, 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 12, 13, 14, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 15, 16, 0,
317 2, 17, 4, 18, 0, 0
318 };
319
320 static const char _use_syllable_machine_to_state_actions[] = {
321 0, 0, 0, 5, 0, 0, 0, 0,
322 0, 0, 0, 0, 0, 0, 0, 0,
323 0, 0, 0, 0, 0, 0, 0, 0,
324 0, 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0, 0,
326 0, 0, 0, 0, 0, 0, 0, 0,
327 0, 0, 0, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0,
329 0
330 };
331
332 static const char _use_syllable_machine_from_state_actions[] = {
333 0, 0, 0, 6, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0, 0, 0, 0,
341 0
342 };
343
344 static const short _use_syllable_machine_eof_trans[] = {
345 0, 1, 3, 0, 29, 31, 31, 52,
346 31, 31, 31, 31, 31, 31, 31, 31,
347 31, 31, 31, 31, 31, 31, 31, 31,
348 31, 53, 53, 52, 53, 53, 53, 53,
349 53, 53, 53, 53, 53, 53, 53, 53,
350 53, 70, 70, 74, 74, 74, 74, 74,
351 74, 74, 74, 74, 74, 74, 74, 74,
352 74, 74, 74, 74, 74, 74, 76, 76,
353 76
354 };
355
356 static const int use_syllable_machine_start = 3;
357 static const int use_syllable_machine_first_final = 3;
358 static const int use_syllable_machine_error = 0;
359
360 static const int use_syllable_machine_en_main = 3;
361
362
363 #line 38 "hb-ot-shape-complex-use-machine.rl"
364
365
366
367 #line 145 "hb-ot-shape-complex-use-machine.rl"
368
369
370 #define found_syllable(syllable_type) \
371 HB_STMT_START { \
372 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
373 for (unsigned int i = last; i < p+1; i++) \
374 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
375 last = p+1; \
376 syllable_serial++; \
377 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
378 } HB_STMT_END
379
380 static void
find_syllables(hb_buffer_t * buffer)381 find_syllables (hb_buffer_t *buffer)
382 {
383 unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
384 int cs;
385 hb_glyph_info_t *info = buffer->info;
386
387 #line 388 "hb-ot-shape-complex-use-machine.hh"
388 {
389 cs = use_syllable_machine_start;
390 ts = 0;
391 te = 0;
392 act = 0;
393 }
394
395 #line 166 "hb-ot-shape-complex-use-machine.rl"
396
397
398 p = 0;
399 pe = eof = buffer->len;
400
401 unsigned int last = 0;
402 unsigned int syllable_serial = 1;
403
404 #line 405 "hb-ot-shape-complex-use-machine.hh"
405 {
406 int _slen;
407 int _trans;
408 const unsigned char *_keys;
409 const char *_inds;
410 if ( p == pe )
411 goto _test_eof;
412 if ( cs == 0 )
413 goto _out;
414 _resume:
415 switch ( _use_syllable_machine_from_state_actions[cs] ) {
416 case 6:
417 #line 1 "NONE"
418 {ts = p;}
419 break;
420 #line 421 "hb-ot-shape-complex-use-machine.hh"
421 }
422
423 _keys = _use_syllable_machine_trans_keys + (cs<<1);
424 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
425
426 _slen = _use_syllable_machine_key_spans[cs];
427 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) &&
428 ( info[p].use_category()) <= _keys[1] ?
429 ( info[p].use_category()) - _keys[0] : _slen ];
430
431 _eof_trans:
432 cs = _use_syllable_machine_trans_targs[_trans];
433
434 if ( _use_syllable_machine_trans_actions[_trans] == 0 )
435 goto _again;
436
437 switch ( _use_syllable_machine_trans_actions[_trans] ) {
438 case 2:
439 #line 1 "NONE"
440 {te = p+1;}
441 break;
442 case 9:
443 #line 134 "hb-ot-shape-complex-use-machine.rl"
444 {te = p+1;{ found_syllable (independent_cluster); }}
445 break;
446 case 11:
447 #line 136 "hb-ot-shape-complex-use-machine.rl"
448 {te = p+1;{ found_syllable (consonant_cluster); }}
449 break;
450 case 14:
451 #line 137 "hb-ot-shape-complex-use-machine.rl"
452 {te = p+1;{ found_syllable (vowel_cluster); }}
453 break;
454 case 16:
455 #line 138 "hb-ot-shape-complex-use-machine.rl"
456 {te = p+1;{ found_syllable (number_joiner_terminated_cluster); }}
457 break;
458 case 7:
459 #line 141 "hb-ot-shape-complex-use-machine.rl"
460 {te = p+1;{ found_syllable (broken_cluster); }}
461 break;
462 case 8:
463 #line 134 "hb-ot-shape-complex-use-machine.rl"
464 {te = p;p--;{ found_syllable (independent_cluster); }}
465 break;
466 case 12:
467 #line 135 "hb-ot-shape-complex-use-machine.rl"
468 {te = p;p--;{ found_syllable (virama_terminated_cluster); }}
469 break;
470 case 10:
471 #line 136 "hb-ot-shape-complex-use-machine.rl"
472 {te = p;p--;{ found_syllable (consonant_cluster); }}
473 break;
474 case 13:
475 #line 137 "hb-ot-shape-complex-use-machine.rl"
476 {te = p;p--;{ found_syllable (vowel_cluster); }}
477 break;
478 case 15:
479 #line 139 "hb-ot-shape-complex-use-machine.rl"
480 {te = p;p--;{ found_syllable (numeral_cluster); }}
481 break;
482 case 18:
483 #line 140 "hb-ot-shape-complex-use-machine.rl"
484 {te = p;p--;{ found_syllable (symbol_cluster); }}
485 break;
486 case 17:
487 #line 141 "hb-ot-shape-complex-use-machine.rl"
488 {te = p;p--;{ found_syllable (broken_cluster); }}
489 break;
490 case 1:
491 #line 139 "hb-ot-shape-complex-use-machine.rl"
492 {{p = ((te))-1;}{ found_syllable (numeral_cluster); }}
493 break;
494 case 3:
495 #line 1 "NONE"
496 { switch( act ) {
497 case 0:
498 {{cs = 0; goto _again;}}
499 break;
500 case 8:
501 {{p = ((te))-1;} found_syllable (broken_cluster); }
502 break;
503 }
504 }
505 break;
506 case 4:
507 #line 1 "NONE"
508 {te = p+1;}
509 #line 141 "hb-ot-shape-complex-use-machine.rl"
510 {act = 8;}
511 break;
512 #line 513 "hb-ot-shape-complex-use-machine.hh"
513 }
514
515 _again:
516 switch ( _use_syllable_machine_to_state_actions[cs] ) {
517 case 5:
518 #line 1 "NONE"
519 {ts = 0;}
520 #line 1 "NONE"
521 {act = 0;}
522 break;
523 #line 524 "hb-ot-shape-complex-use-machine.hh"
524 }
525
526 if ( cs == 0 )
527 goto _out;
528 if ( ++p != pe )
529 goto _resume;
530 _test_eof: {}
531 if ( p == eof )
532 {
533 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
534 _trans = _use_syllable_machine_eof_trans[cs] - 1;
535 goto _eof_trans;
536 }
537 }
538
539 _out: {}
540 }
541
542 #line 175 "hb-ot-shape-complex-use-machine.rl"
543
544 }
545
546 #undef found_syllable
547
548 #endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */
549