2 #line 1 "hb-ot-shaper-indic-machine.rl"
4 * Copyright © 2011,2012 Google, Inc.
6 * This is part of HarfBuzz, a text shaping library.
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.
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
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.
26 * Google Author(s): Behdad Esfahbod
29 #ifndef HB_OT_SHAPER_INDIC_MACHINE_HH
30 #define HB_OT_SHAPER_INDIC_MACHINE_HH
34 #include "hb-ot-layout.hh"
35 #include "hb-ot-shaper-indic.hh"
37 /* buffer var allocations */
38 #define indic_category() ot_shaper_var_u8_category() /* indic_category_t */
39 #define indic_position() ot_shaper_var_u8_auxiliary() /* indic_position_t */
41 using indic_category_t
= unsigned;
42 using indic_position_t
= ot_position_t
;
44 #define I_Cat(Cat) indic_syllable_machine_ex_##Cat
46 enum indic_syllable_type_t
{
47 indic_consonant_syllable
,
49 indic_standalone_cluster
,
52 indic_non_indic_cluster
,
56 #line 54 "hb-ot-shaper-indic-machine.hh"
57 #define indic_syllable_machine_ex_A 9u
58 #define indic_syllable_machine_ex_C 1u
59 #define indic_syllable_machine_ex_CM 16u
60 #define indic_syllable_machine_ex_CS 18u
61 #define indic_syllable_machine_ex_DOTTEDCIRCLE 11u
62 #define indic_syllable_machine_ex_H 4u
63 #define indic_syllable_machine_ex_M 7u
64 #define indic_syllable_machine_ex_MPst 13u
65 #define indic_syllable_machine_ex_N 3u
66 #define indic_syllable_machine_ex_PLACEHOLDER 10u
67 #define indic_syllable_machine_ex_RS 12u
68 #define indic_syllable_machine_ex_Ra 15u
69 #define indic_syllable_machine_ex_Repha 14u
70 #define indic_syllable_machine_ex_SM 8u
71 #define indic_syllable_machine_ex_Symbol 17u
72 #define indic_syllable_machine_ex_V 2u
73 #define indic_syllable_machine_ex_VD 9u
74 #define indic_syllable_machine_ex_X 0u
75 #define indic_syllable_machine_ex_ZWJ 6u
76 #define indic_syllable_machine_ex_ZWNJ 5u
79 #line 75 "hb-ot-shaper-indic-machine.hh"
80 static const unsigned char _indic_syllable_machine_trans_keys
[] = {
81 8u, 8u, 4u, 13u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u,
82 8u, 8u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, 4u, 13u,
83 8u, 8u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, 8u, 8u,
84 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 5u, 13u, 8u, 8u, 1u, 18u,
85 3u, 16u, 3u, 16u, 4u, 16u, 1u, 15u, 5u, 9u, 5u, 9u, 9u, 9u, 5u, 9u,
86 1u, 15u, 1u, 15u, 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 4u, 13u,
87 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 3u, 16u, 3u, 16u, 3u, 16u, 4u, 16u,
88 1u, 15u, 3u, 16u, 3u, 16u, 4u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u,
89 1u, 15u, 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 4u, 13u, 5u, 9u,
90 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 3u, 16u, 4u, 13u, 3u, 16u, 3u, 16u,
91 4u, 16u, 1u, 15u, 3u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, 1u, 15u,
92 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 3u, 16u, 4u, 13u, 5u, 9u,
93 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 4u, 13u, 4u, 13u, 3u, 16u, 3u, 16u,
94 4u, 16u, 1u, 15u, 3u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, 1u, 15u,
95 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 3u, 16u, 4u, 13u, 5u, 9u,
96 5u, 9u, 3u, 9u, 5u, 9u, 1u, 16u, 3u, 16u, 1u, 16u, 4u, 13u, 5u, 13u,
97 5u, 13u, 9u, 9u, 5u, 9u, 1u, 15u, 3u, 9u, 5u, 9u, 5u, 9u, 9u, 9u,
101 static const char _indic_syllable_machine_key_spans
[] = {
102 1, 10, 9, 9, 1, 10, 10, 10,
103 1, 9, 9, 1, 10, 10, 10, 10,
104 1, 9, 9, 1, 10, 10, 10, 1,
105 9, 9, 1, 10, 10, 9, 1, 18,
106 14, 14, 13, 15, 5, 5, 1, 5,
107 15, 15, 15, 11, 10, 9, 9, 10,
108 5, 7, 5, 14, 14, 14, 14, 13,
109 15, 14, 14, 13, 15, 5, 1, 5,
110 15, 15, 11, 10, 9, 9, 10, 5,
111 5, 7, 5, 14, 14, 10, 14, 14,
112 13, 15, 14, 15, 5, 1, 5, 15,
113 15, 11, 10, 9, 9, 14, 10, 5,
114 5, 7, 5, 14, 10, 10, 14, 14,
115 13, 15, 14, 15, 5, 1, 5, 15,
116 15, 11, 10, 9, 9, 14, 10, 5,
117 5, 7, 5, 16, 14, 16, 10, 9,
118 9, 1, 5, 15, 7, 5, 5, 1,
122 static const short _indic_syllable_machine_index_offsets
[] = {
123 0, 2, 13, 23, 33, 35, 46, 57,
124 68, 70, 80, 90, 92, 103, 114, 125,
125 136, 138, 148, 158, 160, 171, 182, 193,
126 195, 205, 215, 217, 228, 239, 249, 251,
127 270, 285, 300, 314, 330, 336, 342, 344,
128 350, 366, 382, 398, 410, 421, 431, 441,
129 452, 458, 466, 472, 487, 502, 517, 532,
130 546, 562, 577, 592, 606, 622, 628, 630,
131 636, 652, 668, 680, 691, 701, 711, 722,
132 728, 734, 742, 748, 763, 778, 789, 804,
133 819, 833, 849, 864, 880, 886, 888, 894,
134 910, 926, 938, 949, 959, 969, 984, 995,
135 1001, 1007, 1015, 1021, 1036, 1047, 1058, 1073,
136 1088, 1102, 1118, 1133, 1149, 1155, 1157, 1163,
137 1179, 1195, 1207, 1218, 1228, 1238, 1253, 1264,
138 1270, 1276, 1284, 1290, 1307, 1322, 1339, 1350,
139 1360, 1370, 1372, 1378, 1394, 1402, 1408, 1414,
143 static const unsigned char _indic_syllable_machine_indicies
[] = {
144 1, 0, 2, 3, 3, 4, 5, 0,
145 0, 0, 0, 4, 0, 3, 3, 4,
146 6, 0, 0, 0, 0, 4, 0, 3,
147 3, 4, 5, 0, 0, 0, 0, 4,
148 0, 4, 0, 7, 3, 3, 4, 5,
149 0, 0, 0, 0, 4, 0, 2, 3,
150 3, 4, 5, 0, 0, 0, 8, 4,
151 0, 10, 11, 11, 12, 13, 9, 9,
152 9, 9, 12, 9, 14, 9, 11, 11,
153 12, 15, 9, 9, 9, 9, 12, 9,
154 11, 11, 12, 13, 9, 9, 9, 9,
155 12, 9, 12, 9, 16, 11, 11, 12,
156 13, 9, 9, 9, 9, 12, 9, 10,
157 11, 11, 12, 13, 9, 9, 9, 17,
158 12, 9, 10, 11, 11, 12, 13, 9,
159 9, 9, 18, 12, 9, 20, 21, 21,
160 22, 23, 19, 19, 19, 24, 22, 19,
161 25, 19, 21, 21, 22, 27, 26, 26,
162 26, 26, 22, 26, 21, 21, 22, 23,
163 19, 19, 19, 19, 22, 19, 22, 26,
164 20, 21, 21, 22, 23, 19, 19, 19,
165 19, 22, 19, 28, 21, 21, 22, 23,
166 19, 19, 19, 19, 22, 19, 30, 31,
167 31, 32, 33, 29, 29, 29, 34, 32,
168 29, 35, 29, 31, 31, 32, 36, 29,
169 29, 29, 29, 32, 29, 31, 31, 32,
170 33, 29, 29, 29, 29, 32, 29, 32,
171 29, 30, 31, 31, 32, 33, 29, 29,
172 29, 29, 32, 29, 37, 31, 31, 32,
173 33, 29, 29, 29, 29, 32, 29, 21,
174 21, 22, 38, 0, 0, 0, 0, 22,
175 0, 40, 39, 42, 43, 44, 45, 46,
176 47, 22, 23, 48, 49, 49, 24, 22,
177 50, 51, 52, 53, 54, 41, 56, 57,
178 58, 59, 4, 5, 60, 55, 55, 8,
179 4, 55, 55, 61, 55, 62, 57, 63,
180 63, 4, 5, 60, 55, 55, 55, 4,
181 55, 55, 61, 55, 57, 63, 63, 4,
182 5, 60, 55, 55, 55, 4, 55, 55,
183 61, 55, 42, 55, 55, 55, 64, 65,
184 55, 1, 60, 55, 55, 55, 55, 55,
185 42, 55, 66, 66, 55, 1, 60, 55,
186 60, 55, 55, 67, 60, 55, 60, 55,
187 60, 55, 55, 55, 60, 55, 42, 55,
188 68, 55, 66, 66, 55, 1, 60, 55,
189 55, 55, 55, 55, 42, 55, 42, 55,
190 55, 55, 66, 66, 55, 1, 60, 55,
191 55, 55, 55, 55, 42, 55, 42, 55,
192 55, 55, 66, 65, 55, 1, 60, 55,
193 55, 55, 55, 55, 42, 55, 69, 70,
194 71, 71, 4, 5, 60, 55, 55, 55,
195 4, 55, 70, 71, 71, 4, 5, 60,
196 55, 55, 55, 4, 55, 71, 71, 4,
197 5, 60, 55, 55, 55, 4, 55, 60,
198 55, 55, 67, 60, 55, 55, 55, 4,
199 55, 72, 73, 73, 4, 5, 60, 55,
200 55, 55, 4, 55, 64, 74, 55, 1,
201 60, 55, 64, 55, 66, 66, 55, 1,
202 60, 55, 66, 74, 55, 1, 60, 55,
203 56, 57, 63, 63, 4, 5, 60, 55,
204 55, 55, 4, 55, 55, 61, 55, 56,
205 57, 58, 63, 4, 5, 60, 55, 55,
206 8, 4, 55, 55, 61, 55, 76, 77,
207 78, 79, 12, 13, 80, 75, 75, 18,
208 12, 75, 75, 81, 75, 82, 77, 83,
209 79, 12, 13, 80, 75, 75, 75, 12,
210 75, 75, 81, 75, 77, 83, 79, 12,
211 13, 80, 75, 75, 75, 12, 75, 75,
212 81, 75, 84, 75, 75, 75, 85, 86,
213 75, 14, 80, 75, 75, 75, 75, 75,
214 84, 75, 87, 77, 88, 89, 12, 13,
215 80, 75, 75, 17, 12, 75, 75, 81,
216 75, 90, 77, 83, 83, 12, 13, 80,
217 75, 75, 75, 12, 75, 75, 81, 75,
218 77, 83, 83, 12, 13, 80, 75, 75,
219 75, 12, 75, 75, 81, 75, 84, 75,
220 75, 75, 91, 86, 75, 14, 80, 75,
221 75, 75, 75, 75, 84, 75, 80, 75,
222 75, 92, 80, 75, 80, 75, 80, 75,
223 75, 75, 80, 75, 84, 75, 93, 75,
224 91, 91, 75, 14, 80, 75, 75, 75,
225 75, 75, 84, 75, 84, 75, 75, 75,
226 91, 91, 75, 14, 80, 75, 75, 75,
227 75, 75, 84, 75, 94, 95, 96, 96,
228 12, 13, 80, 75, 75, 75, 12, 75,
229 95, 96, 96, 12, 13, 80, 75, 75,
230 75, 12, 75, 96, 96, 12, 13, 80,
231 75, 75, 75, 12, 75, 80, 75, 75,
232 92, 80, 75, 75, 75, 12, 75, 97,
233 98, 98, 12, 13, 80, 75, 75, 75,
234 12, 75, 85, 99, 75, 14, 80, 75,
235 91, 91, 75, 14, 80, 75, 85, 75,
236 91, 91, 75, 14, 80, 75, 91, 99,
237 75, 14, 80, 75, 87, 77, 83, 83,
238 12, 13, 80, 75, 75, 75, 12, 75,
239 75, 81, 75, 87, 77, 88, 83, 12,
240 13, 80, 75, 75, 17, 12, 75, 75,
241 81, 75, 10, 11, 11, 12, 13, 75,
242 75, 75, 75, 12, 75, 76, 77, 83,
243 79, 12, 13, 80, 75, 75, 75, 12,
244 75, 75, 81, 75, 101, 45, 102, 102,
245 22, 23, 48, 100, 100, 100, 22, 100,
246 100, 52, 100, 45, 102, 102, 22, 23,
247 48, 100, 100, 100, 22, 100, 100, 52,
248 100, 103, 100, 100, 100, 104, 105, 100,
249 25, 48, 100, 100, 100, 100, 100, 103,
250 100, 44, 45, 106, 107, 22, 23, 48,
251 100, 100, 24, 22, 100, 100, 52, 100,
252 103, 100, 100, 100, 108, 105, 100, 25,
253 48, 100, 100, 100, 100, 100, 103, 100,
254 48, 100, 100, 109, 48, 100, 48, 100,
255 48, 100, 100, 100, 48, 100, 103, 100,
256 110, 100, 108, 108, 100, 25, 48, 100,
257 100, 100, 100, 100, 103, 100, 103, 100,
258 100, 100, 108, 108, 100, 25, 48, 100,
259 100, 100, 100, 100, 103, 100, 111, 112,
260 113, 113, 22, 23, 48, 100, 100, 100,
261 22, 100, 112, 113, 113, 22, 23, 48,
262 100, 100, 100, 22, 100, 113, 113, 22,
263 23, 48, 100, 100, 100, 22, 100, 48,
264 100, 100, 109, 48, 100, 100, 100, 22,
265 100, 44, 45, 102, 102, 22, 23, 48,
266 100, 100, 100, 22, 100, 100, 52, 100,
267 114, 115, 115, 22, 23, 48, 100, 100,
268 100, 22, 100, 104, 116, 100, 25, 48,
269 100, 108, 108, 100, 25, 48, 100, 104,
270 100, 108, 108, 100, 25, 48, 100, 108,
271 116, 100, 25, 48, 100, 44, 45, 106,
272 102, 22, 23, 48, 100, 100, 24, 22,
273 100, 100, 52, 100, 20, 21, 21, 22,
274 23, 117, 117, 117, 24, 22, 117, 20,
275 21, 21, 22, 23, 117, 117, 117, 117,
276 22, 117, 119, 120, 121, 122, 32, 33,
277 123, 118, 118, 34, 32, 118, 118, 124,
278 118, 125, 120, 122, 122, 32, 33, 123,
279 118, 118, 118, 32, 118, 118, 124, 118,
280 120, 122, 122, 32, 33, 123, 118, 118,
281 118, 32, 118, 118, 124, 118, 126, 118,
282 118, 118, 127, 128, 118, 35, 123, 118,
283 118, 118, 118, 118, 126, 118, 119, 120,
284 121, 49, 32, 33, 123, 118, 118, 34,
285 32, 118, 118, 124, 118, 126, 118, 118,
286 118, 129, 128, 118, 35, 123, 118, 118,
287 118, 118, 118, 126, 118, 123, 118, 118,
288 130, 123, 118, 123, 118, 123, 118, 118,
289 118, 123, 118, 126, 118, 131, 118, 129,
290 129, 118, 35, 123, 118, 118, 118, 118,
291 118, 126, 118, 126, 118, 118, 118, 129,
292 129, 118, 35, 123, 118, 118, 118, 118,
293 118, 126, 118, 132, 133, 134, 134, 32,
294 33, 123, 118, 118, 118, 32, 118, 133,
295 134, 134, 32, 33, 123, 118, 118, 118,
296 32, 118, 134, 134, 32, 33, 123, 118,
297 118, 118, 32, 118, 123, 118, 118, 130,
298 123, 118, 118, 118, 32, 118, 119, 120,
299 122, 122, 32, 33, 123, 118, 118, 118,
300 32, 118, 118, 124, 118, 135, 136, 136,
301 32, 33, 123, 118, 118, 118, 32, 118,
302 127, 137, 118, 35, 123, 118, 129, 129,
303 118, 35, 123, 118, 127, 118, 129, 129,
304 118, 35, 123, 118, 129, 137, 118, 35,
305 123, 118, 42, 43, 44, 45, 106, 102,
306 22, 23, 48, 49, 49, 24, 22, 100,
307 42, 52, 100, 56, 138, 58, 59, 4,
308 5, 60, 55, 55, 8, 4, 55, 55,
309 61, 55, 42, 43, 44, 45, 139, 140,
310 22, 141, 142, 55, 49, 24, 22, 55,
311 42, 52, 55, 20, 143, 143, 22, 141,
312 60, 55, 55, 24, 22, 55, 60, 55,
313 55, 67, 60, 55, 55, 55, 22, 55,
314 142, 55, 55, 144, 142, 55, 55, 55,
315 22, 55, 142, 55, 142, 55, 55, 55,
316 142, 55, 42, 55, 68, 20, 143, 143,
317 22, 141, 60, 55, 55, 55, 22, 55,
318 42, 55, 146, 145, 147, 147, 145, 40,
319 148, 145, 147, 147, 145, 40, 148, 145,
320 148, 145, 145, 149, 148, 145, 148, 145,
321 148, 145, 145, 145, 148, 145, 42, 117,
322 117, 117, 117, 117, 117, 117, 117, 49,
323 117, 117, 117, 117, 42, 117, 0
326 static const unsigned char _indic_syllable_machine_trans_targs
[] = {
327 31, 37, 42, 2, 43, 46, 4, 50,
328 51, 31, 60, 9, 66, 69, 61, 11,
329 74, 75, 78, 31, 83, 17, 89, 92,
330 93, 84, 31, 19, 98, 31, 107, 24,
331 113, 116, 117, 108, 26, 122, 127, 31,
332 134, 31, 32, 53, 79, 81, 100, 101,
333 85, 102, 123, 124, 94, 132, 137, 31,
334 33, 35, 6, 52, 38, 47, 34, 1,
335 36, 40, 0, 39, 41, 44, 45, 3,
336 48, 5, 49, 31, 54, 56, 14, 77,
337 62, 70, 55, 7, 57, 72, 64, 58,
338 13, 76, 59, 8, 63, 65, 67, 68,
339 10, 71, 12, 73, 31, 80, 20, 82,
340 96, 87, 15, 99, 16, 86, 88, 90,
341 91, 18, 95, 21, 97, 31, 31, 103,
342 105, 22, 27, 109, 118, 104, 106, 120,
343 111, 23, 110, 112, 114, 115, 25, 119,
344 28, 121, 125, 126, 131, 128, 129, 29,
345 130, 31, 133, 30, 135, 136
348 static const char _indic_syllable_machine_trans_actions
[] = {
349 1, 0, 2, 0, 2, 0, 0, 2,
350 2, 3, 2, 0, 2, 0, 0, 0,
351 2, 2, 2, 4, 2, 0, 5, 0,
352 5, 0, 6, 0, 2, 7, 2, 0,
353 2, 0, 2, 0, 0, 2, 0, 8,
354 0, 11, 2, 2, 5, 0, 12, 12,
355 0, 2, 5, 2, 5, 2, 0, 13,
356 2, 0, 0, 2, 0, 2, 2, 0,
357 2, 2, 0, 0, 2, 2, 2, 0,
358 0, 0, 2, 14, 2, 0, 0, 2,
359 0, 2, 2, 0, 2, 2, 2, 2,
360 0, 2, 2, 0, 0, 2, 2, 2,
361 0, 0, 0, 2, 15, 5, 0, 5,
362 2, 2, 0, 5, 0, 0, 2, 5,
363 5, 0, 0, 0, 2, 16, 17, 2,
364 0, 0, 0, 0, 2, 2, 2, 2,
365 2, 0, 0, 2, 2, 2, 0, 0,
366 0, 2, 0, 18, 18, 0, 0, 0,
370 static const char _indic_syllable_machine_to_state_actions
[] = {
371 0, 0, 0, 0, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0, 0,
373 0, 0, 0, 0, 0, 0, 0, 0,
374 0, 0, 0, 0, 0, 0, 0, 9,
375 0, 0, 0, 0, 0, 0, 0, 0,
376 0, 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 0,
382 0, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0,
384 0, 0, 0, 0, 0, 0, 0, 0,
385 0, 0, 0, 0, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 0, 0,
387 0, 0, 0, 0, 0, 0, 0, 0,
391 static const char _indic_syllable_machine_from_state_actions
[] = {
392 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0, 0, 0,
394 0, 0, 0, 0, 0, 0, 0, 0,
395 0, 0, 0, 0, 0, 0, 0, 10,
396 0, 0, 0, 0, 0, 0, 0, 0,
397 0, 0, 0, 0, 0, 0, 0, 0,
398 0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, 0,
400 0, 0, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0,
402 0, 0, 0, 0, 0, 0, 0, 0,
403 0, 0, 0, 0, 0, 0, 0, 0,
404 0, 0, 0, 0, 0, 0, 0, 0,
405 0, 0, 0, 0, 0, 0, 0, 0,
406 0, 0, 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 0, 0, 0, 0,
412 static const short _indic_syllable_machine_eof_trans
[] = {
413 1, 1, 1, 1, 1, 1, 1, 10,
414 10, 10, 10, 10, 10, 10, 10, 20,
415 20, 27, 20, 27, 20, 20, 30, 30,
416 30, 30, 30, 30, 30, 1, 40, 0,
417 56, 56, 56, 56, 56, 56, 56, 56,
418 56, 56, 56, 56, 56, 56, 56, 56,
419 56, 56, 56, 56, 56, 76, 76, 76,
420 76, 76, 76, 76, 76, 76, 76, 76,
421 76, 76, 76, 76, 76, 76, 76, 76,
422 76, 76, 76, 76, 76, 76, 76, 101,
423 101, 101, 101, 101, 101, 101, 101, 101,
424 101, 101, 101, 101, 101, 101, 101, 101,
425 101, 101, 101, 101, 118, 118, 119, 119,
426 119, 119, 119, 119, 119, 119, 119, 119,
427 119, 119, 119, 119, 119, 119, 119, 119,
428 119, 119, 119, 101, 56, 56, 56, 56,
429 56, 56, 56, 56, 146, 146, 146, 146,
433 static const int indic_syllable_machine_start
= 31;
434 static const int indic_syllable_machine_first_final
= 31;
435 static const int indic_syllable_machine_error
= -1;
437 static const int indic_syllable_machine_en_main
= 31;
440 #line 58 "hb-ot-shaper-indic-machine.rl"
444 #line 118 "hb-ot-shaper-indic-machine.rl"
447 #define found_syllable(syllable_type) \
449 if (0) fprintf (stderr, "syllable %u..%u %s\n", ts, te, #syllable_type); \
450 for (unsigned int i = ts; i < te; i++) \
451 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
453 if (syllable_serial == 16) syllable_serial = 1; \
457 find_syllables_indic (hb_buffer_t
*buffer
)
459 unsigned int p
, pe
, eof
, ts
, te
, act
;
461 hb_glyph_info_t
*info
= buffer
->info
;
463 #line 453 "hb-ot-shaper-indic-machine.hh"
465 cs
= indic_syllable_machine_start
;
471 #line 138 "hb-ot-shaper-indic-machine.rl"
475 pe
= eof
= buffer
->len
;
477 unsigned int syllable_serial
= 1;
479 #line 465 "hb-ot-shaper-indic-machine.hh"
483 const unsigned char *_keys
;
484 const unsigned char *_inds
;
488 switch ( _indic_syllable_machine_from_state_actions
[cs
] ) {
493 #line 477 "hb-ot-shaper-indic-machine.hh"
496 _keys
= _indic_syllable_machine_trans_keys
+ (cs
<<1);
497 _inds
= _indic_syllable_machine_indicies
+ _indic_syllable_machine_index_offsets
[cs
];
499 _slen
= _indic_syllable_machine_key_spans
[cs
];
500 _trans
= _inds
[ _slen
> 0 && _keys
[0] <=( info
[p
].indic_category()) &&
501 ( info
[p
].indic_category()) <= _keys
[1] ?
502 ( info
[p
].indic_category()) - _keys
[0] : _slen
];
505 cs
= _indic_syllable_machine_trans_targs
[_trans
];
507 if ( _indic_syllable_machine_trans_actions
[_trans
] == 0 )
510 switch ( _indic_syllable_machine_trans_actions
[_trans
] ) {
516 #line 114 "hb-ot-shaper-indic-machine.rl"
517 {te
= p
+1;{ found_syllable (indic_non_indic_cluster
); }}
520 #line 109 "hb-ot-shaper-indic-machine.rl"
521 {te
= p
;p
--;{ found_syllable (indic_consonant_syllable
); }}
524 #line 110 "hb-ot-shaper-indic-machine.rl"
525 {te
= p
;p
--;{ found_syllable (indic_vowel_syllable
); }}
528 #line 111 "hb-ot-shaper-indic-machine.rl"
529 {te
= p
;p
--;{ found_syllable (indic_standalone_cluster
); }}
532 #line 112 "hb-ot-shaper-indic-machine.rl"
533 {te
= p
;p
--;{ found_syllable (indic_symbol_cluster
); }}
536 #line 113 "hb-ot-shaper-indic-machine.rl"
537 {te
= p
;p
--;{ found_syllable (indic_broken_cluster
); buffer
->scratch_flags
|= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE
; }}
540 #line 114 "hb-ot-shaper-indic-machine.rl"
541 {te
= p
;p
--;{ found_syllable (indic_non_indic_cluster
); }}
544 #line 109 "hb-ot-shaper-indic-machine.rl"
545 {{p
= ((te
))-1;}{ found_syllable (indic_consonant_syllable
); }}
548 #line 110 "hb-ot-shaper-indic-machine.rl"
549 {{p
= ((te
))-1;}{ found_syllable (indic_vowel_syllable
); }}
552 #line 111 "hb-ot-shaper-indic-machine.rl"
553 {{p
= ((te
))-1;}{ found_syllable (indic_standalone_cluster
); }}
556 #line 112 "hb-ot-shaper-indic-machine.rl"
557 {{p
= ((te
))-1;}{ found_syllable (indic_symbol_cluster
); }}
560 #line 113 "hb-ot-shaper-indic-machine.rl"
561 {{p
= ((te
))-1;}{ found_syllable (indic_broken_cluster
); buffer
->scratch_flags
|= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE
; }}
567 {{p
= ((te
))-1;} found_syllable (indic_consonant_syllable
); }
570 {{p
= ((te
))-1;} found_syllable (indic_broken_cluster
); buffer
->scratch_flags
|= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE
; }
573 {{p
= ((te
))-1;} found_syllable (indic_non_indic_cluster
); }
581 #line 109 "hb-ot-shaper-indic-machine.rl"
587 #line 113 "hb-ot-shaper-indic-machine.rl"
593 #line 114 "hb-ot-shaper-indic-machine.rl"
596 #line 559 "hb-ot-shaper-indic-machine.hh"
600 switch ( _indic_syllable_machine_to_state_actions
[cs
] ) {
605 #line 566 "hb-ot-shaper-indic-machine.hh"
613 if ( _indic_syllable_machine_eof_trans
[cs
] > 0 ) {
614 _trans
= _indic_syllable_machine_eof_trans
[cs
] - 1;
621 #line 146 "hb-ot-shaper-indic-machine.rl"
625 #undef found_syllable
627 #endif /* HB_OT_SHAPER_INDIC_MACHINE_HH */