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"
38static 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
50static 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
62static 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
74static 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
294static 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
307static 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
320static 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
332static 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
344static 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
356static const int use_syllable_machine_start = 3;
357static const int use_syllable_machine_first_final = 3;
358static const int use_syllable_machine_error = 0;
359
360static 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
380static void
381find_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