2 #line 1 "hb-ot-shape-complex-myanmar-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_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
30 #define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH
35 #line 36 "hb-ot-shape-complex-myanmar-machine.hh"
36 static 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, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 5u, 29u,
40 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 29u, 3u, 29u, 3u, 29u,
41 3u, 29u, 3u, 30u, 3u, 29u, 1u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u,
42 3u, 29u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 32u, 8u, 8u,
46 static const char _myanmar_syllable_machine_key_spans[] = {
47 32, 28, 25, 4, 25, 23, 21, 21,
48 27, 27, 27, 27, 16, 27, 27, 27,
49 27, 27, 28, 27, 27, 27, 27, 25,
50 4, 25, 23, 21, 21, 27, 27, 27,
51 27, 28, 27, 32, 27, 27, 27, 27,
52 27, 28, 27, 27, 27, 27, 32, 1
55 static const short _myanmar_syllable_machine_index_offsets[] = {
56 0, 33, 62, 88, 93, 119, 143, 165,
57 187, 215, 243, 271, 299, 316, 344, 372,
58 400, 428, 456, 485, 513, 541, 569, 597,
59 623, 628, 654, 678, 700, 722, 750, 778,
60 806, 834, 863, 891, 924, 952, 980, 1008,
61 1036, 1064, 1093, 1121, 1149, 1177, 1205, 1238
64 static const char _myanmar_syllable_machine_indicies[] = {
65 1, 1, 2, 3, 4, 4, 0, 5,
66 0, 6, 1, 0, 0, 0, 0, 7,
67 0, 8, 9, 0, 10, 11, 12, 13,
68 14, 15, 16, 17, 18, 19, 20, 1,
69 0, 22, 23, 24, 24, 21, 25, 21,
70 26, 21, 21, 21, 21, 21, 21, 21,
71 27, 21, 21, 28, 29, 30, 31, 32,
72 33, 34, 35, 36, 37, 21, 24, 24,
73 21, 25, 21, 21, 21, 21, 21, 21,
74 21, 21, 21, 38, 21, 21, 21, 21,
75 21, 21, 32, 21, 21, 21, 36, 21,
76 24, 24, 21, 25, 21, 24, 24, 21,
77 25, 21, 21, 21, 21, 21, 21, 21,
78 21, 21, 21, 21, 21, 21, 21, 21,
79 21, 32, 21, 21, 21, 36, 21, 39,
80 21, 24, 24, 21, 25, 21, 32, 21,
81 21, 21, 21, 21, 21, 21, 40, 21,
82 21, 21, 21, 21, 21, 32, 21, 24,
83 24, 21, 25, 21, 21, 21, 21, 21,
84 21, 21, 21, 21, 40, 21, 21, 21,
85 21, 21, 21, 32, 21, 24, 24, 21,
86 25, 21, 21, 21, 21, 21, 21, 21,
87 21, 21, 21, 21, 21, 21, 21, 21,
88 21, 32, 21, 22, 21, 24, 24, 21,
89 25, 21, 26, 21, 21, 21, 21, 21,
90 21, 21, 41, 21, 21, 41, 21, 21,
91 21, 32, 42, 21, 21, 36, 21, 22,
92 21, 24, 24, 21, 25, 21, 26, 21,
93 21, 21, 21, 21, 21, 21, 21, 21,
94 21, 21, 21, 21, 21, 32, 21, 21,
95 21, 36, 21, 22, 21, 24, 24, 21,
96 25, 21, 26, 21, 21, 21, 21, 21,
97 21, 21, 41, 21, 21, 21, 21, 21,
98 21, 32, 42, 21, 21, 36, 21, 22,
99 21, 24, 24, 21, 25, 21, 26, 21,
100 21, 21, 21, 21, 21, 21, 21, 21,
101 21, 21, 21, 21, 21, 32, 42, 21,
102 21, 36, 21, 1, 1, 21, 21, 21,
103 21, 21, 21, 21, 21, 21, 21, 21,
104 21, 21, 1, 21, 22, 21, 24, 24,
105 21, 25, 21, 26, 21, 21, 21, 21,
106 21, 21, 21, 27, 21, 21, 28, 29,
107 30, 31, 32, 33, 34, 35, 36, 21,
108 22, 21, 24, 24, 21, 25, 21, 26,
109 21, 21, 21, 21, 21, 21, 21, 43,
110 21, 21, 21, 21, 21, 21, 32, 33,
111 34, 35, 36, 21, 22, 21, 24, 24,
112 21, 25, 21, 26, 21, 21, 21, 21,
113 21, 21, 21, 21, 21, 21, 21, 21,
114 21, 21, 32, 33, 34, 35, 36, 21,
115 22, 21, 24, 24, 21, 25, 21, 26,
116 21, 21, 21, 21, 21, 21, 21, 21,
117 21, 21, 21, 21, 21, 21, 32, 33,
118 34, 21, 36, 21, 22, 21, 24, 24,
119 21, 25, 21, 26, 21, 21, 21, 21,
120 21, 21, 21, 21, 21, 21, 21, 21,
121 21, 21, 32, 21, 34, 21, 36, 21,
122 22, 21, 24, 24, 21, 25, 21, 26,
123 21, 21, 21, 21, 21, 21, 21, 21,
124 21, 21, 21, 21, 21, 21, 32, 33,
125 34, 35, 36, 43, 21, 22, 21, 24,
126 24, 21, 25, 21, 26, 21, 21, 21,
127 21, 21, 21, 21, 43, 21, 21, 28,
128 21, 30, 21, 32, 33, 34, 35, 36,
129 21, 22, 21, 24, 24, 21, 25, 21,
130 26, 21, 21, 21, 21, 21, 21, 21,
131 43, 21, 21, 28, 21, 21, 21, 32,
132 33, 34, 35, 36, 21, 22, 21, 24,
133 24, 21, 25, 21, 26, 21, 21, 21,
134 21, 21, 21, 21, 43, 21, 21, 28,
135 29, 30, 21, 32, 33, 34, 35, 36,
136 21, 22, 23, 24, 24, 21, 25, 21,
137 26, 21, 21, 21, 21, 21, 21, 21,
138 27, 21, 21, 28, 29, 30, 31, 32,
139 33, 34, 35, 36, 21, 3, 3, 44,
140 5, 44, 44, 44, 44, 44, 44, 44,
141 44, 44, 45, 44, 44, 44, 44, 44,
142 44, 14, 44, 44, 44, 18, 44, 3,
143 3, 44, 5, 44, 3, 3, 44, 5,
144 44, 44, 44, 44, 44, 44, 44, 44,
145 44, 44, 44, 44, 44, 44, 44, 44,
146 14, 44, 44, 44, 18, 44, 46, 44,
147 3, 3, 44, 5, 44, 14, 44, 44,
148 44, 44, 44, 44, 44, 47, 44, 44,
149 44, 44, 44, 44, 14, 44, 3, 3,
150 44, 5, 44, 44, 44, 44, 44, 44,
151 44, 44, 44, 47, 44, 44, 44, 44,
152 44, 44, 14, 44, 3, 3, 44, 5,
153 44, 44, 44, 44, 44, 44, 44, 44,
154 44, 44, 44, 44, 44, 44, 44, 44,
155 14, 44, 2, 44, 3, 3, 44, 5,
156 44, 6, 44, 44, 44, 44, 44, 44,
157 44, 48, 44, 44, 48, 44, 44, 44,
158 14, 49, 44, 44, 18, 44, 2, 44,
159 3, 3, 44, 5, 44, 6, 44, 44,
160 44, 44, 44, 44, 44, 44, 44, 44,
161 44, 44, 44, 44, 14, 44, 44, 44,
162 18, 44, 2, 44, 3, 3, 44, 5,
163 44, 6, 44, 44, 44, 44, 44, 44,
164 44, 48, 44, 44, 44, 44, 44, 44,
165 14, 49, 44, 44, 18, 44, 2, 44,
166 3, 3, 44, 5, 44, 6, 44, 44,
167 44, 44, 44, 44, 44, 44, 44, 44,
168 44, 44, 44, 44, 14, 49, 44, 44,
169 18, 44, 22, 23, 24, 24, 21, 25,
170 21, 26, 21, 21, 21, 21, 21, 21,
171 21, 50, 21, 21, 28, 29, 30, 31,
172 32, 33, 34, 35, 36, 37, 21, 22,
173 51, 24, 24, 21, 25, 21, 26, 21,
174 21, 21, 21, 21, 21, 21, 27, 21,
175 21, 28, 29, 30, 31, 32, 33, 34,
176 35, 36, 21, 1, 1, 2, 3, 3,
177 3, 44, 5, 44, 6, 1, 44, 44,
178 44, 44, 1, 44, 8, 44, 44, 10,
179 11, 12, 13, 14, 15, 16, 17, 18,
180 19, 44, 1, 44, 2, 44, 3, 3,
181 44, 5, 44, 6, 44, 44, 44, 44,
182 44, 44, 44, 8, 44, 44, 10, 11,
183 12, 13, 14, 15, 16, 17, 18, 44,
184 2, 44, 3, 3, 44, 5, 44, 6,
185 44, 44, 44, 44, 44, 44, 44, 52,
186 44, 44, 44, 44, 44, 44, 14, 15,
187 16, 17, 18, 44, 2, 44, 3, 3,
188 44, 5, 44, 6, 44, 44, 44, 44,
189 44, 44, 44, 44, 44, 44, 44, 44,
190 44, 44, 14, 15, 16, 17, 18, 44,
191 2, 44, 3, 3, 44, 5, 44, 6,
192 44, 44, 44, 44, 44, 44, 44, 44,
193 44, 44, 44, 44, 44, 44, 14, 15,
194 16, 44, 18, 44, 2, 44, 3, 3,
195 44, 5, 44, 6, 44, 44, 44, 44,
196 44, 44, 44, 44, 44, 44, 44, 44,
197 44, 44, 14, 44, 16, 44, 18, 44,
198 2, 44, 3, 3, 44, 5, 44, 6,
199 44, 44, 44, 44, 44, 44, 44, 44,
200 44, 44, 44, 44, 44, 44, 14, 15,
201 16, 17, 18, 52, 44, 2, 44, 3,
202 3, 44, 5, 44, 6, 44, 44, 44,
203 44, 44, 44, 44, 52, 44, 44, 10,
204 44, 12, 44, 14, 15, 16, 17, 18,
205 44, 2, 44, 3, 3, 44, 5, 44,
206 6, 44, 44, 44, 44, 44, 44, 44,
207 52, 44, 44, 10, 44, 44, 44, 14,
208 15, 16, 17, 18, 44, 2, 44, 3,
209 3, 44, 5, 44, 6, 44, 44, 44,
210 44, 44, 44, 44, 52, 44, 44, 10,
211 11, 12, 44, 14, 15, 16, 17, 18,
212 44, 2, 3, 3, 3, 44, 5, 44,
213 6, 44, 44, 44, 44, 44, 44, 44,
214 8, 44, 44, 10, 11, 12, 13, 14,
215 15, 16, 17, 18, 44, 1, 1, 53,
216 53, 53, 53, 53, 53, 53, 53, 1,
217 53, 53, 53, 53, 1, 53, 53, 53,
218 53, 53, 53, 53, 53, 53, 53, 53,
219 53, 53, 53, 53, 1, 53, 54, 53,
223 static const char _myanmar_syllable_machine_trans_targs[] = {
224 0, 1, 23, 0, 0, 24, 30, 33,
225 36, 46, 37, 42, 43, 44, 26, 39,
226 40, 41, 29, 45, 47, 0, 2, 12,
227 0, 3, 9, 13, 14, 19, 20, 21,
228 5, 16, 17, 18, 8, 22, 4, 6,
229 7, 10, 11, 15, 0, 25, 27, 28,
230 31, 32, 34, 35, 38, 0, 0
233 static const char _myanmar_syllable_machine_trans_actions[] = {
234 3, 0, 0, 4, 5, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 6, 0, 0,
237 7, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 0, 0, 0, 8, 0, 0, 0,
243 static const char _myanmar_syllable_machine_to_state_actions[] = {
244 1, 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, 0, 0
252 static const char _myanmar_syllable_machine_from_state_actions[] = {
253 2, 0, 0, 0, 0, 0, 0, 0,
254 0, 0, 0, 0, 0, 0, 0, 0,
255 0, 0, 0, 0, 0, 0, 0, 0,
256 0, 0, 0, 0, 0, 0, 0, 0,
257 0, 0, 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0, 0, 0, 0
261 static const short _myanmar_syllable_machine_eof_trans[] = {
262 0, 22, 22, 22, 22, 22, 22, 22,
263 22, 22, 22, 22, 22, 22, 22, 22,
264 22, 22, 22, 22, 22, 22, 22, 45,
265 45, 45, 45, 45, 45, 45, 45, 45,
266 45, 22, 22, 45, 45, 45, 45, 45,
267 45, 45, 45, 45, 45, 45, 54, 54
270 static const int myanmar_syllable_machine_start = 0;
271 static const int myanmar_syllable_machine_first_final = 0;
272 static const int myanmar_syllable_machine_error = -1;
274 static const int myanmar_syllable_machine_en_main = 0;
277 #line 36 "hb-ot-shape-complex-myanmar-machine.rl"
281 #line 94 "hb-ot-shape-complex-myanmar-machine.rl"
284 #define found_syllable(syllable_type) \
286 if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
287 for (unsigned int i = ts; i < te; i++) \
288 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
290 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
294 find_syllables (hb_buffer_t *buffer)
296 unsigned int p, pe, eof, ts, te, act HB_UNUSED;
298 hb_glyph_info_t *info = buffer->info;
300 #line 301 "hb-ot-shape-complex-myanmar-machine.hh"
302 cs = myanmar_syllable_machine_start;
308 #line 114 "hb-ot-shape-complex-myanmar-machine.rl"
312 pe = eof = buffer->len;
314 unsigned int syllable_serial = 1;
316 #line 317 "hb-ot-shape-complex-myanmar-machine.hh"
320 const unsigned char *_keys;
325 switch ( _myanmar_syllable_machine_from_state_actions[cs] ) {
330 #line 331 "hb-ot-shape-complex-myanmar-machine.hh"
333 _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
334 _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs];
336 _slen = _myanmar_syllable_machine_key_spans[cs];
337 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) &&
338 ( info[p].myanmar_category()) <= _keys[1] ?
339 ( info[p].myanmar_category()) - _keys[0] : _slen ];
342 cs = _myanmar_syllable_machine_trans_targs[_trans];
344 if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 )
347 switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
349 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
350 {te = p+1;{ found_syllable (consonant_syllable); }}
353 #line 87 "hb-ot-shape-complex-myanmar-machine.rl"
354 {te = p+1;{ found_syllable (non_myanmar_cluster); }}
357 #line 88 "hb-ot-shape-complex-myanmar-machine.rl"
358 {te = p+1;{ found_syllable (punctuation_cluster); }}
361 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
362 {te = p+1;{ found_syllable (broken_cluster); }}
365 #line 90 "hb-ot-shape-complex-myanmar-machine.rl"
366 {te = p+1;{ found_syllable (non_myanmar_cluster); }}
369 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
370 {te = p;p--;{ found_syllable (consonant_syllable); }}
373 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
374 {te = p;p--;{ found_syllable (broken_cluster); }}
377 #line 90 "hb-ot-shape-complex-myanmar-machine.rl"
378 {te = p;p--;{ found_syllable (non_myanmar_cluster); }}
380 #line 381 "hb-ot-shape-complex-myanmar-machine.hh"
384 switch ( _myanmar_syllable_machine_to_state_actions[cs] ) {
389 #line 390 "hb-ot-shape-complex-myanmar-machine.hh"
397 if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) {
398 _trans = _myanmar_syllable_machine_eof_trans[cs] - 1;
405 #line 122 "hb-ot-shape-complex-myanmar-machine.rl"
409 #undef found_syllable
411 #endif /* HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH */