1
2#line 1 "hb-ot-shape-complex-myanmar-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_MYANMAR_MACHINE_HH
30#define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
31
32#include "hb-private.hh"
33
34
35#line 36 "hb-ot-shape-complex-myanmar-machine.hh"
36static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
37 1u, 32u, 3u, 30u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u,
38 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 16u, 3u, 29u, 3u, 29u, 3u, 29u,
39 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 5u, 29u, 5u, 8u,
40 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u,
41 3u, 30u, 3u, 29u, 1u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u,
42 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 32u, 8u, 8u, 0
43};
44
45static const char _myanmar_syllable_machine_key_spans[] = {
46 32, 28, 25, 4, 25, 23, 21, 21,
47 27, 27, 27, 27, 16, 27, 27, 27,
48 27, 27, 27, 27, 27, 27, 25, 4,
49 25, 23, 21, 21, 27, 27, 27, 27,
50 28, 27, 32, 27, 27, 27, 27, 27,
51 27, 27, 27, 27, 32, 1
52};
53
54static const short _myanmar_syllable_machine_index_offsets[] = {
55 0, 33, 62, 88, 93, 119, 143, 165,
56 187, 215, 243, 271, 299, 316, 344, 372,
57 400, 428, 456, 484, 512, 540, 568, 594,
58 599, 625, 649, 671, 693, 721, 749, 777,
59 805, 834, 862, 895, 923, 951, 979, 1007,
60 1035, 1063, 1091, 1119, 1147, 1180
61};
62
63static const char _myanmar_syllable_machine_indicies[] = {
64 1, 1, 2, 3, 4, 4, 0, 5,
65 0, 6, 1, 0, 0, 0, 0, 7,
66 0, 8, 9, 0, 10, 11, 12, 13,
67 14, 15, 16, 17, 18, 19, 20, 1,
68 0, 22, 23, 24, 24, 21, 25, 21,
69 26, 21, 21, 21, 21, 21, 21, 21,
70 27, 21, 21, 28, 29, 30, 31, 32,
71 33, 34, 35, 36, 37, 21, 24, 24,
72 21, 25, 21, 21, 21, 21, 21, 21,
73 21, 21, 21, 38, 21, 21, 21, 21,
74 21, 21, 32, 21, 21, 21, 36, 21,
75 24, 24, 21, 25, 21, 24, 24, 21,
76 25, 21, 21, 21, 21, 21, 21, 21,
77 21, 21, 21, 21, 21, 21, 21, 21,
78 21, 32, 21, 21, 21, 36, 21, 39,
79 21, 24, 24, 21, 25, 21, 32, 21,
80 21, 21, 21, 21, 21, 21, 40, 21,
81 21, 21, 21, 21, 21, 32, 21, 24,
82 24, 21, 25, 21, 21, 21, 21, 21,
83 21, 21, 21, 21, 40, 21, 21, 21,
84 21, 21, 21, 32, 21, 24, 24, 21,
85 25, 21, 21, 21, 21, 21, 21, 21,
86 21, 21, 21, 21, 21, 21, 21, 21,
87 21, 32, 21, 22, 21, 24, 24, 21,
88 25, 21, 26, 21, 21, 21, 21, 21,
89 21, 21, 41, 21, 21, 41, 21, 21,
90 21, 32, 42, 21, 21, 36, 21, 22,
91 21, 24, 24, 21, 25, 21, 26, 21,
92 21, 21, 21, 21, 21, 21, 21, 21,
93 21, 21, 21, 21, 21, 32, 21, 21,
94 21, 36, 21, 22, 21, 24, 24, 21,
95 25, 21, 26, 21, 21, 21, 21, 21,
96 21, 21, 41, 21, 21, 21, 21, 21,
97 21, 32, 42, 21, 21, 36, 21, 22,
98 21, 24, 24, 21, 25, 21, 26, 21,
99 21, 21, 21, 21, 21, 21, 21, 21,
100 21, 21, 21, 21, 21, 32, 42, 21,
101 21, 36, 21, 1, 1, 21, 21, 21,
102 21, 21, 21, 21, 21, 21, 21, 21,
103 21, 21, 1, 21, 22, 21, 24, 24,
104 21, 25, 21, 26, 21, 21, 21, 21,
105 21, 21, 21, 27, 21, 21, 28, 29,
106 30, 31, 32, 33, 34, 35, 36, 21,
107 22, 21, 24, 24, 21, 25, 21, 26,
108 21, 21, 21, 21, 21, 21, 21, 35,
109 21, 21, 21, 21, 21, 21, 32, 33,
110 34, 35, 36, 21, 22, 21, 24, 24,
111 21, 25, 21, 26, 21, 21, 21, 21,
112 21, 21, 21, 21, 21, 21, 21, 21,
113 21, 21, 32, 33, 34, 35, 36, 21,
114 22, 21, 24, 24, 21, 25, 21, 26,
115 21, 21, 21, 21, 21, 21, 21, 21,
116 21, 21, 21, 21, 21, 21, 32, 33,
117 34, 21, 36, 21, 22, 21, 24, 24,
118 21, 25, 21, 26, 21, 21, 21, 21,
119 21, 21, 21, 21, 21, 21, 21, 21,
120 21, 21, 32, 21, 34, 21, 36, 21,
121 22, 21, 24, 24, 21, 25, 21, 26,
122 21, 21, 21, 21, 21, 21, 21, 35,
123 21, 21, 28, 21, 30, 21, 32, 33,
124 34, 35, 36, 21, 22, 21, 24, 24,
125 21, 25, 21, 26, 21, 21, 21, 21,
126 21, 21, 21, 35, 21, 21, 28, 21,
127 21, 21, 32, 33, 34, 35, 36, 21,
128 22, 21, 24, 24, 21, 25, 21, 26,
129 21, 21, 21, 21, 21, 21, 21, 35,
130 21, 21, 28, 29, 30, 21, 32, 33,
131 34, 35, 36, 21, 22, 23, 24, 24,
132 21, 25, 21, 26, 21, 21, 21, 21,
133 21, 21, 21, 27, 21, 21, 28, 29,
134 30, 31, 32, 33, 34, 35, 36, 21,
135 3, 3, 43, 5, 43, 43, 43, 43,
136 43, 43, 43, 43, 43, 44, 43, 43,
137 43, 43, 43, 43, 14, 43, 43, 43,
138 18, 43, 3, 3, 43, 5, 43, 3,
139 3, 43, 5, 43, 43, 43, 43, 43,
140 43, 43, 43, 43, 43, 43, 43, 43,
141 43, 43, 43, 14, 43, 43, 43, 18,
142 43, 45, 43, 3, 3, 43, 5, 43,
143 14, 43, 43, 43, 43, 43, 43, 43,
144 46, 43, 43, 43, 43, 43, 43, 14,
145 43, 3, 3, 43, 5, 43, 43, 43,
146 43, 43, 43, 43, 43, 43, 46, 43,
147 43, 43, 43, 43, 43, 14, 43, 3,
148 3, 43, 5, 43, 43, 43, 43, 43,
149 43, 43, 43, 43, 43, 43, 43, 43,
150 43, 43, 43, 14, 43, 2, 43, 3,
151 3, 43, 5, 43, 6, 43, 43, 43,
152 43, 43, 43, 43, 47, 43, 43, 47,
153 43, 43, 43, 14, 48, 43, 43, 18,
154 43, 2, 43, 3, 3, 43, 5, 43,
155 6, 43, 43, 43, 43, 43, 43, 43,
156 43, 43, 43, 43, 43, 43, 43, 14,
157 43, 43, 43, 18, 43, 2, 43, 3,
158 3, 43, 5, 43, 6, 43, 43, 43,
159 43, 43, 43, 43, 47, 43, 43, 43,
160 43, 43, 43, 14, 48, 43, 43, 18,
161 43, 2, 43, 3, 3, 43, 5, 43,
162 6, 43, 43, 43, 43, 43, 43, 43,
163 43, 43, 43, 43, 43, 43, 43, 14,
164 48, 43, 43, 18, 43, 22, 23, 24,
165 24, 21, 25, 21, 26, 21, 21, 21,
166 21, 21, 21, 21, 49, 21, 21, 28,
167 29, 30, 31, 32, 33, 34, 35, 36,
168 37, 21, 22, 50, 24, 24, 21, 25,
169 21, 26, 21, 21, 21, 21, 21, 21,
170 21, 27, 21, 21, 28, 29, 30, 31,
171 32, 33, 34, 35, 36, 21, 1, 1,
172 2, 3, 3, 3, 43, 5, 43, 6,
173 1, 43, 43, 43, 43, 1, 43, 8,
174 43, 43, 10, 11, 12, 13, 14, 15,
175 16, 17, 18, 19, 43, 1, 43, 2,
176 43, 3, 3, 43, 5, 43, 6, 43,
177 43, 43, 43, 43, 43, 43, 8, 43,
178 43, 10, 11, 12, 13, 14, 15, 16,
179 17, 18, 43, 2, 43, 3, 3, 43,
180 5, 43, 6, 43, 43, 43, 43, 43,
181 43, 43, 17, 43, 43, 43, 43, 43,
182 43, 14, 15, 16, 17, 18, 43, 2,
183 43, 3, 3, 43, 5, 43, 6, 43,
184 43, 43, 43, 43, 43, 43, 43, 43,
185 43, 43, 43, 43, 43, 14, 15, 16,
186 17, 18, 43, 2, 43, 3, 3, 43,
187 5, 43, 6, 43, 43, 43, 43, 43,
188 43, 43, 43, 43, 43, 43, 43, 43,
189 43, 14, 15, 16, 43, 18, 43, 2,
190 43, 3, 3, 43, 5, 43, 6, 43,
191 43, 43, 43, 43, 43, 43, 43, 43,
192 43, 43, 43, 43, 43, 14, 43, 16,
193 43, 18, 43, 2, 43, 3, 3, 43,
194 5, 43, 6, 43, 43, 43, 43, 43,
195 43, 43, 17, 43, 43, 10, 43, 12,
196 43, 14, 15, 16, 17, 18, 43, 2,
197 43, 3, 3, 43, 5, 43, 6, 43,
198 43, 43, 43, 43, 43, 43, 17, 43,
199 43, 10, 43, 43, 43, 14, 15, 16,
200 17, 18, 43, 2, 43, 3, 3, 43,
201 5, 43, 6, 43, 43, 43, 43, 43,
202 43, 43, 17, 43, 43, 10, 11, 12,
203 43, 14, 15, 16, 17, 18, 43, 2,
204 3, 3, 3, 43, 5, 43, 6, 43,
205 43, 43, 43, 43, 43, 43, 8, 43,
206 43, 10, 11, 12, 13, 14, 15, 16,
207 17, 18, 43, 1, 1, 51, 51, 51,
208 51, 51, 51, 51, 51, 1, 51, 51,
209 51, 51, 1, 51, 51, 51, 51, 51,
210 51, 51, 51, 51, 51, 51, 51, 51,
211 51, 51, 1, 51, 52, 51, 0
212};
213
214static const char _myanmar_syllable_machine_trans_targs[] = {
215 0, 1, 22, 0, 0, 23, 29, 32,
216 35, 44, 36, 40, 41, 42, 25, 38,
217 39, 37, 28, 43, 45, 0, 2, 12,
218 0, 3, 9, 13, 14, 18, 19, 20,
219 5, 16, 17, 15, 8, 21, 4, 6,
220 7, 10, 11, 0, 24, 26, 27, 30,
221 31, 33, 34, 0, 0
222};
223
224static const char _myanmar_syllable_machine_trans_actions[] = {
225 3, 0, 0, 4, 5, 0, 0, 0,
226 0, 0, 0, 0, 0, 0, 0, 0,
227 0, 0, 0, 0, 0, 6, 0, 0,
228 7, 0, 0, 0, 0, 0, 0, 0,
229 0, 0, 0, 0, 0, 0, 0, 0,
230 0, 0, 0, 8, 0, 0, 0, 0,
231 0, 0, 0, 9, 10
232};
233
234static const char _myanmar_syllable_machine_to_state_actions[] = {
235 1, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 0, 0, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 0
241};
242
243static const char _myanmar_syllable_machine_from_state_actions[] = {
244 2, 0, 0, 0, 0, 0, 0, 0,
245 0, 0, 0, 0, 0, 0, 0, 0,
246 0, 0, 0, 0, 0, 0, 0, 0,
247 0, 0, 0, 0, 0, 0, 0, 0,
248 0, 0, 0, 0, 0, 0, 0, 0,
249 0, 0, 0, 0, 0, 0
250};
251
252static const short _myanmar_syllable_machine_eof_trans[] = {
253 0, 22, 22, 22, 22, 22, 22, 22,
254 22, 22, 22, 22, 22, 22, 22, 22,
255 22, 22, 22, 22, 22, 22, 44, 44,
256 44, 44, 44, 44, 44, 44, 44, 44,
257 22, 22, 44, 44, 44, 44, 44, 44,
258 44, 44, 44, 44, 52, 52
259};
260
261static const int myanmar_syllable_machine_start = 0;
262static const int myanmar_syllable_machine_first_final = 0;
263static const int myanmar_syllable_machine_error = -1;
264
265static const int myanmar_syllable_machine_en_main = 0;
266
267
268#line 36 "hb-ot-shape-complex-myanmar-machine.rl"
269
270
271
272#line 94 "hb-ot-shape-complex-myanmar-machine.rl"
273
274
275#define found_syllable(syllable_type) \
276 HB_STMT_START { \
277 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
278 for (unsigned int i = last; i < p+1; i++) \
279 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
280 last = p+1; \
281 syllable_serial++; \
282 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
283 } HB_STMT_END
284
285static void
286find_syllables (hb_buffer_t *buffer)
287{
288 unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
289 int cs;
290 hb_glyph_info_t *info = buffer->info;
291
292#line 293 "hb-ot-shape-complex-myanmar-machine.hh"
293 {
294 cs = myanmar_syllable_machine_start;
295 ts = 0;
296 te = 0;
297 act = 0;
298 }
299
300#line 115 "hb-ot-shape-complex-myanmar-machine.rl"
301
302
303 p = 0;
304 pe = eof = buffer->len;
305
306 unsigned int last = 0;
307 unsigned int syllable_serial = 1;
308
309#line 310 "hb-ot-shape-complex-myanmar-machine.hh"
310 {
311 int _slen;
312 int _trans;
313 const unsigned char *_keys;
314 const char *_inds;
315 if ( p == pe )
316 goto _test_eof;
317_resume:
318 switch ( _myanmar_syllable_machine_from_state_actions[cs] ) {
319 case 2:
320#line 1 "NONE"
321 {ts = p;}
322 break;
323#line 324 "hb-ot-shape-complex-myanmar-machine.hh"
324 }
325
326 _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
327 _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs];
328
329 _slen = _myanmar_syllable_machine_key_spans[cs];
330 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) &&
331 ( info[p].myanmar_category()) <= _keys[1] ?
332 ( info[p].myanmar_category()) - _keys[0] : _slen ];
333
334_eof_trans:
335 cs = _myanmar_syllable_machine_trans_targs[_trans];
336
337 if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 )
338 goto _again;
339
340 switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
341 case 7:
342#line 86 "hb-ot-shape-complex-myanmar-machine.rl"
343 {te = p+1;{ found_syllable (consonant_syllable); }}
344 break;
345 case 5:
346#line 87 "hb-ot-shape-complex-myanmar-machine.rl"
347 {te = p+1;{ found_syllable (non_myanmar_cluster); }}
348 break;
349 case 10:
350#line 88 "hb-ot-shape-complex-myanmar-machine.rl"
351 {te = p+1;{ found_syllable (punctuation_cluster); }}
352 break;
353 case 4:
354#line 89 "hb-ot-shape-complex-myanmar-machine.rl"
355 {te = p+1;{ found_syllable (broken_cluster); }}
356 break;
357 case 3:
358#line 90 "hb-ot-shape-complex-myanmar-machine.rl"
359 {te = p+1;{ found_syllable (non_myanmar_cluster); }}
360 break;
361 case 6:
362#line 86 "hb-ot-shape-complex-myanmar-machine.rl"
363 {te = p;p--;{ found_syllable (consonant_syllable); }}
364 break;
365 case 8:
366#line 89 "hb-ot-shape-complex-myanmar-machine.rl"
367 {te = p;p--;{ found_syllable (broken_cluster); }}
368 break;
369 case 9:
370#line 90 "hb-ot-shape-complex-myanmar-machine.rl"
371 {te = p;p--;{ found_syllable (non_myanmar_cluster); }}
372 break;
373#line 374 "hb-ot-shape-complex-myanmar-machine.hh"
374 }
375
376_again:
377 switch ( _myanmar_syllable_machine_to_state_actions[cs] ) {
378 case 1:
379#line 1 "NONE"
380 {ts = 0;}
381 break;
382#line 383 "hb-ot-shape-complex-myanmar-machine.hh"
383 }
384
385 if ( ++p != pe )
386 goto _resume;
387 _test_eof: {}
388 if ( p == eof )
389 {
390 if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) {
391 _trans = _myanmar_syllable_machine_eof_trans[cs] - 1;
392 goto _eof_trans;
393 }
394 }
395
396 }
397
398#line 124 "hb-ot-shape-complex-myanmar-machine.rl"
399
400}
401
402#undef found_syllable
403
404#endif /* HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH */
405

source code of qtbase/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-myanmar-machine.hh