1
2#line 1 "hb-ot-shape-complex-indic-machine.rl"
3/*
4 * Copyright © 2011,2012 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 * Google Author(s): Behdad Esfahbod
27 */
28
29#ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
30#define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
31
32#include "hb.hh"
33
34
35#line 36 "hb-ot-shape-complex-indic-machine.hh"
36static const unsigned char _indic_syllable_machine_trans_keys[] = {
37 8u, 8u, 4u, 8u, 5u, 7u, 5u, 8u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
38 4u, 13u, 4u, 8u, 8u, 8u, 5u, 7u, 5u, 8u, 4u, 8u, 6u, 6u, 16u, 16u,
39 4u, 8u, 4u, 13u, 4u, 13u, 4u, 13u, 8u, 8u, 5u, 7u, 5u, 8u, 4u, 8u,
40 6u, 6u, 16u, 16u, 4u, 8u, 4u, 8u, 4u, 13u, 8u, 8u, 5u, 7u, 5u, 8u,
41 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 4u, 8u, 5u, 8u, 8u, 8u, 1u, 19u,
42 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 5u, 10u, 5u, 10u, 10u, 10u, 5u, 10u,
43 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 4u, 10u, 5u, 10u, 4u, 10u, 5u, 10u,
44 3u, 10u, 5u, 10u, 3u, 17u, 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
45 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 5u, 10u, 10u, 10u, 5u, 10u, 1u, 16u,
46 1u, 16u, 3u, 10u, 4u, 10u, 5u, 10u, 4u, 10u, 5u, 10u, 5u, 10u, 3u, 10u,
47 5u, 10u, 3u, 17u, 3u, 17u, 4u, 8u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
48 3u, 17u, 1u, 16u, 5u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 1u, 16u, 3u, 10u,
49 4u, 10u, 5u, 10u, 3u, 17u, 4u, 10u, 5u, 10u, 5u, 10u, 3u, 10u, 5u, 10u,
50 3u, 17u, 4u, 13u, 4u, 8u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
51 1u, 16u, 5u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 1u, 16u, 3u, 10u, 4u, 10u,
52 5u, 10u, 3u, 17u, 4u, 10u, 5u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 1u, 17u,
53 3u, 17u, 1u, 17u, 4u, 13u, 5u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 3u, 10u,
54 5u, 10u, 5u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 0
55};
56
57static const char _indic_syllable_machine_key_spans[] = {
58 1, 5, 3, 4, 5, 1, 1, 5,
59 10, 5, 1, 3, 4, 5, 1, 1,
60 5, 10, 10, 10, 1, 3, 4, 5,
61 1, 1, 5, 5, 10, 1, 3, 4,
62 5, 1, 1, 5, 5, 4, 1, 19,
63 15, 15, 14, 16, 6, 6, 1, 6,
64 16, 16, 16, 8, 7, 6, 7, 6,
65 8, 6, 15, 15, 15, 15, 14, 16,
66 15, 15, 14, 16, 6, 1, 6, 16,
67 16, 8, 7, 6, 7, 6, 6, 8,
68 6, 15, 15, 5, 15, 15, 14, 16,
69 15, 16, 6, 1, 6, 16, 16, 8,
70 7, 6, 15, 7, 6, 6, 8, 6,
71 15, 10, 5, 15, 15, 14, 16, 15,
72 16, 6, 1, 6, 16, 16, 8, 7,
73 6, 15, 7, 6, 6, 8, 6, 17,
74 15, 17, 10, 6, 1, 6, 16, 8,
75 6, 6, 1, 6, 16
76};
77
78static const short _indic_syllable_machine_index_offsets[] = {
79 0, 2, 8, 12, 17, 23, 25, 27,
80 33, 44, 50, 52, 56, 61, 67, 69,
81 71, 77, 88, 99, 110, 112, 116, 121,
82 127, 129, 131, 137, 143, 154, 156, 160,
83 165, 171, 173, 175, 181, 187, 192, 194,
84 214, 230, 246, 261, 278, 285, 292, 294,
85 301, 318, 335, 352, 361, 369, 376, 384,
86 391, 400, 407, 423, 439, 455, 471, 486,
87 503, 519, 535, 550, 567, 574, 576, 583,
88 600, 617, 626, 634, 641, 649, 656, 663,
89 672, 679, 695, 711, 717, 733, 749, 764,
90 781, 797, 814, 821, 823, 830, 847, 864,
91 873, 881, 888, 904, 912, 919, 926, 935,
92 942, 958, 969, 975, 991, 1007, 1022, 1039,
93 1055, 1072, 1079, 1081, 1088, 1105, 1122, 1131,
94 1139, 1146, 1162, 1170, 1177, 1184, 1193, 1200,
95 1218, 1234, 1252, 1263, 1270, 1272, 1279, 1296,
96 1305, 1312, 1319, 1321, 1328
97};
98
99static const unsigned char _indic_syllable_machine_indicies[] = {
100 1, 0, 2, 3, 3, 4, 1, 0,
101 3, 3, 4, 0, 3, 3, 4, 1,
102 0, 5, 3, 3, 4, 1, 0, 6,
103 0, 7, 0, 8, 3, 3, 4, 1,
104 0, 2, 3, 3, 4, 1, 0, 0,
105 0, 0, 9, 0, 11, 12, 12, 13,
106 14, 10, 14, 10, 12, 12, 13, 10,
107 12, 12, 13, 14, 10, 15, 12, 12,
108 13, 14, 10, 16, 10, 17, 10, 18,
109 12, 12, 13, 14, 10, 11, 12, 12,
110 13, 14, 10, 10, 10, 10, 19, 10,
111 11, 12, 12, 13, 14, 10, 10, 10,
112 10, 20, 10, 22, 23, 23, 24, 25,
113 21, 21, 21, 21, 26, 21, 25, 21,
114 23, 23, 24, 27, 23, 23, 24, 25,
115 21, 28, 23, 23, 24, 25, 21, 29,
116 21, 30, 21, 22, 23, 23, 24, 25,
117 21, 31, 23, 23, 24, 25, 21, 33,
118 34, 34, 35, 36, 32, 32, 32, 32,
119 37, 32, 36, 32, 34, 34, 35, 32,
120 34, 34, 35, 36, 32, 38, 34, 34,
121 35, 36, 32, 39, 32, 40, 32, 33,
122 34, 34, 35, 36, 32, 41, 34, 34,
123 35, 36, 32, 23, 23, 24, 1, 0,
124 43, 42, 45, 46, 47, 48, 49, 50,
125 24, 25, 44, 51, 52, 52, 26, 44,
126 53, 54, 55, 56, 57, 44, 59, 60,
127 61, 62, 4, 1, 58, 63, 58, 58,
128 9, 58, 58, 58, 64, 58, 65, 60,
129 66, 66, 4, 1, 58, 63, 58, 58,
130 58, 58, 58, 58, 64, 58, 60, 66,
131 66, 4, 1, 58, 63, 58, 58, 58,
132 58, 58, 58, 64, 58, 45, 58, 58,
133 58, 67, 68, 58, 1, 58, 63, 58,
134 58, 58, 58, 58, 45, 58, 69, 69,
135 58, 1, 58, 63, 58, 63, 58, 58,
136 70, 58, 63, 58, 63, 58, 63, 58,
137 58, 58, 58, 63, 58, 45, 58, 71,
138 58, 69, 69, 58, 1, 58, 63, 58,
139 58, 58, 58, 58, 45, 58, 45, 58,
140 58, 58, 69, 69, 58, 1, 58, 63,
141 58, 58, 58, 58, 58, 45, 58, 45,
142 58, 58, 58, 69, 68, 58, 1, 58,
143 63, 58, 58, 58, 58, 58, 45, 58,
144 72, 7, 73, 74, 4, 1, 58, 63,
145 58, 7, 73, 74, 4, 1, 58, 63,
146 58, 73, 73, 4, 1, 58, 63, 58,
147 75, 76, 76, 4, 1, 58, 63, 58,
148 67, 77, 58, 1, 58, 63, 58, 67,
149 58, 69, 69, 58, 1, 58, 63, 58,
150 69, 77, 58, 1, 58, 63, 58, 59,
151 60, 66, 66, 4, 1, 58, 63, 58,
152 58, 58, 58, 58, 58, 64, 58, 59,
153 60, 61, 66, 4, 1, 58, 63, 58,
154 58, 9, 58, 58, 58, 64, 58, 79,
155 80, 81, 82, 13, 14, 78, 83, 78,
156 78, 20, 78, 78, 78, 84, 78, 85,
157 80, 86, 82, 13, 14, 78, 83, 78,
158 78, 78, 78, 78, 78, 84, 78, 80,
159 86, 82, 13, 14, 78, 83, 78, 78,
160 78, 78, 78, 78, 84, 78, 87, 78,
161 78, 78, 88, 89, 78, 14, 78, 83,
162 78, 78, 78, 78, 78, 87, 78, 90,
163 80, 91, 92, 13, 14, 78, 83, 78,
164 78, 19, 78, 78, 78, 84, 78, 93,
165 80, 86, 86, 13, 14, 78, 83, 78,
166 78, 78, 78, 78, 78, 84, 78, 80,
167 86, 86, 13, 14, 78, 83, 78, 78,
168 78, 78, 78, 78, 84, 78, 87, 78,
169 78, 78, 94, 89, 78, 14, 78, 83,
170 78, 78, 78, 78, 78, 87, 78, 83,
171 78, 78, 95, 78, 83, 78, 83, 78,
172 83, 78, 78, 78, 78, 83, 78, 87,
173 78, 96, 78, 94, 94, 78, 14, 78,
174 83, 78, 78, 78, 78, 78, 87, 78,
175 87, 78, 78, 78, 94, 94, 78, 14,
176 78, 83, 78, 78, 78, 78, 78, 87,
177 78, 97, 17, 98, 99, 13, 14, 78,
178 83, 78, 17, 98, 99, 13, 14, 78,
179 83, 78, 98, 98, 13, 14, 78, 83,
180 78, 100, 101, 101, 13, 14, 78, 83,
181 78, 88, 102, 78, 14, 78, 83, 78,
182 94, 94, 78, 14, 78, 83, 78, 88,
183 78, 94, 94, 78, 14, 78, 83, 78,
184 94, 102, 78, 14, 78, 83, 78, 90,
185 80, 86, 86, 13, 14, 78, 83, 78,
186 78, 78, 78, 78, 78, 84, 78, 90,
187 80, 91, 86, 13, 14, 78, 83, 78,
188 78, 19, 78, 78, 78, 84, 78, 11,
189 12, 12, 13, 14, 78, 79, 80, 86,
190 82, 13, 14, 78, 83, 78, 78, 78,
191 78, 78, 78, 84, 78, 104, 48, 105,
192 105, 24, 25, 103, 51, 103, 103, 103,
193 103, 103, 103, 55, 103, 48, 105, 105,
194 24, 25, 103, 51, 103, 103, 103, 103,
195 103, 103, 55, 103, 106, 103, 103, 103,
196 107, 108, 103, 25, 103, 51, 103, 103,
197 103, 103, 103, 106, 103, 47, 48, 109,
198 110, 24, 25, 103, 51, 103, 103, 26,
199 103, 103, 103, 55, 103, 106, 103, 103,
200 103, 111, 108, 103, 25, 103, 51, 103,
201 103, 103, 103, 103, 106, 103, 51, 103,
202 103, 112, 103, 51, 103, 51, 103, 51,
203 103, 103, 103, 103, 51, 103, 106, 103,
204 113, 103, 111, 111, 103, 25, 103, 51,
205 103, 103, 103, 103, 103, 106, 103, 106,
206 103, 103, 103, 111, 111, 103, 25, 103,
207 51, 103, 103, 103, 103, 103, 106, 103,
208 114, 30, 115, 116, 24, 25, 103, 51,
209 103, 30, 115, 116, 24, 25, 103, 51,
210 103, 115, 115, 24, 25, 103, 51, 103,
211 47, 48, 105, 105, 24, 25, 103, 51,
212 103, 103, 103, 103, 103, 103, 55, 103,
213 117, 118, 118, 24, 25, 103, 51, 103,
214 107, 119, 103, 25, 103, 51, 103, 111,
215 111, 103, 25, 103, 51, 103, 107, 103,
216 111, 111, 103, 25, 103, 51, 103, 111,
217 119, 103, 25, 103, 51, 103, 47, 48,
218 109, 105, 24, 25, 103, 51, 103, 103,
219 26, 103, 103, 103, 55, 103, 22, 23,
220 23, 24, 25, 120, 120, 120, 120, 26,
221 120, 22, 23, 23, 24, 25, 120, 122,
222 123, 124, 125, 35, 36, 121, 126, 121,
223 121, 37, 121, 121, 121, 127, 121, 128,
224 123, 125, 125, 35, 36, 121, 126, 121,
225 121, 121, 121, 121, 121, 127, 121, 123,
226 125, 125, 35, 36, 121, 126, 121, 121,
227 121, 121, 121, 121, 127, 121, 129, 121,
228 121, 121, 130, 131, 121, 36, 121, 126,
229 121, 121, 121, 121, 121, 129, 121, 122,
230 123, 124, 52, 35, 36, 121, 126, 121,
231 121, 37, 121, 121, 121, 127, 121, 129,
232 121, 121, 121, 132, 131, 121, 36, 121,
233 126, 121, 121, 121, 121, 121, 129, 121,
234 126, 121, 121, 133, 121, 126, 121, 126,
235 121, 126, 121, 121, 121, 121, 126, 121,
236 129, 121, 134, 121, 132, 132, 121, 36,
237 121, 126, 121, 121, 121, 121, 121, 129,
238 121, 129, 121, 121, 121, 132, 132, 121,
239 36, 121, 126, 121, 121, 121, 121, 121,
240 129, 121, 135, 40, 136, 137, 35, 36,
241 121, 126, 121, 40, 136, 137, 35, 36,
242 121, 126, 121, 136, 136, 35, 36, 121,
243 126, 121, 122, 123, 125, 125, 35, 36,
244 121, 126, 121, 121, 121, 121, 121, 121,
245 127, 121, 138, 139, 139, 35, 36, 121,
246 126, 121, 130, 140, 121, 36, 121, 126,
247 121, 132, 132, 121, 36, 121, 126, 121,
248 130, 121, 132, 132, 121, 36, 121, 126,
249 121, 132, 140, 121, 36, 121, 126, 121,
250 45, 46, 47, 48, 109, 105, 24, 25,
251 103, 51, 52, 52, 26, 103, 103, 45,
252 55, 103, 59, 141, 61, 62, 4, 1,
253 58, 63, 58, 58, 9, 58, 58, 58,
254 64, 58, 45, 46, 47, 48, 142, 143,
255 24, 144, 58, 145, 58, 52, 26, 58,
256 58, 45, 55, 58, 22, 146, 146, 24,
257 144, 58, 63, 58, 58, 26, 58, 145,
258 58, 58, 147, 58, 145, 58, 145, 58,
259 145, 58, 58, 58, 58, 145, 58, 45,
260 58, 71, 22, 146, 146, 24, 144, 58,
261 63, 58, 58, 58, 58, 58, 45, 58,
262 149, 148, 150, 150, 148, 43, 148, 151,
263 148, 150, 150, 148, 43, 148, 151, 148,
264 151, 148, 148, 152, 148, 151, 148, 151,
265 148, 151, 148, 148, 148, 148, 151, 148,
266 45, 120, 120, 120, 120, 120, 120, 120,
267 120, 120, 52, 120, 120, 120, 120, 45,
268 120, 0
269};
270
271static const unsigned char _indic_syllable_machine_trans_targs[] = {
272 39, 45, 50, 2, 51, 5, 6, 53,
273 57, 58, 39, 67, 11, 73, 68, 14,
274 15, 75, 80, 81, 84, 39, 89, 21,
275 95, 90, 98, 39, 24, 25, 97, 103,
276 39, 112, 30, 118, 113, 121, 33, 34,
277 120, 126, 39, 137, 39, 40, 60, 85,
278 87, 105, 106, 91, 107, 127, 128, 99,
279 135, 140, 39, 41, 43, 8, 59, 46,
280 54, 42, 1, 44, 48, 0, 47, 49,
281 52, 3, 4, 55, 7, 56, 39, 61,
282 63, 18, 83, 69, 76, 62, 9, 64,
283 78, 71, 65, 17, 82, 66, 10, 70,
284 72, 74, 12, 13, 77, 16, 79, 39,
285 86, 26, 88, 101, 93, 19, 104, 20,
286 92, 94, 96, 22, 23, 100, 27, 102,
287 39, 39, 108, 110, 28, 35, 114, 122,
288 109, 111, 124, 116, 29, 115, 117, 119,
289 31, 32, 123, 36, 125, 129, 130, 134,
290 131, 132, 37, 133, 39, 136, 38, 138,
291 139
292};
293
294static const char _indic_syllable_machine_trans_actions[] = {
295 1, 0, 2, 0, 2, 0, 0, 2,
296 2, 2, 3, 2, 0, 2, 0, 0,
297 0, 2, 2, 2, 2, 4, 2, 0,
298 5, 0, 5, 6, 0, 0, 5, 2,
299 7, 2, 0, 2, 0, 2, 0, 0,
300 2, 2, 8, 0, 11, 2, 2, 5,
301 0, 12, 12, 0, 2, 5, 2, 5,
302 2, 0, 13, 2, 0, 0, 2, 0,
303 2, 2, 0, 2, 2, 0, 0, 2,
304 2, 0, 0, 0, 0, 2, 14, 2,
305 0, 0, 2, 0, 2, 2, 0, 2,
306 2, 2, 2, 0, 2, 2, 0, 0,
307 2, 2, 0, 0, 0, 0, 2, 15,
308 5, 0, 5, 2, 2, 0, 5, 0,
309 0, 2, 5, 0, 0, 0, 0, 2,
310 16, 17, 2, 0, 0, 0, 0, 2,
311 2, 2, 2, 2, 0, 0, 2, 2,
312 0, 0, 0, 0, 2, 0, 18, 18,
313 0, 0, 0, 0, 19, 2, 0, 0,
314 0
315};
316
317static const char _indic_syllable_machine_to_state_actions[] = {
318 0, 0, 0, 0, 0, 0, 0, 0,
319 0, 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0, 0, 0,
322 0, 0, 0, 0, 0, 0, 0, 9,
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, 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
336};
337
338static const char _indic_syllable_machine_from_state_actions[] = {
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, 10,
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, 0, 0, 0, 0, 0, 0,
350 0, 0, 0, 0, 0, 0, 0, 0,
351 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0,
355 0, 0, 0, 0, 0, 0, 0, 0,
356 0, 0, 0, 0, 0
357};
358
359static const short _indic_syllable_machine_eof_trans[] = {
360 1, 1, 1, 1, 1, 1, 1, 1,
361 1, 11, 11, 11, 11, 11, 11, 11,
362 11, 11, 11, 22, 22, 28, 22, 22,
363 22, 22, 22, 22, 33, 33, 33, 33,
364 33, 33, 33, 33, 33, 1, 43, 0,
365 59, 59, 59, 59, 59, 59, 59, 59,
366 59, 59, 59, 59, 59, 59, 59, 59,
367 59, 59, 59, 59, 79, 79, 79, 79,
368 79, 79, 79, 79, 79, 79, 79, 79,
369 79, 79, 79, 79, 79, 79, 79, 79,
370 79, 79, 79, 79, 79, 104, 104, 104,
371 104, 104, 104, 104, 104, 104, 104, 104,
372 104, 104, 104, 104, 104, 104, 104, 104,
373 104, 121, 121, 122, 122, 122, 122, 122,
374 122, 122, 122, 122, 122, 122, 122, 122,
375 122, 122, 122, 122, 122, 122, 122, 104,
376 59, 59, 59, 59, 59, 59, 59, 149,
377 149, 149, 149, 149, 121
378};
379
380static const int indic_syllable_machine_start = 39;
381static const int indic_syllable_machine_first_final = 39;
382static const int indic_syllable_machine_error = -1;
383
384static const int indic_syllable_machine_en_main = 39;
385
386
387#line 36 "hb-ot-shape-complex-indic-machine.rl"
388
389
390
391#line 93 "hb-ot-shape-complex-indic-machine.rl"
392
393
394#define found_syllable(syllable_type) \
395 HB_STMT_START { \
396 if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
397 for (unsigned int i = ts; i < te; i++) \
398 info[i].syllable() = (syllable_serial << 4) | indic_##syllable_type; \
399 syllable_serial++; \
400 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
401 } HB_STMT_END
402
403static void
404find_syllables_indic (hb_buffer_t *buffer)
405{
406 unsigned int p, pe, eof, ts, te, act;
407 int cs;
408 hb_glyph_info_t *info = buffer->info;
409
410#line 411 "hb-ot-shape-complex-indic-machine.hh"
411 {
412 cs = indic_syllable_machine_start;
413 ts = 0;
414 te = 0;
415 act = 0;
416 }
417
418#line 113 "hb-ot-shape-complex-indic-machine.rl"
419
420
421 p = 0;
422 pe = eof = buffer->len;
423
424 unsigned int syllable_serial = 1;
425
426#line 427 "hb-ot-shape-complex-indic-machine.hh"
427 {
428 int _slen;
429 int _trans;
430 const unsigned char *_keys;
431 const unsigned char *_inds;
432 if ( p == pe )
433 goto _test_eof;
434_resume:
435 switch ( _indic_syllable_machine_from_state_actions[cs] ) {
436 case 10:
437#line 1 "NONE"
438 {ts = p;}
439 break;
440#line 441 "hb-ot-shape-complex-indic-machine.hh"
441 }
442
443 _keys = _indic_syllable_machine_trans_keys + (cs<<1);
444 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
445
446 _slen = _indic_syllable_machine_key_spans[cs];
447 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
448 ( info[p].indic_category()) <= _keys[1] ?
449 ( info[p].indic_category()) - _keys[0] : _slen ];
450
451_eof_trans:
452 cs = _indic_syllable_machine_trans_targs[_trans];
453
454 if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
455 goto _again;
456
457 switch ( _indic_syllable_machine_trans_actions[_trans] ) {
458 case 2:
459#line 1 "NONE"
460 {te = p+1;}
461 break;
462 case 11:
463#line 89 "hb-ot-shape-complex-indic-machine.rl"
464 {te = p+1;{ found_syllable (non_indic_cluster); }}
465 break;
466 case 13:
467#line 84 "hb-ot-shape-complex-indic-machine.rl"
468 {te = p;p--;{ found_syllable (consonant_syllable); }}
469 break;
470 case 14:
471#line 85 "hb-ot-shape-complex-indic-machine.rl"
472 {te = p;p--;{ found_syllable (vowel_syllable); }}
473 break;
474 case 17:
475#line 86 "hb-ot-shape-complex-indic-machine.rl"
476 {te = p;p--;{ found_syllable (standalone_cluster); }}
477 break;
478 case 19:
479#line 87 "hb-ot-shape-complex-indic-machine.rl"
480 {te = p;p--;{ found_syllable (symbol_cluster); }}
481 break;
482 case 15:
483#line 88 "hb-ot-shape-complex-indic-machine.rl"
484 {te = p;p--;{ found_syllable (broken_cluster); }}
485 break;
486 case 16:
487#line 89 "hb-ot-shape-complex-indic-machine.rl"
488 {te = p;p--;{ found_syllable (non_indic_cluster); }}
489 break;
490 case 1:
491#line 84 "hb-ot-shape-complex-indic-machine.rl"
492 {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
493 break;
494 case 3:
495#line 85 "hb-ot-shape-complex-indic-machine.rl"
496 {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
497 break;
498 case 7:
499#line 86 "hb-ot-shape-complex-indic-machine.rl"
500 {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
501 break;
502 case 8:
503#line 87 "hb-ot-shape-complex-indic-machine.rl"
504 {{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
505 break;
506 case 4:
507#line 88 "hb-ot-shape-complex-indic-machine.rl"
508 {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
509 break;
510 case 6:
511#line 1 "NONE"
512 { switch( act ) {
513 case 1:
514 {{p = ((te))-1;} found_syllable (consonant_syllable); }
515 break;
516 case 5:
517 {{p = ((te))-1;} found_syllable (broken_cluster); }
518 break;
519 case 6:
520 {{p = ((te))-1;} found_syllable (non_indic_cluster); }
521 break;
522 }
523 }
524 break;
525 case 18:
526#line 1 "NONE"
527 {te = p+1;}
528#line 84 "hb-ot-shape-complex-indic-machine.rl"
529 {act = 1;}
530 break;
531 case 5:
532#line 1 "NONE"
533 {te = p+1;}
534#line 88 "hb-ot-shape-complex-indic-machine.rl"
535 {act = 5;}
536 break;
537 case 12:
538#line 1 "NONE"
539 {te = p+1;}
540#line 89 "hb-ot-shape-complex-indic-machine.rl"
541 {act = 6;}
542 break;
543#line 544 "hb-ot-shape-complex-indic-machine.hh"
544 }
545
546_again:
547 switch ( _indic_syllable_machine_to_state_actions[cs] ) {
548 case 9:
549#line 1 "NONE"
550 {ts = 0;}
551 break;
552#line 553 "hb-ot-shape-complex-indic-machine.hh"
553 }
554
555 if ( ++p != pe )
556 goto _resume;
557 _test_eof: {}
558 if ( p == eof )
559 {
560 if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
561 _trans = _indic_syllable_machine_eof_trans[cs] - 1;
562 goto _eof_trans;
563 }
564 }
565
566 }
567
568#line 121 "hb-ot-shape-complex-indic-machine.rl"
569
570}
571
572#undef found_syllable
573
574#endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */
575