OLD | NEW |
1 | 1 |
2 #line 1 "hb-ot-shape-complex-indic-machine.rl" | 2 #line 1 "hb-ot-shape-complex-indic-machine.rl" |
3 /* | 3 /* |
4 * Copyright © 2011 Google, Inc. | 4 * Copyright © 2011,2012 Google, Inc. |
5 * | 5 * |
6 * This is part of HarfBuzz, a text shaping library. | 6 * This is part of HarfBuzz, a text shaping library. |
7 * | 7 * |
8 * Permission is hereby granted, without written agreement and without | 8 * Permission is hereby granted, without written agreement and without |
9 * license or royalty fees, to use, copy, modify, and distribute this | 9 * license or royalty fees, to use, copy, modify, and distribute this |
10 * software and its documentation for any purpose, provided that the | 10 * software and its documentation for any purpose, provided that the |
11 * above copyright notice and the following two paragraphs appear in | 11 * above copyright notice and the following two paragraphs appear in |
12 * all copies of this software. | 12 * all copies of this software. |
13 * | 13 * |
14 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR | 14 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR |
(...skipping 14 matching lines...) Expand all Loading... |
29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH | 29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH |
30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH | 30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH |
31 | 31 |
32 #include "hb-private.hh" | 32 #include "hb-private.hh" |
33 | 33 |
34 HB_BEGIN_DECLS | 34 HB_BEGIN_DECLS |
35 | 35 |
36 | 36 |
37 #line 38 "hb-ot-shape-complex-indic-machine.hh.tmp" | 37 #line 38 "hb-ot-shape-complex-indic-machine.hh.tmp" |
38 static const unsigned char _indic_syllable_machine_trans_keys[] = { | 38 static const unsigned char _indic_syllable_machine_trans_keys[] = { |
39 » 0u, 0u, 5u, 5u, 1u, 2u, 1u, 2u, 5u, 5u, 1u, 5u, 5u, 5u, 1u, 2u, | 39 » 5u, 5u, 1u, 2u, 1u, 2u, 5u, 5u, 1u, 5u, 1u, 2u, 5u, 5u, 1u, 13u, |
40 » 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, | 40 » 4u, 11u, 4u, 11u, 5u, 11u, 1u, 10u, 1u, 10u, 10u, 10u, 10u, 10u, 4u, 10u
, |
41 » 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, | 41 » 5u, 10u, 8u, 10u, 5u, 10u, 6u, 10u, 9u, 10u, 4u, 11u, 1u, 13u, 4u, 10u, |
42 » 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, | 42 » 4u, 10u, 5u, 10u, 4u, 10u, 5u, 10u, 8u, 10u, 10u, 10u, 10u, 10u, 4u, 10u
, |
43 » 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, | 43 » 4u, 10u, 5u, 10u, 4u, 10u, 5u, 10u, 8u, 10u, 10u, 10u, 10u, 10u, 0 |
44 » 0u, 12u, 0 | |
45 }; | 44 }; |
46 | 45 |
47 static const char _indic_syllable_machine_key_spans[] = { | 46 static const char _indic_syllable_machine_key_spans[] = { |
48 » 0, 1, 2, 2, 1, 5, 1, 2, | 47 » 1, 2, 2, 1, 5, 2, 1, 13, |
49 » 13, 13, 13, 13, 13, 13, 13, 13, | 48 » 8, 8, 7, 10, 10, 1, 1, 7, |
50 » 13, 13, 13, 13, 13, 13, 13, 13, | 49 » 6, 3, 6, 5, 2, 8, 13, 7, |
51 » 13, 13, 13, 13, 13, 13, 13, 13, | 50 » 7, 6, 7, 6, 3, 1, 1, 7, |
52 » 13, 13, 13, 13, 13, 13, 13, 13, | 51 » 7, 6, 7, 6, 3, 1, 1 |
53 » 13 | |
54 }; | 52 }; |
55 | 53 |
56 static const short _indic_syllable_machine_index_offsets[] = { | 54 static const unsigned char _indic_syllable_machine_index_offsets[] = { |
57 » 0, 0, 2, 5, 8, 10, 16, 18, | 55 » 0, 2, 5, 8, 10, 16, 19, 21, |
58 » 21, 35, 49, 63, 77, 91, 105, 119, | 56 » 35, 44, 53, 61, 72, 83, 85, 87, |
59 » 133, 147, 161, 175, 189, 203, 217, 231, | 57 » 95, 102, 106, 113, 119, 122, 131, 145, |
60 » 245, 259, 273, 287, 301, 315, 329, 343, | 58 » 153, 161, 168, 176, 183, 187, 189, 191, |
61 » 357, 371, 385, 399, 413, 427, 441, 455, | 59 » 199, 207, 214, 222, 229, 233, 235 |
62 » 469 | |
63 }; | 60 }; |
64 | 61 |
65 static const char _indic_syllable_machine_indicies[] = { | 62 static const char _indic_syllable_machine_indicies[] = { |
66 » 0, 1, 2, 2, 1, 3, 3, | 63 » 1, 0, 2, 2, 0, 4, 4, 3, |
67 » 1, 4, 1, 2, 2, 1, 1, 0, | 64 » 5, 3, 4, 4, 3, 3, 5, 3, |
68 » 1, 5, 1, 6, 6, 1, 7, 6, | 65 » 7, 7, 6, 8, 6, 2, 10, 11, |
69 » 8, 9, 1, 1, 1, 1, 1, 1, | 66 » 9, 9, 9, 9, 9, 9, 9, 9, |
70 » 1, 1, 10, 1, 11, 12, 13, 14, | 67 » 12, 12, 9, 14, 15, 16, 16, 17, |
71 » 1, 1, 1, 1, 1, 1, 1, 1, | 68 » 18, 19, 20, 13, 21, 15, 16, 16, |
72 » 15, 1, 16, 17, 18, 19, 20, 21, | 69 » 17, 18, 19, 20, 13, 15, 16, 16, |
73 » 22, 22, 23, 24, 25, 26, 27, 1, | 70 » 17, 18, 19, 20, 13, 2, 2, 13, |
74 » 16, 17, 18, 19, 20, 28, 22, 22, | 71 » 13, 13, 22, 22, 13, 18, 19, 13, |
75 » 23, 24, 25, 26, 27, 1, 29, 30, | 72 » 2, 2, 13, 13, 13, 13, 13, 13, |
76 » 31, 32, 33, 1, 34, 35, 36, 37, | 73 » 18, 19, 13, 19, 13, 23, 13, 24, |
77 » 38, 1, 39, 1, 29, 30, 31, 32, | 74 » 25, 13, 13, 17, 18, 19, 13, 25, |
78 » 1, 1, 34, 35, 36, 37, 38, 1, | 75 » 13, 13, 17, 18, 19, 13, 17, 18, |
79 » 39, 1, 29, 30, 31, 32, 1, 1, | 76 » 19, 13, 26, 13, 13, 17, 18, 19, |
80 » 1, 1, 36, 37, 38, 1, 39, 1, | 77 » 13, 27, 27, 13, 18, 19, 13, 18, |
81 » 29, 30, 31, 32, 40, 2, 1, 1, | 78 » 19, 13, 14, 28, 16, 16, 17, 18, |
82 » 36, 37, 38, 1, 39, 1, 29, 30, | 79 » 19, 20, 13, 2, 2, 11, 13, 13, |
83 » 31, 32, 1, 2, 1, 1, 36, 37, | 80 » 22, 22, 13, 18, 19, 13, 12, 12, |
84 » 38, 1, 39, 1, 29, 30, 31, 32, | 81 » 13, 30, 5, 31, 32, 33, 34, 35, |
85 » 1, 1, 1, 1, 1, 1, 38, 1, | 82 » 29, 4, 5, 31, 32, 33, 34, 35, |
86 » 39, 1, 29, 30, 31, 32, 1, 1, | 83 » 29, 5, 31, 32, 33, 34, 35, 29, |
87 » 1, 1, 1, 1, 41, 1, 39, 1, | 84 » 36, 37, 29, 29, 33, 34, 35, 29, |
88 » 29, 30, 31, 32, 1, 1, 1, 1, | 85 » 37, 29, 29, 33, 34, 35, 29, 33, |
89 » 1, 1, 1, 1, 39, 1, 42, 43, | 86 » 34, 35, 29, 35, 29, 38, 29, 40, |
90 » 44, 45, 46, 4, 47, 47, 48, 49, | 87 » 8, 41, 41, 42, 43, 44, 39, 7, |
91 » 50, 1, 51, 1, 42, 43, 44, 45, | 88 » 8, 41, 41, 42, 43, 44, 39, 8, |
92 » 1, 4, 47, 47, 48, 49, 50, 1, | 89 » 41, 41, 42, 43, 44, 39, 45, 46, |
93 » 51, 1, 42, 43, 44, 45, 1, 1, | 90 » 39, 39, 42, 43, 44, 39, 46, 39, |
94 » 1, 1, 48, 49, 50, 1, 51, 1, | 91 » 39, 42, 43, 44, 39, 42, 43, 44, |
95 » 42, 43, 44, 45, 52, 3, 1, 1, | 92 » 39, 44, 39, 47, 39, 0 |
96 » 48, 49, 50, 1, 51, 1, 42, 43, | |
97 » 44, 45, 1, 3, 1, 1, 48, 49, | |
98 » 50, 1, 51, 1, 42, 43, 44, 45, | |
99 » 1, 1, 1, 1, 1, 1, 50, 1, | |
100 » 51, 1, 42, 43, 44, 45, 1, 1, | |
101 » 1, 1, 1, 1, 53, 1, 51, 1, | |
102 » 42, 43, 44, 45, 1, 1, 1, 1, | |
103 » 1, 1, 1, 1, 51, 1, 16, 17, | |
104 » 18, 19, 1, 21, 22, 22, 23, 24, | |
105 » 25, 26, 27, 1, 16, 6, 6, 19, | |
106 » 1, 1, 54, 54, 1, 24, 25, 1, | |
107 » 27, 1, 16, 6, 6, 19, 1, 1, | |
108 » 1, 1, 1, 24, 25, 1, 27, 1, | |
109 » 16, 17, 18, 19, 1, 1, 1, 1, | |
110 » 1, 1, 25, 1, 27, 1, 16, 17, | |
111 » 18, 19, 1, 1, 1, 1, 1, 1, | |
112 » 55, 1, 27, 1, 16, 17, 18, 19, | |
113 » 1, 1, 1, 1, 1, 1, 1, 1, | |
114 » 27, 1, 16, 17, 18, 19, 56, 57, | |
115 » 1, 1, 23, 24, 25, 1, 27, 1, | |
116 » 16, 17, 18, 19, 1, 57, 1, 1, | |
117 » 23, 24, 25, 1, 27, 1, 16, 17, | |
118 » 18, 19, 1, 1, 1, 1, 23, 24, | |
119 » 25, 1, 27, 1, 16, 17, 18, 19, | |
120 » 1, 58, 1, 1, 23, 24, 25, 1, | |
121 » 27, 1, 16, 17, 18, 19, 1, 1, | |
122 » 59, 59, 1, 24, 25, 1, 27, 1, | |
123 » 16, 17, 18, 19, 1, 1, 1, 1, | |
124 » 1, 24, 25, 1, 27, 1, 16, 6, | |
125 » 6, 9, 1, 1, 54, 54, 1, 24, | |
126 » 25, 1, 10, 1, 0 | |
127 }; | 93 }; |
128 | 94 |
129 static const char _indic_syllable_machine_trans_targs[] = { | 95 static const char _indic_syllable_machine_trans_targs[] = { |
130 » 2, 0, 14, 22, 3, 7, 10, 9, | 96 » 7, 1, 8, 7, 25, 2, 7, 33, |
131 » 11, 12, 20, 9, 10, 11, 12, 20, | 97 » 5, 7, 21, 23, 31, 7, 9, 11, |
132 » 9, 10, 11, 12, 28, 29, 6, 34, | 98 » 0, 15, 13, 14, 18, 10, 12, 7, |
133 » 31, 32, 37, 20, 40, 9, 10, 11, | 99 » 16, 17, 19, 20, 22, 7, 24, 3, |
134 » 12, 13, 1, 5, 15, 17, 18, 20, | 100 » 4, 26, 29, 30, 27, 28, 7, 7, |
135 » 16, 19, 9, 10, 11, 12, 21, 4, | 101 » 32, 6, 34, 37, 38, 35, 36, 7 |
136 » 23, 25, 26, 20, 24, 27, 30, 33, | |
137 » 35, 36, 38, 39 | |
138 }; | 102 }; |
139 | 103 |
140 static const char _indic_syllable_machine_trans_actions[] = { | 104 static const char _indic_syllable_machine_trans_actions[] = { |
141 » 0, 0, 0, 0, 0, 0, 0, 0, | 105 » 1, 0, 2, 3, 2, 0, 4, 2, |
142 » 0, 0, 0, 1, 1, 1, 1, 1, | 106 » 0, 7, 2, 2, 2, 8, 2, 0, |
143 » 2, 2, 2, 2, 0, 0, 0, 0, | 107 » 0, 0, 0, 0, 0, 2, 0, 9, |
144 » 0, 0, 0, 2, 0, 3, 3, 3, | 108 » 0, 0, 0, 0, 0, 10, 2, 0, |
145 » 3, 0, 0, 0, 0, 0, 0, 3, | 109 » 0, 0, 0, 0, 0, 0, 11, 12, |
146 » 0, 0, 4, 4, 4, 4, 0, 0, | 110 » 2, 0, 0, 0, 0, 0, 0, 13 |
147 » 0, 0, 0, 4, 0, 0, 0, 0, | |
148 » 0, 0, 0, 0 | |
149 }; | 111 }; |
150 | 112 |
151 static const char _indic_syllable_machine_eof_actions[] = { | 113 static const char _indic_syllable_machine_to_state_actions[] = { |
| 114 » 0, 0, 0, 0, 0, 0, 0, 5, |
152 0, 0, 0, 0, 0, 0, 0, 0, | 115 0, 0, 0, 0, 0, 0, 0, 0, |
153 » 0, 1, 2, 2, 3, 3, 3, 3, | 116 » 0, 0, 0, 0, 0, 0, 0, 0, |
154 » 3, 3, 3, 3, 4, 4, 4, 4, | 117 » 0, 0, 0, 0, 0, 0, 0, 0, |
155 » 4, 4, 4, 4, 2, 2, 2, 2, | 118 » 0, 0, 0, 0, 0, 0, 0 |
156 » 2, 2, 2, 2, 2, 2, 2, 2, | |
157 » 2 | |
158 }; | 119 }; |
159 | 120 |
160 static const int indic_syllable_machine_start = 8; | 121 static const char _indic_syllable_machine_from_state_actions[] = { |
161 static const int indic_syllable_machine_first_final = 8; | 122 » 0, 0, 0, 0, 0, 0, 0, 6, |
162 static const int indic_syllable_machine_error = 0; | 123 » 0, 0, 0, 0, 0, 0, 0, 0, |
| 124 » 0, 0, 0, 0, 0, 0, 0, 0, |
| 125 » 0, 0, 0, 0, 0, 0, 0, 0, |
| 126 » 0, 0, 0, 0, 0, 0, 0 |
| 127 }; |
163 | 128 |
164 static const int indic_syllable_machine_en_main = 8; | 129 static const unsigned char _indic_syllable_machine_eof_trans[] = { |
| 130 » 1, 1, 4, 4, 4, 7, 7, 0, |
| 131 » 14, 14, 14, 14, 14, 14, 14, 14, |
| 132 » 14, 14, 14, 14, 14, 14, 14, 30, |
| 133 » 30, 30, 30, 30, 30, 30, 30, 40, |
| 134 » 40, 40, 40, 40, 40, 40, 40 |
| 135 }; |
| 136 |
| 137 static const int indic_syllable_machine_start = 7; |
| 138 static const int indic_syllable_machine_first_final = 7; |
| 139 static const int indic_syllable_machine_error = -1; |
| 140 |
| 141 static const int indic_syllable_machine_en_main = 7; |
165 | 142 |
166 | 143 |
167 #line 38 "hb-ot-shape-complex-indic-machine.rl" | 144 #line 38 "hb-ot-shape-complex-indic-machine.rl" |
168 | 145 |
169 | 146 |
170 | 147 |
171 #line 83 "hb-ot-shape-complex-indic-machine.rl" | 148 #line 79 "hb-ot-shape-complex-indic-machine.rl" |
172 | 149 |
173 | 150 |
174 | 151 #define process_syllable(func) \ |
175 static void | 152 HB_STMT_START { \ |
176 set_cluster (hb_buffer_t *buffer, | 153 /* fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #func); */ \ |
177 » unsigned int start, unsigned int end) | 154 for (unsigned int i = last; i < p+1; i++) \ |
178 { | 155 info[i].syllable() = syllable_serial; \ |
179 unsigned int cluster = buffer->info[start].cluster; | 156 PASTE (initial_reordering_, func) (map, buffer, mask_array, last, p+1); \ |
180 | 157 last = p+1; \ |
181 for (unsigned int i = start + 1; i < end; i++) | 158 syllable_serial++; \ |
182 cluster = MIN (cluster, buffer->info[i].cluster); | 159 if (unlikely (!syllable_serial)) syllable_serial++; \ |
183 for (unsigned int i = start; i < end; i++) | 160 } HB_STMT_END |
184 buffer->info[i].cluster = cluster; | |
185 } | |
186 | 161 |
187 static void | 162 static void |
188 find_syllables (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t *mask_arr
ay) | 163 find_syllables (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t *mask_arr
ay) |
189 { | 164 { |
190 unsigned int p, pe, eof; | 165 unsigned int p, pe, eof, ts, te, act; |
191 int cs; | 166 int cs; |
| 167 hb_glyph_info_t *info = buffer->info; |
192 | 168 |
193 #line 194 "hb-ot-shape-complex-indic-machine.hh.tmp" | 169 #line 170 "hb-ot-shape-complex-indic-machine.hh.tmp" |
194 { | 170 { |
195 cs = indic_syllable_machine_start; | 171 cs = indic_syllable_machine_start; |
| 172 ts = 0; |
| 173 te = 0; |
| 174 act = 0; |
196 } | 175 } |
197 | 176 |
198 #line 106 "hb-ot-shape-complex-indic-machine.rl" | 177 #line 101 "hb-ot-shape-complex-indic-machine.rl" |
199 | 178 |
200 | 179 |
201 p = 0; | 180 p = 0; |
202 pe = eof = buffer->len; | 181 pe = eof = buffer->len; |
203 | 182 |
204 unsigned int last = 0; | 183 unsigned int last = 0; |
| 184 uint8_t syllable_serial = 1; |
205 | 185 |
206 #line 207 "hb-ot-shape-complex-indic-machine.hh.tmp" | 186 #line 187 "hb-ot-shape-complex-indic-machine.hh.tmp" |
207 { | 187 { |
208 int _slen; | 188 int _slen; |
209 int _trans; | 189 int _trans; |
210 const unsigned char *_keys; | 190 const unsigned char *_keys; |
211 const char *_inds; | 191 const char *_inds; |
212 if ( p == pe ) | 192 if ( p == pe ) |
213 goto _test_eof; | 193 goto _test_eof; |
214 if ( cs == 0 ) | |
215 goto _out; | |
216 _resume: | 194 _resume: |
| 195 switch ( _indic_syllable_machine_from_state_actions[cs] ) { |
| 196 case 6: |
| 197 #line 1 "hb-ot-shape-complex-indic-machine.rl" |
| 198 {ts = p;} |
| 199 break; |
| 200 #line 201 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 201 } |
| 202 |
217 _keys = _indic_syllable_machine_trans_keys + (cs<<1); | 203 _keys = _indic_syllable_machine_trans_keys + (cs<<1); |
218 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index
_offsets[cs]; | 204 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index
_offsets[cs]; |
219 | 205 |
220 _slen = _indic_syllable_machine_key_spans[cs]; | 206 _slen = _indic_syllable_machine_key_spans[cs]; |
221 » _trans = _inds[ _slen > 0 && _keys[0] <=( buffer->info[p].indic_category
()) && | 207 » _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && |
222 » » ( buffer->info[p].indic_category()) <= _keys[1] ? | 208 » » ( info[p].indic_category()) <= _keys[1] ? |
223 » » ( buffer->info[p].indic_category()) - _keys[0] : _slen ]; | 209 » » ( info[p].indic_category()) - _keys[0] : _slen ]; |
224 | 210 |
| 211 _eof_trans: |
225 cs = _indic_syllable_machine_trans_targs[_trans]; | 212 cs = _indic_syllable_machine_trans_targs[_trans]; |
226 | 213 |
227 if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) | 214 if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) |
228 goto _again; | 215 goto _again; |
229 | 216 |
230 switch ( _indic_syllable_machine_trans_actions[_trans] ) { | 217 switch ( _indic_syllable_machine_trans_actions[_trans] ) { |
231 case 2: | 218 case 2: |
232 #line 62 "hb-ot-shape-complex-indic-machine.rl" | 219 #line 1 "hb-ot-shape-complex-indic-machine.rl" |
233 » { found_consonant_syllable (map, buffer, mask_array, last, p); } | 220 » {te = p+1;} |
234 #line 67 "hb-ot-shape-complex-indic-machine.rl" | 221 » break; |
235 » { set_cluster (buffer, p, last); last = p; } | 222 » case 9: |
| 223 #line 72 "hb-ot-shape-complex-indic-machine.rl" |
| 224 » {te = p+1;{ process_syllable (consonant_syllable); }} |
| 225 » break; |
| 226 » case 11: |
| 227 #line 73 "hb-ot-shape-complex-indic-machine.rl" |
| 228 » {te = p+1;{ process_syllable (vowel_syllable); }} |
| 229 » break; |
| 230 » case 13: |
| 231 #line 74 "hb-ot-shape-complex-indic-machine.rl" |
| 232 » {te = p+1;{ process_syllable (standalone_cluster); }} |
| 233 » break; |
| 234 » case 7: |
| 235 #line 75 "hb-ot-shape-complex-indic-machine.rl" |
| 236 » {te = p+1;{ process_syllable (non_indic); }} |
| 237 » break; |
| 238 » case 8: |
| 239 #line 72 "hb-ot-shape-complex-indic-machine.rl" |
| 240 » {te = p;p--;{ process_syllable (consonant_syllable); }} |
| 241 » break; |
| 242 » case 10: |
| 243 #line 73 "hb-ot-shape-complex-indic-machine.rl" |
| 244 » {te = p;p--;{ process_syllable (vowel_syllable); }} |
| 245 » break; |
| 246 » case 12: |
| 247 #line 74 "hb-ot-shape-complex-indic-machine.rl" |
| 248 » {te = p;p--;{ process_syllable (standalone_cluster); }} |
| 249 » break; |
| 250 » case 1: |
| 251 #line 72 "hb-ot-shape-complex-indic-machine.rl" |
| 252 » {{p = ((te))-1;}{ process_syllable (consonant_syllable); }} |
236 break; | 253 break; |
237 case 3: | 254 case 3: |
238 #line 63 "hb-ot-shape-complex-indic-machine.rl" | 255 #line 73 "hb-ot-shape-complex-indic-machine.rl" |
239 » { found_vowel_syllable (map, buffer, mask_array, last, p); } | 256 » {{p = ((te))-1;}{ process_syllable (vowel_syllable); }} |
240 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
241 » { set_cluster (buffer, p, last); last = p; } | |
242 break; | 257 break; |
243 case 4: | 258 case 4: |
244 #line 64 "hb-ot-shape-complex-indic-machine.rl" | 259 #line 74 "hb-ot-shape-complex-indic-machine.rl" |
245 » { found_standalone_cluster (map, buffer, mask_array, last, p); } | 260 » {{p = ((te))-1;}{ process_syllable (standalone_cluster); }} |
246 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
247 » { set_cluster (buffer, p, last); last = p; } | |
248 break; | 261 break; |
249 » case 1: | 262 #line 263 "hb-ot-shape-complex-indic-machine.hh.tmp" |
250 #line 65 "hb-ot-shape-complex-indic-machine.rl" | |
251 » { found_non_indic (map, buffer, mask_array, last, p); } | |
252 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
253 » { set_cluster (buffer, p, last); last = p; } | |
254 » break; | |
255 #line 256 "hb-ot-shape-complex-indic-machine.hh.tmp" | |
256 } | 263 } |
257 | 264 |
258 _again: | 265 _again: |
259 » if ( cs == 0 ) | 266 » switch ( _indic_syllable_machine_to_state_actions[cs] ) { |
260 » » goto _out; | 267 » case 5: |
| 268 #line 1 "hb-ot-shape-complex-indic-machine.rl" |
| 269 » {ts = 0;} |
| 270 » break; |
| 271 #line 272 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 272 » } |
| 273 |
261 if ( ++p != pe ) | 274 if ( ++p != pe ) |
262 goto _resume; | 275 goto _resume; |
263 _test_eof: {} | 276 _test_eof: {} |
264 if ( p == eof ) | 277 if ( p == eof ) |
265 { | 278 { |
266 » switch ( _indic_syllable_machine_eof_actions[cs] ) { | 279 » if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { |
267 » case 2: | 280 » » _trans = _indic_syllable_machine_eof_trans[cs] - 1; |
268 #line 62 "hb-ot-shape-complex-indic-machine.rl" | 281 » » goto _eof_trans; |
269 » { found_consonant_syllable (map, buffer, mask_array, last, p); } | |
270 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
271 » { set_cluster (buffer, p, last); last = p; } | |
272 » break; | |
273 » case 3: | |
274 #line 63 "hb-ot-shape-complex-indic-machine.rl" | |
275 » { found_vowel_syllable (map, buffer, mask_array, last, p); } | |
276 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
277 » { set_cluster (buffer, p, last); last = p; } | |
278 » break; | |
279 » case 4: | |
280 #line 64 "hb-ot-shape-complex-indic-machine.rl" | |
281 » { found_standalone_cluster (map, buffer, mask_array, last, p); } | |
282 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
283 » { set_cluster (buffer, p, last); last = p; } | |
284 » break; | |
285 » case 1: | |
286 #line 65 "hb-ot-shape-complex-indic-machine.rl" | |
287 » { found_non_indic (map, buffer, mask_array, last, p); } | |
288 #line 67 "hb-ot-shape-complex-indic-machine.rl" | |
289 » { set_cluster (buffer, p, last); last = p; } | |
290 » break; | |
291 #line 292 "hb-ot-shape-complex-indic-machine.hh.tmp" | |
292 } | 282 } |
293 } | 283 } |
294 | 284 |
295 _out: {} | |
296 } | 285 } |
297 | 286 |
298 #line 114 "hb-ot-shape-complex-indic-machine.rl" | 287 #line 110 "hb-ot-shape-complex-indic-machine.rl" |
299 | 288 |
300 } | 289 } |
301 | 290 |
302 HB_END_DECLS | 291 HB_END_DECLS |
303 | 292 |
304 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ | 293 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ |
OLD | NEW |