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
32 #include "hb-private.hh"
35 #line 36 "hb-ot-shape-complex-myanmar-machine.hh"
36 static const unsigned char _myanmar_syllable_machine_trans_keys
[] = {
37 1u, 31u, 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, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u,
42 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 8u, 8u, 0
45 static const char _myanmar_syllable_machine_key_spans
[] = {
46 31, 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, 30, 27, 27, 27, 27, 27,
54 static const short _myanmar_syllable_machine_index_offsets
[] = {
55 0, 32, 61, 87, 92, 118, 142, 164,
56 186, 214, 242, 270, 298, 315, 343, 371,
57 399, 427, 455, 483, 511, 539, 567, 593,
58 598, 624, 648, 670, 692, 720, 748, 776,
59 804, 833, 861, 892, 920, 948, 976, 1004,
60 1032, 1060, 1088, 1116, 1144
63 static 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, 1, 0, 9, 10, 11, 12,
67 13, 14, 15, 16, 17, 18, 19, 0,
68 21, 22, 23, 23, 20, 24, 20, 25,
69 20, 20, 20, 20, 20, 20, 20, 26,
70 20, 20, 27, 28, 29, 30, 31, 32,
71 33, 34, 35, 36, 20, 23, 23, 20,
72 24, 20, 20, 20, 20, 20, 20, 20,
73 20, 20, 37, 20, 20, 20, 20, 20,
74 20, 31, 20, 20, 20, 35, 20, 23,
75 23, 20, 24, 20, 23, 23, 20, 24,
76 20, 20, 20, 20, 20, 20, 20, 20,
77 20, 20, 20, 20, 20, 20, 20, 20,
78 31, 20, 20, 20, 35, 20, 38, 20,
79 23, 23, 20, 24, 20, 31, 20, 20,
80 20, 20, 20, 20, 20, 39, 20, 20,
81 20, 20, 20, 20, 31, 20, 23, 23,
82 20, 24, 20, 20, 20, 20, 20, 20,
83 20, 20, 20, 39, 20, 20, 20, 20,
84 20, 20, 31, 20, 23, 23, 20, 24,
85 20, 20, 20, 20, 20, 20, 20, 20,
86 20, 20, 20, 20, 20, 20, 20, 20,
87 31, 20, 21, 20, 23, 23, 20, 24,
88 20, 25, 20, 20, 20, 20, 20, 20,
89 20, 40, 20, 20, 40, 20, 20, 20,
90 31, 41, 20, 20, 35, 20, 21, 20,
91 23, 23, 20, 24, 20, 25, 20, 20,
92 20, 20, 20, 20, 20, 20, 20, 20,
93 20, 20, 20, 20, 31, 20, 20, 20,
94 35, 20, 21, 20, 23, 23, 20, 24,
95 20, 25, 20, 20, 20, 20, 20, 20,
96 20, 40, 20, 20, 20, 20, 20, 20,
97 31, 41, 20, 20, 35, 20, 21, 20,
98 23, 23, 20, 24, 20, 25, 20, 20,
99 20, 20, 20, 20, 20, 20, 20, 20,
100 20, 20, 20, 20, 31, 41, 20, 20,
101 35, 20, 1, 1, 20, 20, 20, 20,
102 20, 20, 20, 20, 20, 20, 20, 20,
103 20, 1, 20, 21, 20, 23, 23, 20,
104 24, 20, 25, 20, 20, 20, 20, 20,
105 20, 20, 26, 20, 20, 27, 28, 29,
106 30, 31, 32, 33, 34, 35, 20, 21,
107 20, 23, 23, 20, 24, 20, 25, 20,
108 20, 20, 20, 20, 20, 20, 34, 20,
109 20, 20, 20, 20, 20, 31, 32, 33,
110 34, 35, 20, 21, 20, 23, 23, 20,
111 24, 20, 25, 20, 20, 20, 20, 20,
112 20, 20, 20, 20, 20, 20, 20, 20,
113 20, 31, 32, 33, 34, 35, 20, 21,
114 20, 23, 23, 20, 24, 20, 25, 20,
115 20, 20, 20, 20, 20, 20, 20, 20,
116 20, 20, 20, 20, 20, 31, 32, 33,
117 20, 35, 20, 21, 20, 23, 23, 20,
118 24, 20, 25, 20, 20, 20, 20, 20,
119 20, 20, 20, 20, 20, 20, 20, 20,
120 20, 31, 20, 33, 20, 35, 20, 21,
121 20, 23, 23, 20, 24, 20, 25, 20,
122 20, 20, 20, 20, 20, 20, 34, 20,
123 20, 27, 20, 29, 20, 31, 32, 33,
124 34, 35, 20, 21, 20, 23, 23, 20,
125 24, 20, 25, 20, 20, 20, 20, 20,
126 20, 20, 34, 20, 20, 27, 20, 20,
127 20, 31, 32, 33, 34, 35, 20, 21,
128 20, 23, 23, 20, 24, 20, 25, 20,
129 20, 20, 20, 20, 20, 20, 34, 20,
130 20, 27, 28, 29, 20, 31, 32, 33,
131 34, 35, 20, 21, 22, 23, 23, 20,
132 24, 20, 25, 20, 20, 20, 20, 20,
133 20, 20, 26, 20, 20, 27, 28, 29,
134 30, 31, 32, 33, 34, 35, 20, 3,
135 3, 42, 5, 42, 42, 42, 42, 42,
136 42, 42, 42, 42, 43, 42, 42, 42,
137 42, 42, 42, 13, 42, 42, 42, 17,
138 42, 3, 3, 42, 5, 42, 3, 3,
139 42, 5, 42, 42, 42, 42, 42, 42,
140 42, 42, 42, 42, 42, 42, 42, 42,
141 42, 42, 13, 42, 42, 42, 17, 42,
142 44, 42, 3, 3, 42, 5, 42, 13,
143 42, 42, 42, 42, 42, 42, 42, 45,
144 42, 42, 42, 42, 42, 42, 13, 42,
145 3, 3, 42, 5, 42, 42, 42, 42,
146 42, 42, 42, 42, 42, 45, 42, 42,
147 42, 42, 42, 42, 13, 42, 3, 3,
148 42, 5, 42, 42, 42, 42, 42, 42,
149 42, 42, 42, 42, 42, 42, 42, 42,
150 42, 42, 13, 42, 2, 42, 3, 3,
151 42, 5, 42, 6, 42, 42, 42, 42,
152 42, 42, 42, 46, 42, 42, 46, 42,
153 42, 42, 13, 47, 42, 42, 17, 42,
154 2, 42, 3, 3, 42, 5, 42, 6,
155 42, 42, 42, 42, 42, 42, 42, 42,
156 42, 42, 42, 42, 42, 42, 13, 42,
157 42, 42, 17, 42, 2, 42, 3, 3,
158 42, 5, 42, 6, 42, 42, 42, 42,
159 42, 42, 42, 46, 42, 42, 42, 42,
160 42, 42, 13, 47, 42, 42, 17, 42,
161 2, 42, 3, 3, 42, 5, 42, 6,
162 42, 42, 42, 42, 42, 42, 42, 42,
163 42, 42, 42, 42, 42, 42, 13, 47,
164 42, 42, 17, 42, 21, 22, 23, 23,
165 20, 24, 20, 25, 20, 20, 20, 20,
166 20, 20, 20, 48, 20, 20, 27, 28,
167 29, 30, 31, 32, 33, 34, 35, 36,
168 20, 21, 49, 23, 23, 20, 24, 20,
169 25, 20, 20, 20, 20, 20, 20, 20,
170 26, 20, 20, 27, 28, 29, 30, 31,
171 32, 33, 34, 35, 20, 1, 1, 2,
172 3, 3, 3, 42, 5, 42, 6, 1,
173 42, 42, 42, 42, 1, 42, 8, 1,
174 42, 9, 10, 11, 12, 13, 14, 15,
175 16, 17, 18, 42, 2, 42, 3, 3,
176 42, 5, 42, 6, 42, 42, 42, 42,
177 42, 42, 42, 8, 42, 42, 9, 10,
178 11, 12, 13, 14, 15, 16, 17, 42,
179 2, 42, 3, 3, 42, 5, 42, 6,
180 42, 42, 42, 42, 42, 42, 42, 16,
181 42, 42, 42, 42, 42, 42, 13, 14,
182 15, 16, 17, 42, 2, 42, 3, 3,
183 42, 5, 42, 6, 42, 42, 42, 42,
184 42, 42, 42, 42, 42, 42, 42, 42,
185 42, 42, 13, 14, 15, 16, 17, 42,
186 2, 42, 3, 3, 42, 5, 42, 6,
187 42, 42, 42, 42, 42, 42, 42, 42,
188 42, 42, 42, 42, 42, 42, 13, 14,
189 15, 42, 17, 42, 2, 42, 3, 3,
190 42, 5, 42, 6, 42, 42, 42, 42,
191 42, 42, 42, 42, 42, 42, 42, 42,
192 42, 42, 13, 42, 15, 42, 17, 42,
193 2, 42, 3, 3, 42, 5, 42, 6,
194 42, 42, 42, 42, 42, 42, 42, 16,
195 42, 42, 9, 42, 11, 42, 13, 14,
196 15, 16, 17, 42, 2, 42, 3, 3,
197 42, 5, 42, 6, 42, 42, 42, 42,
198 42, 42, 42, 16, 42, 42, 9, 42,
199 42, 42, 13, 14, 15, 16, 17, 42,
200 2, 42, 3, 3, 42, 5, 42, 6,
201 42, 42, 42, 42, 42, 42, 42, 16,
202 42, 42, 9, 10, 11, 42, 13, 14,
203 15, 16, 17, 42, 2, 3, 3, 3,
204 42, 5, 42, 6, 42, 42, 42, 42,
205 42, 42, 42, 8, 42, 42, 9, 10,
206 11, 12, 13, 14, 15, 16, 17, 42,
210 static const char _myanmar_syllable_machine_trans_targs
[] = {
211 0, 1, 22, 0, 0, 23, 29, 32,
212 35, 36, 40, 41, 42, 25, 38, 39,
213 37, 28, 43, 44, 0, 2, 12, 0,
214 3, 9, 13, 14, 18, 19, 20, 5,
215 16, 17, 15, 8, 21, 4, 6, 7,
216 10, 11, 0, 24, 26, 27, 30, 31,
220 static const char _myanmar_syllable_machine_trans_actions
[] = {
221 3, 0, 0, 4, 5, 0, 0, 0,
222 0, 0, 0, 0, 0, 0, 0, 0,
223 0, 0, 0, 0, 6, 0, 0, 7,
224 0, 0, 0, 0, 0, 0, 0, 0,
225 0, 0, 0, 0, 0, 0, 0, 0,
226 0, 0, 8, 0, 0, 0, 0, 0,
230 static const char _myanmar_syllable_machine_to_state_actions
[] = {
231 1, 0, 0, 0, 0, 0, 0, 0,
232 0, 0, 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0, 0,
239 static const char _myanmar_syllable_machine_from_state_actions
[] = {
240 2, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0,
244 0, 0, 0, 0, 0, 0, 0, 0,
248 static const short _myanmar_syllable_machine_eof_trans
[] = {
249 0, 21, 21, 21, 21, 21, 21, 21,
250 21, 21, 21, 21, 21, 21, 21, 21,
251 21, 21, 21, 21, 21, 21, 43, 43,
252 43, 43, 43, 43, 43, 43, 43, 43,
253 21, 21, 43, 43, 43, 43, 43, 43,
257 static const int myanmar_syllable_machine_start
= 0;
258 static const int myanmar_syllable_machine_first_final
= 0;
259 static const int myanmar_syllable_machine_error
= -1;
261 static const int myanmar_syllable_machine_en_main
= 0;
264 #line 36 "hb-ot-shape-complex-myanmar-machine.rl"
268 #line 93 "hb-ot-shape-complex-myanmar-machine.rl"
271 #define found_syllable(syllable_type) \
273 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
274 for (unsigned int i = last; i < p+1; i++) \
275 info[i].syllable() = (syllable_serial << 4) | syllable_type; \
278 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
282 find_syllables (hb_buffer_t
*buffer
)
284 unsigned int p
, pe
, eof
, ts HB_UNUSED
, te HB_UNUSED
, act HB_UNUSED
;
286 hb_glyph_info_t
*info
= buffer
->info
;
288 #line 289 "hb-ot-shape-complex-myanmar-machine.hh"
290 cs
= myanmar_syllable_machine_start
;
296 #line 114 "hb-ot-shape-complex-myanmar-machine.rl"
300 pe
= eof
= buffer
->len
;
302 unsigned int last
= 0;
303 unsigned int syllable_serial
= 1;
305 #line 306 "hb-ot-shape-complex-myanmar-machine.hh"
309 const unsigned char *_keys
;
314 switch ( _myanmar_syllable_machine_from_state_actions
[cs
] ) {
319 #line 320 "hb-ot-shape-complex-myanmar-machine.hh"
322 _keys
= _myanmar_syllable_machine_trans_keys
+ (cs
<<1);
323 _inds
= _myanmar_syllable_machine_indicies
+ _myanmar_syllable_machine_index_offsets
[cs
];
325 _slen
= _myanmar_syllable_machine_key_spans
[cs
];
326 _trans
= _inds
[ _slen
> 0 && _keys
[0] <=( info
[p
].myanmar_category()) &&
327 ( info
[p
].myanmar_category()) <= _keys
[1] ?
328 ( info
[p
].myanmar_category()) - _keys
[0] : _slen
];
331 cs
= _myanmar_syllable_machine_trans_targs
[_trans
];
333 if ( _myanmar_syllable_machine_trans_actions
[_trans
] == 0 )
336 switch ( _myanmar_syllable_machine_trans_actions
[_trans
] ) {
338 #line 85 "hb-ot-shape-complex-myanmar-machine.rl"
339 {te
= p
+1;{ found_syllable (consonant_syllable
); }}
342 #line 86 "hb-ot-shape-complex-myanmar-machine.rl"
343 {te
= p
+1;{ found_syllable (non_myanmar_cluster
); }}
346 #line 87 "hb-ot-shape-complex-myanmar-machine.rl"
347 {te
= p
+1;{ found_syllable (punctuation_cluster
); }}
350 #line 88 "hb-ot-shape-complex-myanmar-machine.rl"
351 {te
= p
+1;{ found_syllable (broken_cluster
); }}
354 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
355 {te
= p
+1;{ found_syllable (non_myanmar_cluster
); }}
358 #line 85 "hb-ot-shape-complex-myanmar-machine.rl"
359 {te
= p
;p
--;{ found_syllable (consonant_syllable
); }}
362 #line 88 "hb-ot-shape-complex-myanmar-machine.rl"
363 {te
= p
;p
--;{ found_syllable (broken_cluster
); }}
366 #line 89 "hb-ot-shape-complex-myanmar-machine.rl"
367 {te
= p
;p
--;{ found_syllable (non_myanmar_cluster
); }}
369 #line 370 "hb-ot-shape-complex-myanmar-machine.hh"
373 switch ( _myanmar_syllable_machine_to_state_actions
[cs
] ) {
378 #line 379 "hb-ot-shape-complex-myanmar-machine.hh"
386 if ( _myanmar_syllable_machine_eof_trans
[cs
] > 0 ) {
387 _trans
= _myanmar_syllable_machine_eof_trans
[cs
] - 1;
394 #line 123 "hb-ot-shape-complex-myanmar-machine.rl"
398 #undef found_syllable
400 #endif /* HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH */