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