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