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