1#line 1 "hb-ot-shaper-use-machine.rl"
2/*
3* Copyright © 2015 Mozilla Foundation.
4* Copyright © 2015 Google, Inc.
5*
6* This is part of HarfBuzz, a text shaping library.
7*
8* Permission is hereby granted, without written agreement and without
9* license or royalty fees, to use, copy, modify, and distribute this
10* software and its documentation for any purpose, provided that the
11* above copyright notice and the following two paragraphs appear in
12* all copies of this software.
13*
14* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18* DAMAGE.
19*
20* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
23* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25*
26* Mozilla Author(s): Jonathan Kew
27* Google Author(s): Behdad Esfahbod
28*/
29
30#ifndef HB_OT_SHAPER_USE_MACHINE_HH
31#define HB_OT_SHAPER_USE_MACHINE_HH
32
33#include "hb.hh"
34
35#include "hb-ot-shaper-syllabic.hh"
36
37/* buffer var allocations */
38#define use_category() ot_shaper_var_u8_category()
39
40#define USE(Cat) use_syllable_machine_ex_##Cat
41
42enum use_syllable_type_t {
43 use_virama_terminated_cluster,
44 use_sakot_terminated_cluster,
45 use_standard_cluster,
46 use_number_joiner_terminated_cluster,
47 use_numeral_cluster,
48 use_symbol_cluster,
49 use_hieroglyph_cluster,
50 use_broken_cluster,
51 use_non_cluster,
52};
53
54
55#line 54 "hb-ot-shaper-use-machine.hh"
56#define use_syllable_machine_ex_B 1u
57#define use_syllable_machine_ex_CGJ 6u
58#define use_syllable_machine_ex_CMAbv 31u
59#define use_syllable_machine_ex_CMBlw 32u
60#define use_syllable_machine_ex_CS 43u
61#define use_syllable_machine_ex_FAbv 24u
62#define use_syllable_machine_ex_FBlw 25u
63#define use_syllable_machine_ex_FMAbv 45u
64#define use_syllable_machine_ex_FMBlw 46u
65#define use_syllable_machine_ex_FMPst 47u
66#define use_syllable_machine_ex_FPst 26u
67#define use_syllable_machine_ex_G 49u
68#define use_syllable_machine_ex_GB 5u
69#define use_syllable_machine_ex_H 12u
70#define use_syllable_machine_ex_HN 13u
71#define use_syllable_machine_ex_HVM 53u
72#define use_syllable_machine_ex_IS 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_WJ 16u
96#define use_syllable_machine_ex_ZWNJ 14u
97
98
99#line 96 "hb-ot-shaper-use-machine.hh"
100static const unsigned char _use_syllable_machine_trans_keys[] = {
101 0u, 39u, 5u, 39u, 5u, 39u, 1u, 39u,
102 8u, 34u, 8u, 33u, 8u, 33u, 8u, 33u,
103 8u, 32u, 8u, 32u, 8u, 8u, 8u, 34u,
104 8u, 34u, 8u, 34u, 1u, 8u, 8u, 34u,
105 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
106 6u, 39u, 8u, 39u, 6u, 39u, 6u, 39u,
107 6u, 39u, 5u, 39u, 1u, 8u, 1u, 34u,
108 8u, 28u, 8u, 28u, 5u, 39u, 1u, 39u,
109 8u, 34u, 8u, 33u, 8u, 33u, 8u, 33u,
110 8u, 32u, 8u, 32u, 8u, 8u, 8u, 34u,
111 8u, 34u, 8u, 34u, 1u, 8u, 8u, 34u,
112 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
113 6u, 39u, 8u, 39u, 6u, 39u, 6u, 39u,
114 6u, 39u, 5u, 39u, 1u, 8u, 1u, 8u,
115 1u, 34u, 7u, 8u, 3u, 8u, 5u, 39u,
116 5u, 39u, 1u, 39u, 8u, 34u, 8u, 33u,
117 8u, 33u, 8u, 33u, 8u, 32u, 8u, 32u,
118 8u, 8u, 8u, 34u, 8u, 34u, 8u, 34u,
119 1u, 8u, 8u, 34u, 8u, 39u, 8u, 39u,
120 8u, 39u, 8u, 39u, 6u, 39u, 8u, 39u,
121 6u, 39u, 6u, 39u, 6u, 39u, 5u, 39u,
122 1u, 8u, 1u, 8u, 1u, 34u, 5u, 39u,
123 1u, 39u, 8u, 34u, 8u, 33u, 8u, 33u,
124 8u, 33u, 8u, 32u, 8u, 32u, 8u, 8u,
125 8u, 34u, 8u, 34u, 8u, 34u, 1u, 8u,
126 8u, 34u, 8u, 39u, 8u, 39u, 8u, 39u,
127 8u, 39u, 6u, 39u, 8u, 39u, 6u, 39u,
128 6u, 39u, 6u, 39u, 5u, 39u, 1u, 8u,
129 1u, 34u, 3u, 8u, 7u, 8u, 1u, 39u,
130 8u, 28u, 8u, 28u, 1u, 4u, 8u, 38u,
131 8u, 38u, 8u, 37u, 0u
132};
133
134static const signed char _use_syllable_machine_char_class[] = {
135 0, 1, 2, 2, 3, 4, 2, 2,
136 2, 2, 2, 5, 6, 7, 8, 2,
137 2, 2, 9, 2, 2, 2, 10, 11,
138 12, 13, 14, 15, 16, 17, 18, 19,
139 20, 21, 22, 23, 2, 24, 25, 26,
140 2, 27, 28, 29, 30, 31, 32, 33,
141 34, 35, 36, 37, 38, 39, 0
142};
143
144static const short _use_syllable_machine_index_offsets[] = {
145 0, 40, 75, 110, 149, 176, 202, 228,
146 254, 279, 304, 305, 332, 359, 386, 394,
147 421, 453, 485, 517, 549, 583, 615, 649,
148 683, 717, 752, 760, 794, 815, 836, 871,
149 910, 937, 963, 989, 1015, 1040, 1065, 1066,
150 1093, 1120, 1147, 1155, 1182, 1214, 1246, 1278,
151 1310, 1344, 1376, 1410, 1444, 1478, 1513, 1521,
152 1529, 1563, 1565, 1571, 1606, 1641, 1680, 1707,
153 1733, 1759, 1785, 1810, 1835, 1836, 1863, 1890,
154 1917, 1925, 1952, 1984, 2016, 2048, 2080, 2114,
155 2146, 2180, 2214, 2248, 2283, 2291, 2299, 2333,
156 2368, 2407, 2434, 2460, 2486, 2512, 2537, 2562,
157 2563, 2590, 2617, 2644, 2652, 2679, 2711, 2743,
158 2775, 2807, 2841, 2873, 2907, 2941, 2975, 3010,
159 3018, 3052, 3058, 3060, 3099, 3120, 3141, 3145,
160 3176, 3207, 0
161};
162
163static const short _use_syllable_machine_indicies[] = {
164 1, 2, 3, 4, 5, 6, 7, 8,
165 9, 10, 11, 12, 13, 14, 15, 16,
166 17, 18, 19, 6, 20, 21, 22, 23,
167 24, 25, 26, 27, 28, 29, 30, 31,
168 32, 33, 30, 34, 3, 35, 3, 36,
169 38, 39, 37, 40, 37, 41, 42, 43,
170 44, 45, 46, 47, 48, 49, 38, 50,
171 51, 52, 53, 54, 55, 56, 57, 58,
172 37, 59, 60, 61, 62, 59, 37, 37,
173 37, 37, 63, 38, 39, 37, 40, 37,
174 41, 42, 43, 44, 45, 46, 47, 48,
175 49, 38, 50, 51, 52, 53, 54, 55,
176 56, 37, 37, 37, 59, 60, 61, 62,
177 59, 37, 37, 37, 37, 63, 38, 37,
178 37, 37, 37, 37, 37, 40, 37, 37,
179 42, 43, 44, 45, 37, 37, 37, 37,
180 37, 37, 37, 37, 37, 54, 55, 56,
181 37, 37, 37, 37, 60, 61, 62, 64,
182 37, 37, 37, 37, 42, 40, 37, 37,
183 42, 43, 44, 45, 37, 37, 37, 37,
184 37, 37, 37, 37, 37, 54, 55, 56,
185 37, 37, 37, 37, 60, 61, 62, 64,
186 40, 37, 37, 37, 43, 44, 45, 37,
187 37, 37, 37, 37, 37, 37, 37, 37,
188 37, 37, 37, 37, 37, 37, 37, 60,
189 61, 62, 40, 37, 37, 37, 37, 44,
190 45, 37, 37, 37, 37, 37, 37, 37,
191 37, 37, 37, 37, 37, 37, 37, 37,
192 37, 60, 61, 62, 40, 37, 37, 37,
193 37, 37, 45, 37, 37, 37, 37, 37,
194 37, 37, 37, 37, 37, 37, 37, 37,
195 37, 37, 37, 60, 61, 62, 40, 37,
196 37, 37, 37, 37, 37, 37, 37, 37,
197 37, 37, 37, 37, 37, 37, 37, 37,
198 37, 37, 37, 37, 37, 60, 61, 40,
199 37, 37, 37, 37, 37, 37, 37, 37,
200 37, 37, 37, 37, 37, 37, 37, 37,
201 37, 37, 37, 37, 37, 37, 37, 61,
202 40, 40, 37, 37, 37, 43, 44, 45,
203 37, 37, 37, 37, 37, 37, 37, 37,
204 37, 54, 55, 56, 37, 37, 37, 37,
205 60, 61, 62, 64, 40, 37, 37, 37,
206 43, 44, 45, 37, 37, 37, 37, 37,
207 37, 37, 37, 37, 37, 55, 56, 37,
208 37, 37, 37, 60, 61, 62, 64, 40,
209 37, 37, 37, 43, 44, 45, 37, 37,
210 37, 37, 37, 37, 37, 37, 37, 37,
211 37, 56, 37, 37, 37, 37, 60, 61,
212 62, 64, 65, 37, 37, 37, 37, 37,
213 37, 40, 40, 37, 37, 37, 43, 44,
214 45, 37, 37, 37, 37, 37, 37, 37,
215 37, 37, 37, 37, 37, 37, 37, 37,
216 37, 60, 61, 62, 64, 40, 37, 41,
217 42, 43, 44, 45, 37, 37, 37, 37,
218 37, 37, 51, 52, 53, 54, 55, 56,
219 37, 37, 37, 37, 60, 61, 62, 64,
220 37, 37, 37, 37, 42, 40, 37, 37,
221 42, 43, 44, 45, 37, 37, 37, 37,
222 37, 37, 51, 52, 53, 54, 55, 56,
223 37, 37, 37, 37, 60, 61, 62, 64,
224 37, 37, 37, 37, 42, 40, 37, 37,
225 42, 43, 44, 45, 37, 37, 37, 37,
226 37, 37, 37, 52, 53, 54, 55, 56,
227 37, 37, 37, 37, 60, 61, 62, 64,
228 37, 37, 37, 37, 42, 40, 37, 37,
229 42, 43, 44, 45, 37, 37, 37, 37,
230 37, 37, 37, 37, 53, 54, 55, 56,
231 37, 37, 37, 37, 60, 61, 62, 64,
232 37, 37, 37, 37, 42, 66, 37, 40,
233 37, 41, 42, 43, 44, 45, 37, 47,
234 48, 37, 37, 37, 51, 52, 53, 54,
235 55, 56, 37, 37, 37, 37, 60, 61,
236 62, 64, 37, 37, 37, 37, 42, 40,
237 37, 37, 42, 43, 44, 45, 37, 37,
238 37, 37, 37, 37, 37, 37, 37, 54,
239 55, 56, 37, 37, 37, 37, 60, 61,
240 62, 64, 37, 37, 37, 37, 42, 66,
241 37, 40, 37, 41, 42, 43, 44, 45,
242 37, 37, 48, 37, 37, 37, 51, 52,
243 53, 54, 55, 56, 37, 37, 37, 37,
244 60, 61, 62, 64, 37, 37, 37, 37,
245 42, 66, 37, 40, 37, 41, 42, 43,
246 44, 45, 37, 37, 37, 37, 37, 37,
247 51, 52, 53, 54, 55, 56, 37, 37,
248 37, 37, 60, 61, 62, 64, 37, 37,
249 37, 37, 42, 66, 37, 40, 37, 41,
250 42, 43, 44, 45, 46, 47, 48, 37,
251 37, 37, 51, 52, 53, 54, 55, 56,
252 37, 37, 37, 37, 60, 61, 62, 64,
253 37, 37, 37, 37, 42, 38, 39, 37,
254 40, 37, 41, 42, 43, 44, 45, 46,
255 47, 48, 49, 37, 50, 51, 52, 53,
256 54, 55, 56, 37, 37, 37, 59, 60,
257 61, 62, 59, 37, 37, 37, 37, 63,
258 38, 37, 37, 37, 37, 37, 37, 40,
259 38, 37, 37, 37, 37, 37, 37, 40,
260 37, 37, 42, 43, 44, 45, 37, 37,
261 37, 37, 37, 37, 37, 37, 37, 54,
262 55, 56, 37, 37, 37, 37, 60, 61,
263 62, 64, 40, 37, 37, 37, 37, 37,
264 37, 37, 37, 37, 37, 37, 37, 37,
265 37, 37, 37, 37, 37, 57, 58, 40,
266 37, 37, 37, 37, 37, 37, 37, 37,
267 37, 37, 37, 37, 37, 37, 37, 37,
268 37, 37, 37, 58, 2, 68, 67, 69,
269 67, 70, 71, 72, 73, 74, 75, 76,
270 77, 78, 2, 79, 80, 81, 82, 83,
271 84, 85, 67, 67, 67, 86, 87, 88,
272 89, 90, 67, 67, 67, 67, 91, 2,
273 67, 67, 67, 67, 67, 67, 69, 67,
274 67, 71, 72, 73, 74, 67, 67, 67,
275 67, 67, 67, 67, 67, 67, 83, 84,
276 85, 67, 67, 67, 67, 87, 88, 89,
277 92, 67, 67, 67, 67, 71, 69, 67,
278 67, 71, 72, 73, 74, 67, 67, 67,
279 67, 67, 67, 67, 67, 67, 83, 84,
280 85, 67, 67, 67, 67, 87, 88, 89,
281 92, 69, 67, 67, 67, 72, 73, 74,
282 67, 67, 67, 67, 67, 67, 67, 67,
283 67, 67, 67, 67, 67, 67, 67, 67,
284 87, 88, 89, 69, 67, 67, 67, 67,
285 73, 74, 67, 67, 67, 67, 67, 67,
286 67, 67, 67, 67, 67, 67, 67, 67,
287 67, 67, 87, 88, 89, 69, 67, 67,
288 67, 67, 67, 74, 67, 67, 67, 67,
289 67, 67, 67, 67, 67, 67, 67, 67,
290 67, 67, 67, 67, 87, 88, 89, 69,
291 67, 67, 67, 67, 67, 67, 67, 67,
292 67, 67, 67, 67, 67, 67, 67, 67,
293 67, 67, 67, 67, 67, 67, 87, 88,
294 69, 67, 67, 67, 67, 67, 67, 67,
295 67, 67, 67, 67, 67, 67, 67, 67,
296 67, 67, 67, 67, 67, 67, 67, 67,
297 88, 69, 69, 67, 67, 67, 72, 73,
298 74, 67, 67, 67, 67, 67, 67, 67,
299 67, 67, 83, 84, 85, 67, 67, 67,
300 67, 87, 88, 89, 92, 69, 67, 67,
301 67, 72, 73, 74, 67, 67, 67, 67,
302 67, 67, 67, 67, 67, 67, 84, 85,
303 67, 67, 67, 67, 87, 88, 89, 92,
304 69, 67, 67, 67, 72, 73, 74, 67,
305 67, 67, 67, 67, 67, 67, 67, 67,
306 67, 67, 85, 67, 67, 67, 67, 87,
307 88, 89, 92, 94, 93, 93, 93, 93,
308 93, 93, 95, 69, 67, 67, 67, 72,
309 73, 74, 67, 67, 67, 67, 67, 67,
310 67, 67, 67, 67, 67, 67, 67, 67,
311 67, 67, 87, 88, 89, 92, 69, 67,
312 70, 71, 72, 73, 74, 67, 67, 67,
313 67, 67, 67, 80, 81, 82, 83, 84,
314 85, 67, 67, 67, 67, 87, 88, 89,
315 92, 67, 67, 67, 67, 71, 69, 67,
316 67, 71, 72, 73, 74, 67, 67, 67,
317 67, 67, 67, 80, 81, 82, 83, 84,
318 85, 67, 67, 67, 67, 87, 88, 89,
319 92, 67, 67, 67, 67, 71, 69, 67,
320 67, 71, 72, 73, 74, 67, 67, 67,
321 67, 67, 67, 67, 81, 82, 83, 84,
322 85, 67, 67, 67, 67, 87, 88, 89,
323 92, 67, 67, 67, 67, 71, 69, 67,
324 67, 71, 72, 73, 74, 67, 67, 67,
325 67, 67, 67, 67, 67, 82, 83, 84,
326 85, 67, 67, 67, 67, 87, 88, 89,
327 92, 67, 67, 67, 67, 71, 96, 67,
328 69, 67, 70, 71, 72, 73, 74, 67,
329 76, 77, 67, 67, 67, 80, 81, 82,
330 83, 84, 85, 67, 67, 67, 67, 87,
331 88, 89, 92, 67, 67, 67, 67, 71,
332 69, 67, 67, 71, 72, 73, 74, 67,
333 67, 67, 67, 67, 67, 67, 67, 67,
334 83, 84, 85, 67, 67, 67, 67, 87,
335 88, 89, 92, 67, 67, 67, 67, 71,
336 96, 67, 69, 67, 70, 71, 72, 73,
337 74, 67, 67, 77, 67, 67, 67, 80,
338 81, 82, 83, 84, 85, 67, 67, 67,
339 67, 87, 88, 89, 92, 67, 67, 67,
340 67, 71, 96, 67, 69, 67, 70, 71,
341 72, 73, 74, 67, 67, 67, 67, 67,
342 67, 80, 81, 82, 83, 84, 85, 67,
343 67, 67, 67, 87, 88, 89, 92, 67,
344 67, 67, 67, 71, 96, 67, 69, 67,
345 70, 71, 72, 73, 74, 75, 76, 77,
346 67, 67, 67, 80, 81, 82, 83, 84,
347 85, 67, 67, 67, 67, 87, 88, 89,
348 92, 67, 67, 67, 67, 71, 2, 68,
349 67, 69, 67, 70, 71, 72, 73, 74,
350 75, 76, 77, 78, 67, 79, 80, 81,
351 82, 83, 84, 85, 67, 67, 67, 86,
352 87, 88, 89, 90, 67, 67, 67, 67,
353 91, 2, 97, 97, 97, 97, 97, 97,
354 98, 2, 93, 93, 93, 93, 93, 93,
355 95, 2, 67, 67, 67, 67, 67, 67,
356 69, 67, 67, 71, 72, 73, 74, 67,
357 67, 67, 67, 67, 67, 67, 67, 67,
358 83, 84, 85, 67, 67, 67, 67, 87,
359 88, 89, 92, 100, 101, 4, 102, 102,
360 102, 102, 103, 104, 105, 67, 69, 67,
361 106, 107, 108, 109, 110, 111, 112, 113,
362 114, 104, 115, 116, 117, 118, 119, 120,
363 121, 57, 58, 67, 122, 123, 124, 125,
364 126, 67, 67, 67, 67, 127, 104, 105,
365 67, 69, 67, 106, 107, 108, 109, 110,
366 111, 112, 113, 114, 104, 115, 116, 117,
367 118, 119, 120, 121, 67, 67, 67, 122,
368 123, 124, 125, 126, 67, 67, 67, 67,
369 127, 104, 67, 67, 67, 67, 67, 67,
370 69, 67, 67, 107, 108, 109, 110, 67,
371 67, 67, 67, 67, 67, 67, 67, 67,
372 119, 120, 121, 67, 67, 67, 67, 123,
373 124, 125, 128, 67, 67, 67, 67, 107,
374 69, 67, 67, 107, 108, 109, 110, 67,
375 67, 67, 67, 67, 67, 67, 67, 67,
376 119, 120, 121, 67, 67, 67, 67, 123,
377 124, 125, 128, 69, 67, 67, 67, 108,
378 109, 110, 67, 67, 67, 67, 67, 67,
379 67, 67, 67, 67, 67, 67, 67, 67,
380 67, 67, 123, 124, 125, 69, 67, 67,
381 67, 67, 109, 110, 67, 67, 67, 67,
382 67, 67, 67, 67, 67, 67, 67, 67,
383 67, 67, 67, 67, 123, 124, 125, 69,
384 67, 67, 67, 67, 67, 110, 67, 67,
385 67, 67, 67, 67, 67, 67, 67, 67,
386 67, 67, 67, 67, 67, 67, 123, 124,
387 125, 69, 67, 67, 67, 67, 67, 67,
388 67, 67, 67, 67, 67, 67, 67, 67,
389 67, 67, 67, 67, 67, 67, 67, 67,
390 123, 124, 69, 67, 67, 67, 67, 67,
391 67, 67, 67, 67, 67, 67, 67, 67,
392 67, 67, 67, 67, 67, 67, 67, 67,
393 67, 67, 124, 69, 69, 67, 67, 67,
394 108, 109, 110, 67, 67, 67, 67, 67,
395 67, 67, 67, 67, 119, 120, 121, 67,
396 67, 67, 67, 123, 124, 125, 128, 69,
397 67, 67, 67, 108, 109, 110, 67, 67,
398 67, 67, 67, 67, 67, 67, 67, 67,
399 120, 121, 67, 67, 67, 67, 123, 124,
400 125, 128, 69, 67, 67, 67, 108, 109,
401 110, 67, 67, 67, 67, 67, 67, 67,
402 67, 67, 67, 67, 121, 67, 67, 67,
403 67, 123, 124, 125, 128, 129, 93, 93,
404 93, 93, 93, 93, 95, 69, 67, 67,
405 67, 108, 109, 110, 67, 67, 67, 67,
406 67, 67, 67, 67, 67, 67, 67, 67,
407 67, 67, 67, 67, 123, 124, 125, 128,
408 69, 67, 106, 107, 108, 109, 110, 67,
409 67, 67, 67, 67, 67, 116, 117, 118,
410 119, 120, 121, 67, 67, 67, 67, 123,
411 124, 125, 128, 67, 67, 67, 67, 107,
412 69, 67, 67, 107, 108, 109, 110, 67,
413 67, 67, 67, 67, 67, 116, 117, 118,
414 119, 120, 121, 67, 67, 67, 67, 123,
415 124, 125, 128, 67, 67, 67, 67, 107,
416 69, 67, 67, 107, 108, 109, 110, 67,
417 67, 67, 67, 67, 67, 67, 117, 118,
418 119, 120, 121, 67, 67, 67, 67, 123,
419 124, 125, 128, 67, 67, 67, 67, 107,
420 69, 67, 67, 107, 108, 109, 110, 67,
421 67, 67, 67, 67, 67, 67, 67, 118,
422 119, 120, 121, 67, 67, 67, 67, 123,
423 124, 125, 128, 67, 67, 67, 67, 107,
424 130, 67, 69, 67, 106, 107, 108, 109,
425 110, 67, 112, 113, 67, 67, 67, 116,
426 117, 118, 119, 120, 121, 67, 67, 67,
427 67, 123, 124, 125, 128, 67, 67, 67,
428 67, 107, 69, 67, 67, 107, 108, 109,
429 110, 67, 67, 67, 67, 67, 67, 67,
430 67, 67, 119, 120, 121, 67, 67, 67,
431 67, 123, 124, 125, 128, 67, 67, 67,
432 67, 107, 130, 67, 69, 67, 106, 107,
433 108, 109, 110, 67, 67, 113, 67, 67,
434 67, 116, 117, 118, 119, 120, 121, 67,
435 67, 67, 67, 123, 124, 125, 128, 67,
436 67, 67, 67, 107, 130, 67, 69, 67,
437 106, 107, 108, 109, 110, 67, 67, 67,
438 67, 67, 67, 116, 117, 118, 119, 120,
439 121, 67, 67, 67, 67, 123, 124, 125,
440 128, 67, 67, 67, 67, 107, 130, 67,
441 69, 67, 106, 107, 108, 109, 110, 111,
442 112, 113, 67, 67, 67, 116, 117, 118,
443 119, 120, 121, 67, 67, 67, 67, 123,
444 124, 125, 128, 67, 67, 67, 67, 107,
445 104, 105, 67, 69, 67, 106, 107, 108,
446 109, 110, 111, 112, 113, 114, 67, 115,
447 116, 117, 118, 119, 120, 121, 67, 67,
448 67, 122, 123, 124, 125, 126, 67, 67,
449 67, 67, 127, 104, 97, 97, 97, 97,
450 97, 97, 98, 104, 93, 93, 93, 93,
451 93, 93, 95, 104, 67, 67, 67, 67,
452 67, 67, 69, 67, 67, 107, 108, 109,
453 110, 67, 67, 67, 67, 67, 67, 67,
454 67, 67, 119, 120, 121, 67, 67, 67,
455 67, 123, 124, 125, 128, 6, 7, 131,
456 9, 131, 11, 12, 13, 14, 15, 16,
457 17, 18, 19, 6, 20, 21, 22, 23,
458 24, 25, 26, 131, 131, 131, 30, 31,
459 32, 33, 30, 131, 131, 131, 131, 36,
460 6, 131, 131, 131, 131, 131, 131, 9,
461 131, 131, 12, 13, 14, 15, 131, 131,
462 131, 131, 131, 131, 131, 131, 131, 24,
463 25, 26, 131, 131, 131, 131, 31, 32,
464 33, 132, 131, 131, 131, 131, 12, 9,
465 131, 131, 12, 13, 14, 15, 131, 131,
466 131, 131, 131, 131, 131, 131, 131, 24,
467 25, 26, 131, 131, 131, 131, 31, 32,
468 33, 132, 9, 131, 131, 131, 13, 14,
469 15, 131, 131, 131, 131, 131, 131, 131,
470 131, 131, 131, 131, 131, 131, 131, 131,
471 131, 31, 32, 33, 9, 131, 131, 131,
472 131, 14, 15, 131, 131, 131, 131, 131,
473 131, 131, 131, 131, 131, 131, 131, 131,
474 131, 131, 131, 31, 32, 33, 9, 131,
475 131, 131, 131, 131, 15, 131, 131, 131,
476 131, 131, 131, 131, 131, 131, 131, 131,
477 131, 131, 131, 131, 131, 31, 32, 33,
478 9, 131, 131, 131, 131, 131, 131, 131,
479 131, 131, 131, 131, 131, 131, 131, 131,
480 131, 131, 131, 131, 131, 131, 131, 31,
481 32, 9, 131, 131, 131, 131, 131, 131,
482 131, 131, 131, 131, 131, 131, 131, 131,
483 131, 131, 131, 131, 131, 131, 131, 131,
484 131, 32, 9, 9, 131, 131, 131, 13,
485 14, 15, 131, 131, 131, 131, 131, 131,
486 131, 131, 131, 24, 25, 26, 131, 131,
487 131, 131, 31, 32, 33, 132, 9, 131,
488 131, 131, 13, 14, 15, 131, 131, 131,
489 131, 131, 131, 131, 131, 131, 131, 25,
490 26, 131, 131, 131, 131, 31, 32, 33,
491 132, 9, 131, 131, 131, 13, 14, 15,
492 131, 131, 131, 131, 131, 131, 131, 131,
493 131, 131, 131, 26, 131, 131, 131, 131,
494 31, 32, 33, 132, 133, 131, 131, 131,
495 131, 131, 131, 9, 9, 131, 131, 131,
496 13, 14, 15, 131, 131, 131, 131, 131,
497 131, 131, 131, 131, 131, 131, 131, 131,
498 131, 131, 131, 31, 32, 33, 132, 9,
499 131, 11, 12, 13, 14, 15, 131, 131,
500 131, 131, 131, 131, 21, 22, 23, 24,
501 25, 26, 131, 131, 131, 131, 31, 32,
502 33, 132, 131, 131, 131, 131, 12, 9,
503 131, 131, 12, 13, 14, 15, 131, 131,
504 131, 131, 131, 131, 21, 22, 23, 24,
505 25, 26, 131, 131, 131, 131, 31, 32,
506 33, 132, 131, 131, 131, 131, 12, 9,
507 131, 131, 12, 13, 14, 15, 131, 131,
508 131, 131, 131, 131, 131, 22, 23, 24,
509 25, 26, 131, 131, 131, 131, 31, 32,
510 33, 132, 131, 131, 131, 131, 12, 9,
511 131, 131, 12, 13, 14, 15, 131, 131,
512 131, 131, 131, 131, 131, 131, 23, 24,
513 25, 26, 131, 131, 131, 131, 31, 32,
514 33, 132, 131, 131, 131, 131, 12, 134,
515 131, 9, 131, 11, 12, 13, 14, 15,
516 131, 17, 18, 131, 131, 131, 21, 22,
517 23, 24, 25, 26, 131, 131, 131, 131,
518 31, 32, 33, 132, 131, 131, 131, 131,
519 12, 9, 131, 131, 12, 13, 14, 15,
520 131, 131, 131, 131, 131, 131, 131, 131,
521 131, 24, 25, 26, 131, 131, 131, 131,
522 31, 32, 33, 132, 131, 131, 131, 131,
523 12, 134, 131, 9, 131, 11, 12, 13,
524 14, 15, 131, 131, 18, 131, 131, 131,
525 21, 22, 23, 24, 25, 26, 131, 131,
526 131, 131, 31, 32, 33, 132, 131, 131,
527 131, 131, 12, 134, 131, 9, 131, 11,
528 12, 13, 14, 15, 131, 131, 131, 131,
529 131, 131, 21, 22, 23, 24, 25, 26,
530 131, 131, 131, 131, 31, 32, 33, 132,
531 131, 131, 131, 131, 12, 134, 131, 9,
532 131, 11, 12, 13, 14, 15, 16, 17,
533 18, 131, 131, 131, 21, 22, 23, 24,
534 25, 26, 131, 131, 131, 131, 31, 32,
535 33, 132, 131, 131, 131, 131, 12, 6,
536 7, 131, 9, 131, 11, 12, 13, 14,
537 15, 16, 17, 18, 19, 131, 20, 21,
538 22, 23, 24, 25, 26, 131, 131, 131,
539 30, 31, 32, 33, 30, 131, 131, 131,
540 131, 36, 6, 131, 131, 131, 131, 131,
541 131, 9, 6, 131, 131, 131, 131, 131,
542 131, 9, 131, 131, 12, 13, 14, 15,
543 131, 131, 131, 131, 131, 131, 131, 131,
544 131, 24, 25, 26, 131, 131, 131, 131,
545 31, 32, 33, 132, 135, 131, 131, 131,
546 131, 9, 8, 9, 2, 131, 131, 2,
547 6, 7, 8, 9, 131, 11, 12, 13,
548 14, 15, 16, 17, 18, 19, 6, 20,
549 21, 22, 23, 24, 25, 26, 27, 28,
550 131, 30, 31, 32, 33, 30, 131, 131,
551 131, 131, 36, 9, 131, 131, 131, 131,
552 131, 131, 131, 131, 131, 131, 131, 131,
553 131, 131, 131, 131, 131, 131, 27, 28,
554 9, 131, 131, 131, 131, 131, 131, 131,
555 131, 131, 131, 131, 131, 131, 131, 131,
556 131, 131, 131, 131, 28, 2, 136, 136,
557 2, 138, 137, 137, 137, 137, 137, 137,
558 137, 137, 137, 137, 137, 137, 137, 137,
559 137, 137, 137, 137, 137, 137, 137, 137,
560 137, 137, 137, 137, 137, 139, 137, 34,
561 138, 137, 137, 137, 137, 137, 137, 137,
562 137, 137, 137, 137, 137, 137, 137, 137,
563 137, 137, 137, 137, 137, 137, 137, 137,
564 137, 137, 137, 34, 139, 137, 139, 138,
565 137, 137, 137, 137, 137, 137, 137, 137,
566 137, 137, 137, 137, 137, 137, 137, 137,
567 137, 137, 137, 137, 137, 137, 137, 137,
568 137, 137, 34, 137, 35, 0
569};
570
571static const short _use_syllable_machine_index_defaults[] = {
572 3, 37, 37, 37, 37, 37, 37, 37,
573 37, 37, 37, 37, 37, 37, 37, 37,
574 37, 37, 37, 37, 37, 37, 37, 37,
575 37, 37, 37, 37, 37, 37, 67, 67,
576 67, 67, 67, 67, 67, 67, 67, 67,
577 67, 67, 93, 67, 67, 67, 67, 67,
578 67, 67, 67, 67, 67, 67, 97, 93,
579 67, 99, 102, 67, 67, 67, 67, 67,
580 67, 67, 67, 67, 67, 67, 67, 67,
581 93, 67, 67, 67, 67, 67, 67, 67,
582 67, 67, 67, 67, 97, 93, 67, 131,
583 131, 131, 131, 131, 131, 131, 131, 131,
584 131, 131, 131, 131, 131, 131, 131, 131,
585 131, 131, 131, 131, 131, 131, 131, 131,
586 131, 131, 131, 131, 131, 131, 136, 137,
587 137, 137, 0
588};
589
590static const signed char _use_syllable_machine_cond_targs[] = {
591 0, 1, 30, 0, 57, 59, 87, 88,
592 113, 0, 115, 101, 89, 90, 91, 92,
593 105, 107, 108, 109, 110, 102, 103, 104,
594 96, 97, 98, 116, 117, 118, 111, 93,
595 94, 95, 119, 121, 112, 0, 2, 3,
596 0, 16, 4, 5, 6, 7, 20, 22,
597 23, 24, 25, 17, 18, 19, 11, 12,
598 13, 28, 29, 26, 8, 9, 10, 27,
599 14, 15, 21, 0, 31, 0, 44, 32,
600 33, 34, 35, 48, 50, 51, 52, 53,
601 45, 46, 47, 39, 40, 41, 54, 36,
602 37, 38, 55, 56, 42, 0, 43, 0,
603 49, 0, 0, 0, 58, 0, 0, 0,
604 60, 61, 74, 62, 63, 64, 65, 78,
605 80, 81, 82, 83, 75, 76, 77, 69,
606 70, 71, 84, 66, 67, 68, 85, 86,
607 72, 73, 79, 0, 99, 100, 106, 114,
608 0, 0, 0, 120, 0
609};
610
611static const signed char _use_syllable_machine_cond_actions[] = {
612 0, 0, 0, 3, 0, 0, 0, 0,
613 0, 4, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 0, 0, 0,
615 0, 0, 0, 0, 0, 0, 0, 0,
616 0, 0, 0, 0, 0, 5, 0, 0,
617 6, 0, 0, 0, 0, 0, 0, 0,
618 0, 0, 0, 0, 0, 0, 0, 0,
619 0, 0, 0, 0, 0, 0, 0, 0,
620 0, 0, 0, 7, 0, 8, 0, 0,
621 0, 0, 0, 0, 0, 0, 0, 0,
622 0, 0, 0, 0, 0, 0, 0, 0,
623 0, 0, 0, 0, 0, 9, 0, 10,
624 0, 11, 12, 13, 0, 14, 15, 16,
625 0, 0, 0, 0, 0, 0, 0, 0,
626 0, 0, 0, 0, 0, 0, 0, 0,
627 0, 0, 0, 0, 0, 0, 0, 0,
628 0, 0, 0, 17, 0, 0, 0, 0,
629 18, 19, 20, 0, 0
630};
631
632static const signed char _use_syllable_machine_to_state_actions[] = {
633 1, 0, 0, 0, 0, 0, 0, 0,
634 0, 0, 0, 0, 0, 0, 0, 0,
635 0, 0, 0, 0, 0, 0, 0, 0,
636 0, 0, 0, 0, 0, 0, 0, 0,
637 0, 0, 0, 0, 0, 0, 0, 0,
638 0, 0, 0, 0, 0, 0, 0, 0,
639 0, 0, 0, 0, 0, 0, 0, 0,
640 0, 0, 0, 0, 0, 0, 0, 0,
641 0, 0, 0, 0, 0, 0, 0, 0,
642 0, 0, 0, 0, 0, 0, 0, 0,
643 0, 0, 0, 0, 0, 0, 0, 0,
644 0, 0, 0, 0, 0, 0, 0, 0,
645 0, 0, 0, 0, 0, 0, 0, 0,
646 0, 0, 0, 0, 0, 0, 0, 0,
647 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 0
649};
650
651static const signed char _use_syllable_machine_from_state_actions[] = {
652 2, 0, 0, 0, 0, 0, 0, 0,
653 0, 0, 0, 0, 0, 0, 0, 0,
654 0, 0, 0, 0, 0, 0, 0, 0,
655 0, 0, 0, 0, 0, 0, 0, 0,
656 0, 0, 0, 0, 0, 0, 0, 0,
657 0, 0, 0, 0, 0, 0, 0, 0,
658 0, 0, 0, 0, 0, 0, 0, 0,
659 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0, 0,
665 0, 0, 0, 0, 0, 0, 0, 0,
666 0, 0, 0, 0, 0, 0, 0, 0,
667 0, 0, 0
668};
669
670static const short _use_syllable_machine_eof_trans[] = {
671 1, 38, 38, 38, 38, 38, 38, 38,
672 38, 38, 38, 38, 38, 38, 38, 38,
673 38, 38, 38, 38, 38, 38, 38, 38,
674 38, 38, 38, 38, 38, 38, 68, 68,
675 68, 68, 68, 68, 68, 68, 68, 68,
676 68, 68, 94, 68, 68, 68, 68, 68,
677 68, 68, 68, 68, 68, 68, 98, 94,
678 68, 100, 103, 68, 68, 68, 68, 68,
679 68, 68, 68, 68, 68, 68, 68, 68,
680 94, 68, 68, 68, 68, 68, 68, 68,
681 68, 68, 68, 68, 98, 94, 68, 132,
682 132, 132, 132, 132, 132, 132, 132, 132,
683 132, 132, 132, 132, 132, 132, 132, 132,
684 132, 132, 132, 132, 132, 132, 132, 132,
685 132, 132, 132, 132, 132, 132, 137, 138,
686 138, 138, 0
687};
688
689static const int use_syllable_machine_start = 0;
690static const int use_syllable_machine_first_final = 0;
691static const int use_syllable_machine_error = -1;
692
693static const int use_syllable_machine_en_main = 0;
694
695
696#line 58 "hb-ot-shaper-use-machine.rl"
697
698
699
700#line 182 "hb-ot-shaper-use-machine.rl"
701
702
703#define found_syllable(syllable_type) \
704HB_STMT_START { \
705 if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
706 for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
707 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
708 syllable_serial++; \
709 if (syllable_serial == 16) syllable_serial = 1; \
710 } HB_STMT_END
711
712
713template <typename Iter>
714struct machine_index_t :
715hb_iter_with_fallback_t<machine_index_t<Iter>,
716typename Iter::item_t>
717{
718 machine_index_t (const Iter& it) : it (it) {}
719 machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
720 typename Iter::item_t> (),
721 it (o.it), is_null (o.is_null) {}
722
723 static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
724 static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
725
726 typename Iter::item_t __item__ () const { return *it; }
727 typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
728 unsigned __len__ () const { return it.len (); }
729 void __next__ () { ++it; }
730 void __forward__ (unsigned n) { it += n; }
731 void __prev__ () { --it; }
732 void __rewind__ (unsigned n) { it -= n; }
733
734 void operator = (unsigned n)
735 {
736 assert (n == 0);
737 is_null = true;
738 }
739 explicit operator bool () { return !is_null; }
740
741 void operator = (const machine_index_t& o)
742 {
743 is_null = o.is_null;
744 unsigned index = (*it).first;
745 unsigned n = (*o.it).first;
746 if (index < n) it += n - index; else if (index > n) it -= index - n;
747 }
748 bool operator == (const machine_index_t& o) const
749 { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
750 bool operator != (const machine_index_t& o) const { return !(*this == o); }
751
752 private:
753 Iter it;
754 bool is_null = false;
755};
756struct
757{
758 template <typename Iter,
759 hb_requires (hb_is_iterable (Iter))>
760 machine_index_t<hb_iter_type<Iter>>
761 operator () (Iter&& it) const
762 { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
763}
764HB_FUNCOBJ (machine_index);
765
766
767
768static bool
769not_ccs_default_ignorable (const hb_glyph_info_t &i)
770{ return i.use_category() != USE(CGJ); }
771
772static inline void
773find_syllables_use (hb_buffer_t *buffer)
774{
775 hb_glyph_info_t *info = buffer->info;
776 auto p =
777 + hb_iter (info, buffer->len)
778 | hb_enumerate
779 | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
780 hb_second)
781 | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
782 {
783 if (p.second.use_category() == USE(ZWNJ))
784 for (unsigned i = p.first + 1; i < buffer->len; ++i)
785 if (not_ccs_default_ignorable (info[i]))
786 return !_hb_glyph_info_is_unicode_mark (&info[i]);
787 return true;
788 })
789 | hb_enumerate
790 | machine_index
791 ;
792 auto pe = p + p.len ();
793 auto eof = +pe;
794 auto ts = +p;
795 auto te = +p;
796 unsigned int act HB_UNUSED;
797 int cs;
798
799#line 792 "hb-ot-shaper-use-machine.hh"
800 {
801 cs = (int)use_syllable_machine_start;
802 ts = 0;
803 te = 0;
804 }
805
806#line 282 "hb-ot-shaper-use-machine.rl"
807
808
809 unsigned int syllable_serial = 1;
810
811#line 801 "hb-ot-shaper-use-machine.hh"
812 {
813 unsigned int _trans = 0;
814 const unsigned char * _keys;
815 const short * _inds;
816 int _ic;
817 _resume: {}
818 if ( p == pe && p != eof )
819 goto _out;
820 switch ( _use_syllable_machine_from_state_actions[cs] ) {
821 case 2: {
822 {
823#line 1 "NONE"
824 {ts = p;}}
825
826#line 815 "hb-ot-shaper-use-machine.hh"
827
828
829 break;
830 }
831 }
832
833 if ( p == eof ) {
834 if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
835 _trans = (unsigned int)_use_syllable_machine_eof_trans[cs] - 1;
836 }
837 }
838 else {
839 _keys = ( _use_syllable_machine_trans_keys + ((cs<<1)));
840 _inds = ( _use_syllable_machine_indicies + (_use_syllable_machine_index_offsets[cs]));
841
842 if ( ((*p).second.second.use_category()) <= 53 ) {
843 _ic = (int)_use_syllable_machine_char_class[(int)((*p).second.second.use_category()) - 0];
844 if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) )
845 _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) ));
846 else
847 _trans = (unsigned int)_use_syllable_machine_index_defaults[cs];
848 }
849 else {
850 _trans = (unsigned int)_use_syllable_machine_index_defaults[cs];
851 }
852
853 }
854 cs = (int)_use_syllable_machine_cond_targs[_trans];
855
856 if ( _use_syllable_machine_cond_actions[_trans] != 0 ) {
857
858 switch ( _use_syllable_machine_cond_actions[_trans] ) {
859 case 12: {
860 {
861#line 170 "hb-ot-shaper-use-machine.rl"
862 {te = p+1;{
863#line 170 "hb-ot-shaper-use-machine.rl"
864 found_syllable (use_virama_terminated_cluster); }
865 }}
866
867#line 855 "hb-ot-shaper-use-machine.hh"
868
869
870 break;
871 }
872 case 10: {
873 {
874#line 171 "hb-ot-shaper-use-machine.rl"
875 {te = p+1;{
876#line 171 "hb-ot-shaper-use-machine.rl"
877 found_syllable (use_sakot_terminated_cluster); }
878 }}
879
880#line 867 "hb-ot-shaper-use-machine.hh"
881
882
883 break;
884 }
885 case 8: {
886 {
887#line 172 "hb-ot-shaper-use-machine.rl"
888 {te = p+1;{
889#line 172 "hb-ot-shaper-use-machine.rl"
890 found_syllable (use_standard_cluster); }
891 }}
892
893#line 879 "hb-ot-shaper-use-machine.hh"
894
895
896 break;
897 }
898 case 16: {
899 {
900#line 173 "hb-ot-shaper-use-machine.rl"
901 {te = p+1;{
902#line 173 "hb-ot-shaper-use-machine.rl"
903 found_syllable (use_number_joiner_terminated_cluster); }
904 }}
905
906#line 891 "hb-ot-shaper-use-machine.hh"
907
908
909 break;
910 }
911 case 14: {
912 {
913#line 174 "hb-ot-shaper-use-machine.rl"
914 {te = p+1;{
915#line 174 "hb-ot-shaper-use-machine.rl"
916 found_syllable (use_numeral_cluster); }
917 }}
918
919#line 903 "hb-ot-shaper-use-machine.hh"
920
921
922 break;
923 }
924 case 6: {
925 {
926#line 175 "hb-ot-shaper-use-machine.rl"
927 {te = p+1;{
928#line 175 "hb-ot-shaper-use-machine.rl"
929 found_syllable (use_symbol_cluster); }
930 }}
931
932#line 915 "hb-ot-shaper-use-machine.hh"
933
934
935 break;
936 }
937 case 20: {
938 {
939#line 176 "hb-ot-shaper-use-machine.rl"
940 {te = p+1;{
941#line 176 "hb-ot-shaper-use-machine.rl"
942 found_syllable (use_hieroglyph_cluster); }
943 }}
944
945#line 927 "hb-ot-shaper-use-machine.hh"
946
947
948 break;
949 }
950 case 4: {
951 {
952#line 177 "hb-ot-shaper-use-machine.rl"
953 {te = p+1;{
954#line 177 "hb-ot-shaper-use-machine.rl"
955 found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
956 }}
957
958#line 939 "hb-ot-shaper-use-machine.hh"
959
960
961 break;
962 }
963 case 3: {
964 {
965#line 178 "hb-ot-shaper-use-machine.rl"
966 {te = p+1;{
967#line 178 "hb-ot-shaper-use-machine.rl"
968 found_syllable (use_non_cluster); }
969 }}
970
971#line 951 "hb-ot-shaper-use-machine.hh"
972
973
974 break;
975 }
976 case 11: {
977 {
978#line 170 "hb-ot-shaper-use-machine.rl"
979 {te = p;p = p - 1;{
980#line 170 "hb-ot-shaper-use-machine.rl"
981 found_syllable (use_virama_terminated_cluster); }
982 }}
983
984#line 963 "hb-ot-shaper-use-machine.hh"
985
986
987 break;
988 }
989 case 9: {
990 {
991#line 171 "hb-ot-shaper-use-machine.rl"
992 {te = p;p = p - 1;{
993#line 171 "hb-ot-shaper-use-machine.rl"
994 found_syllable (use_sakot_terminated_cluster); }
995 }}
996
997#line 975 "hb-ot-shaper-use-machine.hh"
998
999
1000 break;
1001 }
1002 case 7: {
1003 {
1004#line 172 "hb-ot-shaper-use-machine.rl"
1005 {te = p;p = p - 1;{
1006#line 172 "hb-ot-shaper-use-machine.rl"
1007 found_syllable (use_standard_cluster); }
1008 }}
1009
1010#line 987 "hb-ot-shaper-use-machine.hh"
1011
1012
1013 break;
1014 }
1015 case 15: {
1016 {
1017#line 173 "hb-ot-shaper-use-machine.rl"
1018 {te = p;p = p - 1;{
1019#line 173 "hb-ot-shaper-use-machine.rl"
1020 found_syllable (use_number_joiner_terminated_cluster); }
1021 }}
1022
1023#line 999 "hb-ot-shaper-use-machine.hh"
1024
1025
1026 break;
1027 }
1028 case 13: {
1029 {
1030#line 174 "hb-ot-shaper-use-machine.rl"
1031 {te = p;p = p - 1;{
1032#line 174 "hb-ot-shaper-use-machine.rl"
1033 found_syllable (use_numeral_cluster); }
1034 }}
1035
1036#line 1011 "hb-ot-shaper-use-machine.hh"
1037
1038
1039 break;
1040 }
1041 case 5: {
1042 {
1043#line 175 "hb-ot-shaper-use-machine.rl"
1044 {te = p;p = p - 1;{
1045#line 175 "hb-ot-shaper-use-machine.rl"
1046 found_syllable (use_symbol_cluster); }
1047 }}
1048
1049#line 1023 "hb-ot-shaper-use-machine.hh"
1050
1051
1052 break;
1053 }
1054 case 19: {
1055 {
1056#line 176 "hb-ot-shaper-use-machine.rl"
1057 {te = p;p = p - 1;{
1058#line 176 "hb-ot-shaper-use-machine.rl"
1059 found_syllable (use_hieroglyph_cluster); }
1060 }}
1061
1062#line 1035 "hb-ot-shaper-use-machine.hh"
1063
1064
1065 break;
1066 }
1067 case 17: {
1068 {
1069#line 177 "hb-ot-shaper-use-machine.rl"
1070 {te = p;p = p - 1;{
1071#line 177 "hb-ot-shaper-use-machine.rl"
1072 found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
1073 }}
1074
1075#line 1047 "hb-ot-shaper-use-machine.hh"
1076
1077
1078 break;
1079 }
1080 case 18: {
1081 {
1082#line 178 "hb-ot-shaper-use-machine.rl"
1083 {te = p;p = p - 1;{
1084#line 178 "hb-ot-shaper-use-machine.rl"
1085 found_syllable (use_non_cluster); }
1086 }}
1087
1088#line 1059 "hb-ot-shaper-use-machine.hh"
1089
1090
1091 break;
1092 }
1093 }
1094
1095 }
1096
1097 if ( p == eof ) {
1098 if ( cs >= 0 )
1099 goto _out;
1100 }
1101 else {
1102 switch ( _use_syllable_machine_to_state_actions[cs] ) {
1103 case 1: {
1104 {
1105#line 1 "NONE"
1106 {ts = 0;}}
1107
1108#line 1078 "hb-ot-shaper-use-machine.hh"
1109
1110
1111 break;
1112 }
1113 }
1114
1115 p += 1;
1116 goto _resume;
1117 }
1118 _out: {}
1119 }
1120
1121#line 287 "hb-ot-shaper-use-machine.rl"
1122
1123}
1124
1125#undef found_syllable
1126
1127#endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1128