2 #line 1 "hb-ot-shape-complex-use-machine.rl"
4 * Copyright © 2015 Mozilla Foundation.
5 * Copyright © 2015 Google, Inc.
7 * This is part of HarfBuzz, a text shaping library.
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.
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
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.
27 * Mozilla Author(s): Jonathan Kew
28 * Google Author(s): Behdad Esfahbod
31 #ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
32 #define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
36 #include "hb-ot-shape-complex-syllabic.hh"
38 /* buffer var allocations */
39 #define use_category() complex_var_u8_category()
41 #define USE(Cat) use_syllable_machine_ex_##Cat
43 enum use_syllable_type_t {
44 use_virama_terminated_cluster,
45 use_sakot_terminated_cluster,
47 use_number_joiner_terminated_cluster,
50 use_hieroglyph_cluster,
56 #line 57 "hb-ot-shape-complex-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 44u
73 #define use_syllable_machine_ex_J 50u
74 #define use_syllable_machine_ex_MAbv 27u
75 #define use_syllable_machine_ex_MBlw 28u
76 #define use_syllable_machine_ex_MPre 30u
77 #define use_syllable_machine_ex_MPst 29u
78 #define use_syllable_machine_ex_N 4u
79 #define use_syllable_machine_ex_O 0u
80 #define use_syllable_machine_ex_R 18u
81 #define use_syllable_machine_ex_SB 51u
82 #define use_syllable_machine_ex_SE 52u
83 #define use_syllable_machine_ex_SMAbv 41u
84 #define use_syllable_machine_ex_SMBlw 42u
85 #define use_syllable_machine_ex_SUB 11u
86 #define use_syllable_machine_ex_Sk 48u
87 #define use_syllable_machine_ex_VAbv 33u
88 #define use_syllable_machine_ex_VBlw 34u
89 #define use_syllable_machine_ex_VMAbv 37u
90 #define use_syllable_machine_ex_VMBlw 38u
91 #define use_syllable_machine_ex_VMPre 23u
92 #define use_syllable_machine_ex_VMPst 39u
93 #define use_syllable_machine_ex_VPre 22u
94 #define use_syllable_machine_ex_VPst 35u
95 #define use_syllable_machine_ex_ZWNJ 14u
98 #line 99 "hb-ot-shape-complex-use-machine.hh"
99 static const unsigned char _use_syllable_machine_trans_keys[] = {
100 0u, 51u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
101 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
102 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
103 11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u,
104 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u,
105 24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
106 22u, 48u, 11u, 48u, 1u, 48u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u, 41u, 42u,
107 42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
110 static const char _use_syllable_machine_key_spans[] = {
111 52, 2, 1, 38, 38, 1, 27, 26,
112 24, 23, 22, 2, 1, 25, 25, 25,
113 1, 25, 26, 26, 26, 27, 27, 27,
114 38, 48, 1, 1, 38, 38, 1, 27,
115 26, 24, 23, 22, 2, 1, 25, 25,
116 25, 1, 25, 26, 26, 26, 27, 27,
117 27, 38, 48, 1, 1, 48, 38, 2,
121 static const short _use_syllable_machine_index_offsets[] = {
122 0, 53, 56, 58, 97, 136, 138, 166,
123 193, 218, 242, 265, 268, 270, 296, 322,
124 348, 350, 376, 403, 430, 457, 485, 513,
125 541, 580, 629, 631, 633, 672, 711, 713,
126 741, 768, 793, 817, 840, 843, 845, 871,
127 897, 923, 925, 951, 978, 1005, 1032, 1060,
128 1088, 1116, 1155, 1204, 1206, 1208, 1257, 1296,
129 1299, 1301, 1307, 1311, 1316
132 static const char _use_syllable_machine_indicies[] = {
133 0, 1, 2, 2, 3, 4, 2, 2,
134 2, 2, 2, 5, 6, 7, 2, 2,
135 2, 2, 8, 2, 2, 2, 9, 10,
136 11, 12, 13, 14, 15, 9, 16, 17,
137 18, 19, 20, 21, 2, 22, 23, 24,
138 2, 25, 26, 27, 28, 29, 30, 31,
139 6, 32, 2, 33, 2, 0, 35, 34,
140 35, 34, 37, 38, 36, 36, 36, 36,
141 36, 36, 36, 36, 36, 39, 40, 41,
142 42, 43, 44, 45, 39, 46, 1, 47,
143 48, 49, 50, 36, 51, 52, 53, 36,
144 36, 36, 36, 54, 55, 56, 57, 38,
145 36, 37, 38, 36, 36, 36, 36, 36,
146 36, 36, 36, 36, 39, 40, 41, 42,
147 43, 44, 45, 39, 46, 47, 47, 48,
148 49, 50, 36, 51, 52, 53, 36, 36,
149 36, 36, 54, 55, 56, 57, 38, 36,
150 37, 58, 39, 40, 41, 42, 43, 36,
151 36, 36, 36, 36, 36, 48, 49, 50,
152 36, 51, 52, 53, 36, 36, 36, 36,
153 40, 55, 56, 57, 59, 36, 40, 41,
154 42, 43, 36, 36, 36, 36, 36, 36,
155 36, 36, 36, 36, 51, 52, 53, 36,
156 36, 36, 36, 36, 55, 56, 57, 59,
157 36, 41, 42, 43, 36, 36, 36, 36,
158 36, 36, 36, 36, 36, 36, 36, 36,
159 36, 36, 36, 36, 36, 36, 55, 56,
160 57, 36, 42, 43, 36, 36, 36, 36,
161 36, 36, 36, 36, 36, 36, 36, 36,
162 36, 36, 36, 36, 36, 36, 55, 56,
163 57, 36, 43, 36, 36, 36, 36, 36,
164 36, 36, 36, 36, 36, 36, 36, 36,
165 36, 36, 36, 36, 36, 55, 56, 57,
166 36, 55, 56, 36, 56, 36, 41, 42,
167 43, 36, 36, 36, 36, 36, 36, 36,
168 36, 36, 36, 51, 52, 53, 36, 36,
169 36, 36, 36, 55, 56, 57, 59, 36,
170 41, 42, 43, 36, 36, 36, 36, 36,
171 36, 36, 36, 36, 36, 36, 52, 53,
172 36, 36, 36, 36, 36, 55, 56, 57,
173 59, 36, 41, 42, 43, 36, 36, 36,
174 36, 36, 36, 36, 36, 36, 36, 36,
175 36, 53, 36, 36, 36, 36, 36, 55,
176 56, 57, 59, 36, 61, 60, 41, 42,
177 43, 36, 36, 36, 36, 36, 36, 36,
178 36, 36, 36, 36, 36, 36, 36, 36,
179 36, 36, 36, 55, 56, 57, 59, 36,
180 40, 41, 42, 43, 36, 36, 36, 36,
181 36, 36, 48, 49, 50, 36, 51, 52,
182 53, 36, 36, 36, 36, 40, 55, 56,
183 57, 59, 36, 40, 41, 42, 43, 36,
184 36, 36, 36, 36, 36, 36, 49, 50,
185 36, 51, 52, 53, 36, 36, 36, 36,
186 40, 55, 56, 57, 59, 36, 40, 41,
187 42, 43, 36, 36, 36, 36, 36, 36,
188 36, 36, 50, 36, 51, 52, 53, 36,
189 36, 36, 36, 40, 55, 56, 57, 59,
190 36, 39, 40, 41, 42, 43, 36, 45,
191 39, 36, 36, 36, 48, 49, 50, 36,
192 51, 52, 53, 36, 36, 36, 36, 40,
193 55, 56, 57, 59, 36, 39, 40, 41,
194 42, 43, 36, 36, 39, 36, 36, 36,
195 48, 49, 50, 36, 51, 52, 53, 36,
196 36, 36, 36, 40, 55, 56, 57, 59,
197 36, 39, 40, 41, 42, 43, 44, 45,
198 39, 36, 36, 36, 48, 49, 50, 36,
199 51, 52, 53, 36, 36, 36, 36, 40,
200 55, 56, 57, 59, 36, 37, 38, 36,
201 36, 36, 36, 36, 36, 36, 36, 36,
202 39, 40, 41, 42, 43, 44, 45, 39,
203 46, 36, 47, 48, 49, 50, 36, 51,
204 52, 53, 36, 36, 36, 36, 54, 55,
205 56, 57, 38, 36, 37, 58, 58, 58,
206 58, 58, 58, 58, 58, 58, 58, 58,
207 58, 58, 58, 58, 58, 58, 58, 58,
208 58, 58, 40, 41, 42, 43, 58, 58,
209 58, 58, 58, 58, 58, 58, 58, 58,
210 51, 52, 53, 58, 58, 58, 58, 58,
211 55, 56, 57, 59, 58, 63, 62, 3,
212 64, 37, 38, 36, 36, 36, 36, 36,
213 36, 36, 36, 36, 39, 40, 41, 42,
214 43, 44, 45, 39, 46, 1, 47, 48,
215 49, 50, 36, 51, 52, 53, 36, 0,
216 35, 36, 54, 55, 56, 57, 38, 36,
217 5, 6, 65, 65, 65, 65, 65, 65,
218 65, 65, 65, 9, 10, 11, 12, 13,
219 14, 15, 9, 16, 18, 18, 19, 20,
220 21, 65, 22, 23, 24, 65, 65, 65,
221 65, 28, 29, 30, 31, 6, 65, 5,
222 65, 9, 10, 11, 12, 13, 65, 65,
223 65, 65, 65, 65, 19, 20, 21, 65,
224 22, 23, 24, 65, 65, 65, 65, 10,
225 29, 30, 31, 66, 65, 10, 11, 12,
226 13, 65, 65, 65, 65, 65, 65, 65,
227 65, 65, 65, 22, 23, 24, 65, 65,
228 65, 65, 65, 29, 30, 31, 66, 65,
229 11, 12, 13, 65, 65, 65, 65, 65,
230 65, 65, 65, 65, 65, 65, 65, 65,
231 65, 65, 65, 65, 65, 29, 30, 31,
232 65, 12, 13, 65, 65, 65, 65, 65,
233 65, 65, 65, 65, 65, 65, 65, 65,
234 65, 65, 65, 65, 65, 29, 30, 31,
235 65, 13, 65, 65, 65, 65, 65, 65,
236 65, 65, 65, 65, 65, 65, 65, 65,
237 65, 65, 65, 65, 29, 30, 31, 65,
238 29, 30, 65, 30, 65, 11, 12, 13,
239 65, 65, 65, 65, 65, 65, 65, 65,
240 65, 65, 22, 23, 24, 65, 65, 65,
241 65, 65, 29, 30, 31, 66, 65, 11,
242 12, 13, 65, 65, 65, 65, 65, 65,
243 65, 65, 65, 65, 65, 23, 24, 65,
244 65, 65, 65, 65, 29, 30, 31, 66,
245 65, 11, 12, 13, 65, 65, 65, 65,
246 65, 65, 65, 65, 65, 65, 65, 65,
247 24, 65, 65, 65, 65, 65, 29, 30,
248 31, 66, 65, 67, 65, 11, 12, 13,
249 65, 65, 65, 65, 65, 65, 65, 65,
250 65, 65, 65, 65, 65, 65, 65, 65,
251 65, 65, 29, 30, 31, 66, 65, 10,
252 11, 12, 13, 65, 65, 65, 65, 65,
253 65, 19, 20, 21, 65, 22, 23, 24,
254 65, 65, 65, 65, 10, 29, 30, 31,
255 66, 65, 10, 11, 12, 13, 65, 65,
256 65, 65, 65, 65, 65, 20, 21, 65,
257 22, 23, 24, 65, 65, 65, 65, 10,
258 29, 30, 31, 66, 65, 10, 11, 12,
259 13, 65, 65, 65, 65, 65, 65, 65,
260 65, 21, 65, 22, 23, 24, 65, 65,
261 65, 65, 10, 29, 30, 31, 66, 65,
262 9, 10, 11, 12, 13, 65, 15, 9,
263 65, 65, 65, 19, 20, 21, 65, 22,
264 23, 24, 65, 65, 65, 65, 10, 29,
265 30, 31, 66, 65, 9, 10, 11, 12,
266 13, 65, 65, 9, 65, 65, 65, 19,
267 20, 21, 65, 22, 23, 24, 65, 65,
268 65, 65, 10, 29, 30, 31, 66, 65,
269 9, 10, 11, 12, 13, 14, 15, 9,
270 65, 65, 65, 19, 20, 21, 65, 22,
271 23, 24, 65, 65, 65, 65, 10, 29,
272 30, 31, 66, 65, 5, 6, 65, 65,
273 65, 65, 65, 65, 65, 65, 65, 9,
274 10, 11, 12, 13, 14, 15, 9, 16,
275 65, 18, 19, 20, 21, 65, 22, 23,
276 24, 65, 65, 65, 65, 28, 29, 30,
277 31, 6, 65, 5, 65, 65, 65, 65,
278 65, 65, 65, 65, 65, 65, 65, 65,
279 65, 65, 65, 65, 65, 65, 65, 65,
280 65, 10, 11, 12, 13, 65, 65, 65,
281 65, 65, 65, 65, 65, 65, 65, 22,
282 23, 24, 65, 65, 65, 65, 65, 29,
283 30, 31, 66, 65, 68, 65, 7, 65,
284 1, 65, 65, 65, 1, 65, 65, 65,
285 65, 65, 5, 6, 7, 65, 65, 65,
286 65, 65, 65, 65, 65, 9, 10, 11,
287 12, 13, 14, 15, 9, 16, 17, 18,
288 19, 20, 21, 65, 22, 23, 24, 65,
289 25, 26, 65, 28, 29, 30, 31, 6,
290 65, 5, 6, 65, 65, 65, 65, 65,
291 65, 65, 65, 65, 9, 10, 11, 12,
292 13, 14, 15, 9, 16, 17, 18, 19,
293 20, 21, 65, 22, 23, 24, 65, 65,
294 65, 65, 28, 29, 30, 31, 6, 65,
295 25, 26, 65, 26, 65, 1, 69, 69,
296 69, 1, 69, 71, 70, 32, 70, 32,
297 71, 70, 71, 70, 32, 70, 33, 70,
301 static const char _use_syllable_machine_trans_targs[] = {
302 1, 3, 0, 26, 28, 29, 30, 51,
303 53, 31, 32, 33, 34, 35, 46, 47,
304 48, 54, 49, 43, 44, 45, 38, 39,
305 40, 55, 56, 57, 50, 36, 37, 0,
306 58, 60, 0, 2, 0, 4, 5, 6,
307 7, 8, 9, 10, 21, 22, 23, 24,
308 18, 19, 20, 13, 14, 15, 25, 11,
309 12, 0, 0, 16, 0, 17, 0, 27,
310 0, 0, 41, 42, 52, 0, 0, 59
313 static const char _use_syllable_machine_trans_actions[] = {
314 0, 0, 3, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, 0, 4,
318 0, 0, 5, 0, 6, 0, 0, 0,
319 0, 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 0, 0,
321 0, 7, 8, 0, 9, 0, 10, 0,
322 11, 12, 0, 0, 0, 13, 14, 0
325 static const char _use_syllable_machine_to_state_actions[] = {
326 1, 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, 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,
336 static const char _use_syllable_machine_from_state_actions[] = {
337 2, 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, 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,
347 static const short _use_syllable_machine_eof_trans[] = {
348 0, 35, 35, 37, 37, 59, 37, 37,
349 37, 37, 37, 37, 37, 37, 37, 37,
350 61, 37, 37, 37, 37, 37, 37, 37,
351 37, 59, 63, 65, 37, 66, 66, 66,
352 66, 66, 66, 66, 66, 66, 66, 66,
353 66, 66, 66, 66, 66, 66, 66, 66,
354 66, 66, 66, 66, 66, 66, 66, 66,
358 static const int use_syllable_machine_start = 0;
359 static const int use_syllable_machine_first_final = 0;
360 static const int use_syllable_machine_error = -1;
362 static const int use_syllable_machine_en_main = 0;
365 #line 58 "hb-ot-shape-complex-use-machine.rl"
369 #line 179 "hb-ot-shape-complex-use-machine.rl"
372 #define found_syllable(syllable_type) \
374 if (0) fprintf (stderr, "syllable %d..%d %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
375 for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
376 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
378 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
382 template <typename Iter>
383 struct machine_index_t :
384 hb_iter_with_fallback_t<machine_index_t<Iter>,
385 typename Iter::item_t>
387 machine_index_t (const Iter& it) : it (it) {}
388 machine_index_t (const machine_index_t& o) : it (o.it) {}
390 static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
391 static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
393 typename Iter::item_t __item__ () const { return *it; }
394 typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
395 unsigned __len__ () const { return it.len (); }
396 void __next__ () { ++it; }
397 void __forward__ (unsigned n) { it += n; }
398 void __prev__ () { --it; }
399 void __rewind__ (unsigned n) { it -= n; }
400 void operator = (unsigned n)
401 { unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index - n; }
402 void operator = (const machine_index_t& o) { *this = (*o.it).first; }
403 bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
404 bool operator != (const machine_index_t& o) const { return !(*this == o); }
411 template <typename Iter,
412 hb_requires (hb_is_iterable (Iter))>
413 machine_index_t<hb_iter_type<Iter>>
414 operator () (Iter&& it) const
415 { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
417 HB_FUNCOBJ (machine_index);
422 not_ccs_default_ignorable (const hb_glyph_info_t &i)
423 { return !(i.use_category() == USE(CGJ) && _hb_glyph_info_is_default_ignorable (&i)); }
426 find_syllables_use (hb_buffer_t *buffer)
428 hb_glyph_info_t *info = buffer->info;
430 + hb_iter (info, buffer->len)
432 | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
434 | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
436 if (p.second.use_category() == USE(ZWNJ))
437 for (unsigned i = p.first + 1; i < buffer->len; ++i)
438 if (not_ccs_default_ignorable (info[i]))
439 return !_hb_glyph_info_is_unicode_mark (&info[i]);
445 auto pe = p + p.len ();
449 unsigned int act HB_UNUSED;
452 #line 453 "hb-ot-shape-complex-use-machine.hh"
454 cs = use_syllable_machine_start;
460 #line 263 "hb-ot-shape-complex-use-machine.rl"
463 unsigned int syllable_serial = 1;
465 #line 466 "hb-ot-shape-complex-use-machine.hh"
469 const unsigned char *_keys;
474 switch ( _use_syllable_machine_from_state_actions[cs] ) {
479 #line 480 "hb-ot-shape-complex-use-machine.hh"
482 _keys = _use_syllable_machine_trans_keys + (cs<<1);
483 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
485 _slen = _use_syllable_machine_key_spans[cs];
486 _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
487 ( (*p).second.second.use_category()) <= _keys[1] ?
488 ( (*p).second.second.use_category()) - _keys[0] : _slen ];
491 cs = _use_syllable_machine_trans_targs[_trans];
493 if ( _use_syllable_machine_trans_actions[_trans] == 0 )
496 switch ( _use_syllable_machine_trans_actions[_trans] ) {
498 #line 169 "hb-ot-shape-complex-use-machine.rl"
499 {te = p+1;{ found_syllable (use_standard_cluster); }}
502 #line 174 "hb-ot-shape-complex-use-machine.rl"
503 {te = p+1;{ found_syllable (use_broken_cluster); }}
506 #line 175 "hb-ot-shape-complex-use-machine.rl"
507 {te = p+1;{ found_syllable (use_non_cluster); }}
510 #line 167 "hb-ot-shape-complex-use-machine.rl"
511 {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
514 #line 168 "hb-ot-shape-complex-use-machine.rl"
515 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
518 #line 169 "hb-ot-shape-complex-use-machine.rl"
519 {te = p;p--;{ found_syllable (use_standard_cluster); }}
522 #line 170 "hb-ot-shape-complex-use-machine.rl"
523 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
526 #line 171 "hb-ot-shape-complex-use-machine.rl"
527 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
530 #line 172 "hb-ot-shape-complex-use-machine.rl"
531 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
534 #line 173 "hb-ot-shape-complex-use-machine.rl"
535 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
538 #line 174 "hb-ot-shape-complex-use-machine.rl"
539 {te = p;p--;{ found_syllable (use_broken_cluster); }}
542 #line 175 "hb-ot-shape-complex-use-machine.rl"
543 {te = p;p--;{ found_syllable (use_non_cluster); }}
545 #line 546 "hb-ot-shape-complex-use-machine.hh"
549 switch ( _use_syllable_machine_to_state_actions[cs] ) {
554 #line 555 "hb-ot-shape-complex-use-machine.hh"
562 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
563 _trans = _use_syllable_machine_eof_trans[cs] - 1;
570 #line 268 "hb-ot-shape-complex-use-machine.rl"
574 #undef found_syllable
576 #endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */