1 2#line 1 "hb-ot-shape-complex-use-machine.rl" 3/* 4 * Copyright © 2015 Mozilla Foundation. 5 * Copyright © 2015 Google, Inc. 6 * 7 * This is part of HarfBuzz, a text shaping library. 8 * 9 * Permission is hereby granted, without written agreement and without 10 * license or royalty fees, to use, copy, modify, and distribute this 11 * software and its documentation for any purpose, provided that the 12 * above copyright notice and the following two paragraphs appear in 13 * all copies of this software. 14 * 15 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 16 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 17 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 18 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 19 * DAMAGE. 20 * 21 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 22 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 23 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 24 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 25 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 26 * 27 * Mozilla Author(s): Jonathan Kew 28 * Google Author(s): Behdad Esfahbod 29 */ 30 31#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH 32#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH 33 34#include "hb-private.hh" 35 36 37#line 38 "hb-ot-shape-complex-use-machine.hh" 38static const unsigned char _use_syllable_machine_trans_keys[] = { 39 0u, 0u, 4u, 4u, 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u, 40 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 41 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 42 8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 43 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 44 8u, 39u, 12u, 21u, 12u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 45 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 46 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u, 47 42u, 42u, 0 48}; 49 50static const char _use_syllable_machine_key_spans[] = { 51 0, 1, 1, 40, 1, 32, 32, 1, 52 32, 32, 32, 19, 19, 19, 32, 32, 53 32, 32, 32, 32, 32, 32, 32, 32, 54 32, 32, 32, 1, 32, 32, 19, 19, 55 19, 32, 32, 32, 32, 32, 32, 32, 56 32, 10, 2, 32, 32, 32, 32, 19, 57 19, 19, 32, 32, 32, 32, 32, 32, 58 32, 32, 32, 32, 39, 32, 22, 2, 59 1 60}; 61 62static const short _use_syllable_machine_index_offsets[] = { 63 0, 0, 2, 4, 45, 47, 80, 113, 64 115, 148, 181, 214, 234, 254, 274, 307, 65 340, 373, 406, 439, 472, 505, 538, 571, 66 604, 637, 670, 703, 705, 738, 771, 791, 67 811, 831, 864, 897, 930, 963, 996, 1029, 68 1062, 1095, 1106, 1109, 1142, 1175, 1208, 1241, 69 1261, 1281, 1301, 1334, 1367, 1400, 1433, 1466, 70 1499, 1532, 1565, 1598, 1631, 1671, 1704, 1727, 71 1730 72}; 73 74static const char _use_syllable_machine_indicies[] = { 75 1, 0, 3, 2, 4, 5, 6, 76 4, 1, 5, 8, 8, 7, 8, 8, 77 3, 9, 8, 8, 8, 4, 4, 10, 78 11, 8, 8, 12, 13, 14, 15, 16, 79 17, 18, 12, 19, 20, 21, 22, 23, 80 24, 8, 25, 26, 27, 8, 29, 28, 81 31, 30, 30, 32, 33, 30, 30, 30, 82 30, 30, 30, 30, 30, 34, 35, 36, 83 37, 38, 39, 40, 41, 35, 42, 34, 84 43, 44, 45, 46, 30, 47, 48, 49, 85 30, 31, 30, 30, 32, 33, 30, 30, 86 30, 30, 30, 30, 30, 30, 50, 35, 87 36, 37, 38, 39, 40, 41, 35, 42, 88 43, 43, 44, 45, 46, 30, 47, 48, 89 49, 30, 32, 51, 31, 30, 30, 32, 90 33, 30, 30, 30, 30, 30, 30, 30, 91 30, 30, 35, 36, 37, 38, 39, 40, 92 41, 35, 42, 43, 43, 44, 45, 46, 93 30, 47, 48, 49, 30, 31, 30, 30, 94 30, 30, 30, 30, 30, 30, 30, 30, 95 30, 30, 30, 35, 36, 37, 38, 39, 96 30, 30, 30, 30, 30, 30, 44, 45, 97 46, 30, 47, 48, 49, 30, 31, 30, 98 30, 30, 30, 30, 30, 30, 30, 30, 99 30, 30, 30, 30, 30, 36, 37, 38, 100 39, 30, 30, 30, 30, 30, 30, 30, 101 30, 30, 30, 47, 48, 49, 30, 31, 102 30, 30, 30, 30, 30, 30, 30, 30, 103 30, 30, 30, 30, 30, 30, 30, 37, 104 38, 39, 30, 31, 30, 30, 30, 30, 105 30, 30, 30, 30, 30, 30, 30, 30, 106 30, 30, 30, 30, 38, 39, 30, 31, 107 30, 30, 30, 30, 30, 30, 30, 30, 108 30, 30, 30, 30, 30, 30, 30, 30, 109 30, 39, 30, 31, 30, 30, 30, 30, 110 30, 30, 30, 30, 30, 30, 30, 30, 111 30, 30, 30, 37, 38, 39, 30, 30, 112 30, 30, 30, 30, 30, 30, 30, 30, 113 47, 48, 49, 30, 31, 30, 30, 30, 114 30, 30, 30, 30, 30, 30, 30, 30, 115 30, 30, 30, 30, 37, 38, 39, 30, 116 30, 30, 30, 30, 30, 30, 30, 30, 117 30, 30, 48, 49, 30, 31, 30, 30, 118 30, 30, 30, 30, 30, 30, 30, 30, 119 30, 30, 30, 30, 30, 37, 38, 39, 120 30, 30, 30, 30, 30, 30, 30, 30, 121 30, 30, 30, 30, 49, 30, 31, 30, 122 30, 30, 30, 30, 30, 30, 30, 30, 123 30, 30, 30, 30, 30, 36, 37, 38, 124 39, 30, 30, 30, 30, 30, 30, 44, 125 45, 46, 30, 47, 48, 49, 30, 31, 126 30, 30, 30, 30, 30, 30, 30, 30, 127 30, 30, 30, 30, 30, 30, 36, 37, 128 38, 39, 30, 30, 30, 30, 30, 30, 129 30, 45, 46, 30, 47, 48, 49, 30, 130 31, 30, 30, 30, 30, 30, 30, 30, 131 30, 30, 30, 30, 30, 30, 30, 36, 132 37, 38, 39, 30, 30, 30, 30, 30, 133 30, 30, 30, 46, 30, 47, 48, 49, 134 30, 31, 30, 30, 30, 30, 30, 30, 135 30, 30, 30, 30, 30, 30, 30, 35, 136 36, 37, 38, 39, 30, 41, 35, 30, 137 30, 30, 44, 45, 46, 30, 47, 48, 138 49, 30, 31, 30, 30, 30, 30, 30, 139 30, 30, 30, 30, 30, 30, 30, 30, 140 35, 36, 37, 38, 39, 30, 30, 35, 141 30, 30, 30, 44, 45, 46, 30, 47, 142 48, 49, 30, 31, 30, 30, 30, 30, 143 30, 30, 30, 30, 30, 30, 30, 30, 144 30, 35, 36, 37, 38, 39, 40, 41, 145 35, 30, 30, 30, 44, 45, 46, 30, 146 47, 48, 49, 30, 31, 30, 30, 32, 147 33, 30, 30, 30, 30, 30, 30, 30, 148 30, 30, 35, 36, 37, 38, 39, 40, 149 41, 35, 42, 30, 43, 44, 45, 46, 150 30, 47, 48, 49, 30, 31, 30, 30, 151 32, 33, 30, 30, 30, 30, 30, 30, 152 30, 30, 30, 35, 36, 37, 38, 39, 153 40, 41, 35, 42, 34, 43, 44, 45, 154 46, 30, 47, 48, 49, 30, 53, 52, 155 52, 54, 55, 52, 52, 52, 52, 52, 156 52, 52, 52, 56, 52, 57, 58, 59, 157 60, 61, 62, 57, 63, 56, 64, 52, 158 52, 52, 52, 65, 66, 67, 52, 53, 159 52, 52, 54, 55, 52, 52, 52, 52, 160 52, 52, 52, 52, 68, 52, 57, 58, 161 59, 60, 61, 62, 57, 63, 64, 64, 162 52, 52, 52, 52, 65, 66, 67, 52, 163 54, 51, 53, 52, 52, 54, 55, 52, 164 52, 52, 52, 52, 52, 52, 52, 52, 165 52, 57, 58, 59, 60, 61, 62, 57, 166 63, 64, 64, 52, 52, 52, 52, 65, 167 66, 67, 52, 53, 52, 52, 52, 52, 168 52, 52, 52, 52, 52, 52, 52, 52, 169 52, 52, 57, 58, 59, 60, 52, 52, 170 52, 52, 52, 52, 52, 52, 52, 52, 171 65, 66, 67, 52, 53, 52, 52, 52, 172 52, 52, 52, 52, 52, 52, 52, 52, 173 52, 52, 52, 52, 58, 59, 60, 52, 174 53, 52, 52, 52, 52, 52, 52, 52, 175 52, 52, 52, 52, 52, 52, 52, 52, 176 52, 59, 60, 52, 53, 52, 52, 52, 177 52, 52, 52, 52, 52, 52, 52, 52, 178 52, 52, 52, 52, 52, 52, 60, 52, 179 53, 52, 52, 52, 52, 52, 52, 52, 180 52, 52, 52, 52, 52, 52, 52, 52, 181 58, 59, 60, 52, 52, 52, 52, 52, 182 52, 52, 52, 52, 52, 65, 66, 67, 183 52, 53, 52, 52, 52, 52, 52, 52, 184 52, 52, 52, 52, 52, 52, 52, 52, 185 52, 58, 59, 60, 52, 52, 52, 52, 186 52, 52, 52, 52, 52, 52, 52, 66, 187 67, 52, 53, 52, 52, 52, 52, 52, 188 52, 52, 52, 52, 52, 52, 52, 52, 189 52, 52, 58, 59, 60, 52, 52, 52, 190 52, 52, 52, 52, 52, 52, 52, 52, 191 52, 67, 52, 53, 52, 52, 52, 52, 192 52, 52, 52, 52, 52, 52, 52, 52, 193 52, 52, 57, 58, 59, 60, 52, 62, 194 57, 52, 52, 52, 52, 52, 52, 52, 195 65, 66, 67, 52, 53, 52, 52, 52, 196 52, 52, 52, 52, 52, 52, 52, 52, 197 52, 52, 52, 57, 58, 59, 60, 52, 198 52, 57, 52, 52, 52, 52, 52, 52, 199 52, 65, 66, 67, 52, 53, 52, 52, 200 52, 52, 52, 52, 52, 52, 52, 52, 201 52, 52, 52, 52, 57, 58, 59, 60, 202 61, 62, 57, 52, 52, 52, 52, 52, 203 52, 52, 65, 66, 67, 52, 53, 52, 204 52, 54, 55, 52, 52, 52, 52, 52, 205 52, 52, 52, 52, 52, 57, 58, 59, 206 60, 61, 62, 57, 63, 52, 64, 52, 207 52, 52, 52, 65, 66, 67, 52, 53, 208 52, 52, 54, 55, 52, 52, 52, 52, 209 52, 52, 52, 52, 52, 52, 57, 58, 210 59, 60, 61, 62, 57, 63, 56, 64, 211 52, 52, 52, 52, 65, 66, 67, 52, 212 70, 71, 69, 69, 69, 69, 69, 69, 213 69, 72, 69, 70, 71, 69, 7, 73, 214 73, 3, 9, 73, 73, 73, 73, 73, 215 73, 73, 73, 74, 12, 13, 14, 15, 216 16, 17, 18, 12, 19, 21, 21, 22, 217 23, 24, 73, 25, 26, 27, 73, 7, 218 73, 73, 3, 9, 73, 73, 73, 73, 219 73, 73, 73, 73, 73, 12, 13, 14, 220 15, 16, 17, 18, 12, 19, 21, 21, 221 22, 23, 24, 73, 25, 26, 27, 73, 222 7, 73, 73, 73, 73, 73, 73, 73, 223 73, 73, 73, 73, 73, 73, 12, 13, 224 14, 15, 16, 73, 73, 73, 73, 73, 225 73, 22, 23, 24, 73, 25, 26, 27, 226 73, 7, 73, 73, 73, 73, 73, 73, 227 73, 73, 73, 73, 73, 73, 73, 73, 228 13, 14, 15, 16, 73, 73, 73, 73, 229 73, 73, 73, 73, 73, 73, 25, 26, 230 27, 73, 7, 73, 73, 73, 73, 73, 231 73, 73, 73, 73, 73, 73, 73, 73, 232 73, 73, 14, 15, 16, 73, 7, 73, 233 73, 73, 73, 73, 73, 73, 73, 73, 234 73, 73, 73, 73, 73, 73, 73, 15, 235 16, 73, 7, 73, 73, 73, 73, 73, 236 73, 73, 73, 73, 73, 73, 73, 73, 237 73, 73, 73, 73, 16, 73, 7, 73, 238 73, 73, 73, 73, 73, 73, 73, 73, 239 73, 73, 73, 73, 73, 73, 14, 15, 240 16, 73, 73, 73, 73, 73, 73, 73, 241 73, 73, 73, 25, 26, 27, 73, 7, 242 73, 73, 73, 73, 73, 73, 73, 73, 243 73, 73, 73, 73, 73, 73, 73, 14, 244 15, 16, 73, 73, 73, 73, 73, 73, 245 73, 73, 73, 73, 73, 26, 27, 73, 246 7, 73, 73, 73, 73, 73, 73, 73, 247 73, 73, 73, 73, 73, 73, 73, 73, 248 14, 15, 16, 73, 73, 73, 73, 73, 249 73, 73, 73, 73, 73, 73, 73, 27, 250 73, 7, 73, 73, 73, 73, 73, 73, 251 73, 73, 73, 73, 73, 73, 73, 73, 252 13, 14, 15, 16, 73, 73, 73, 73, 253 73, 73, 22, 23, 24, 73, 25, 26, 254 27, 73, 7, 73, 73, 73, 73, 73, 255 73, 73, 73, 73, 73, 73, 73, 73, 256 73, 13, 14, 15, 16, 73, 73, 73, 257 73, 73, 73, 73, 23, 24, 73, 25, 258 26, 27, 73, 7, 73, 73, 73, 73, 259 73, 73, 73, 73, 73, 73, 73, 73, 260 73, 73, 13, 14, 15, 16, 73, 73, 261 73, 73, 73, 73, 73, 73, 24, 73, 262 25, 26, 27, 73, 7, 73, 73, 73, 263 73, 73, 73, 73, 73, 73, 73, 73, 264 73, 73, 12, 13, 14, 15, 16, 73, 265 18, 12, 73, 73, 73, 22, 23, 24, 266 73, 25, 26, 27, 73, 7, 73, 73, 267 73, 73, 73, 73, 73, 73, 73, 73, 268 73, 73, 73, 12, 13, 14, 15, 16, 269 73, 73, 12, 73, 73, 73, 22, 23, 270 24, 73, 25, 26, 27, 73, 7, 73, 271 73, 73, 73, 73, 73, 73, 73, 73, 272 73, 73, 73, 73, 12, 13, 14, 15, 273 16, 17, 18, 12, 73, 73, 73, 22, 274 23, 24, 73, 25, 26, 27, 73, 7, 275 73, 73, 3, 9, 73, 73, 73, 73, 276 73, 73, 73, 73, 73, 12, 13, 14, 277 15, 16, 17, 18, 12, 19, 73, 21, 278 22, 23, 24, 73, 25, 26, 27, 73, 279 5, 6, 73, 73, 5, 73, 73, 7, 280 73, 73, 3, 9, 73, 73, 73, 73, 281 73, 73, 73, 73, 73, 12, 13, 14, 282 15, 16, 17, 18, 12, 19, 20, 21, 283 22, 23, 24, 73, 25, 26, 27, 73, 284 7, 73, 73, 3, 9, 73, 73, 73, 285 73, 73, 73, 73, 73, 73, 12, 13, 286 14, 15, 16, 17, 18, 12, 19, 20, 287 21, 22, 23, 24, 73, 25, 26, 27, 288 73, 76, 75, 75, 75, 75, 75, 75, 289 75, 75, 75, 75, 75, 75, 75, 75, 290 75, 75, 75, 75, 75, 76, 77, 75, 291 76, 77, 75, 77, 75, 0 292}; 293 294static const char _use_syllable_machine_trans_targs[] = { 295 3, 41, 3, 43, 4, 5, 25, 3, 296 0, 2, 60, 62, 45, 46, 47, 48, 297 49, 56, 57, 58, 61, 59, 53, 54, 298 55, 50, 51, 52, 3, 3, 3, 3, 299 6, 7, 24, 9, 10, 11, 12, 13, 300 20, 21, 22, 23, 17, 18, 19, 14, 301 15, 16, 8, 3, 3, 3, 26, 27, 302 40, 29, 30, 31, 32, 36, 37, 38, 303 39, 33, 34, 35, 28, 3, 3, 1, 304 42, 3, 44, 3, 63, 64 305}; 306 307static const char _use_syllable_machine_trans_actions[] = { 308 1, 2, 3, 4, 0, 0, 0, 7, 309 0, 0, 4, 0, 0, 0, 0, 0, 310 0, 0, 0, 0, 4, 4, 0, 0, 311 0, 0, 0, 0, 8, 9, 10, 11, 312 0, 0, 0, 0, 0, 0, 0, 0, 313 0, 0, 0, 0, 0, 0, 0, 0, 314 0, 0, 0, 12, 13, 14, 0, 0, 315 0, 0, 0, 0, 0, 0, 0, 0, 316 0, 0, 0, 0, 0, 15, 16, 0, 317 2, 17, 4, 18, 0, 0 318}; 319 320static const char _use_syllable_machine_to_state_actions[] = { 321 0, 0, 0, 5, 0, 0, 0, 0, 322 0, 0, 0, 0, 0, 0, 0, 0, 323 0, 0, 0, 0, 0, 0, 0, 0, 324 0, 0, 0, 0, 0, 0, 0, 0, 325 0, 0, 0, 0, 0, 0, 0, 0, 326 0, 0, 0, 0, 0, 0, 0, 0, 327 0, 0, 0, 0, 0, 0, 0, 0, 328 0, 0, 0, 0, 0, 0, 0, 0, 329 0 330}; 331 332static const char _use_syllable_machine_from_state_actions[] = { 333 0, 0, 0, 6, 0, 0, 0, 0, 334 0, 0, 0, 0, 0, 0, 0, 0, 335 0, 0, 0, 0, 0, 0, 0, 0, 336 0, 0, 0, 0, 0, 0, 0, 0, 337 0, 0, 0, 0, 0, 0, 0, 0, 338 0, 0, 0, 0, 0, 0, 0, 0, 339 0, 0, 0, 0, 0, 0, 0, 0, 340 0, 0, 0, 0, 0, 0, 0, 0, 341 0 342}; 343 344static const short _use_syllable_machine_eof_trans[] = { 345 0, 1, 3, 0, 29, 31, 31, 52, 346 31, 31, 31, 31, 31, 31, 31, 31, 347 31, 31, 31, 31, 31, 31, 31, 31, 348 31, 53, 53, 52, 53, 53, 53, 53, 349 53, 53, 53, 53, 53, 53, 53, 53, 350 53, 70, 70, 74, 74, 74, 74, 74, 351 74, 74, 74, 74, 74, 74, 74, 74, 352 74, 74, 74, 74, 74, 74, 76, 76, 353 76 354}; 355 356static const int use_syllable_machine_start = 3; 357static const int use_syllable_machine_first_final = 3; 358static const int use_syllable_machine_error = 0; 359 360static const int use_syllable_machine_en_main = 3; 361 362 363#line 38 "hb-ot-shape-complex-use-machine.rl" 364 365 366 367#line 145 "hb-ot-shape-complex-use-machine.rl" 368 369 370#define found_syllable(syllable_type) \ 371 HB_STMT_START { \ 372 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \ 373 for (unsigned int i = last; i < p+1; i++) \ 374 info[i].syllable() = (syllable_serial << 4) | syllable_type; \ 375 last = p+1; \ 376 syllable_serial++; \ 377 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ 378 } HB_STMT_END 379 380static void 381find_syllables (hb_buffer_t *buffer) 382{ 383 unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED; 384 int cs; 385 hb_glyph_info_t *info = buffer->info; 386 387#line 388 "hb-ot-shape-complex-use-machine.hh" 388 { 389 cs = use_syllable_machine_start; 390 ts = 0; 391 te = 0; 392 act = 0; 393 } 394 395#line 166 "hb-ot-shape-complex-use-machine.rl" 396 397 398 p = 0; 399 pe = eof = buffer->len; 400 401 unsigned int last = 0; 402 unsigned int syllable_serial = 1; 403 404#line 405 "hb-ot-shape-complex-use-machine.hh" 405 { 406 int _slen; 407 int _trans; 408 const unsigned char *_keys; 409 const char *_inds; 410 if ( p == pe ) 411 goto _test_eof; 412 if ( cs == 0 ) 413 goto _out; 414_resume: 415 switch ( _use_syllable_machine_from_state_actions[cs] ) { 416 case 6: 417#line 1 "NONE" 418 {ts = p;} 419 break; 420#line 421 "hb-ot-shape-complex-use-machine.hh" 421 } 422 423 _keys = _use_syllable_machine_trans_keys + (cs<<1); 424 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs]; 425 426 _slen = _use_syllable_machine_key_spans[cs]; 427 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) && 428 ( info[p].use_category()) <= _keys[1] ? 429 ( info[p].use_category()) - _keys[0] : _slen ]; 430 431_eof_trans: 432 cs = _use_syllable_machine_trans_targs[_trans]; 433 434 if ( _use_syllable_machine_trans_actions[_trans] == 0 ) 435 goto _again; 436 437 switch ( _use_syllable_machine_trans_actions[_trans] ) { 438 case 2: 439#line 1 "NONE" 440 {te = p+1;} 441 break; 442 case 9: 443#line 134 "hb-ot-shape-complex-use-machine.rl" 444 {te = p+1;{ found_syllable (independent_cluster); }} 445 break; 446 case 11: 447#line 136 "hb-ot-shape-complex-use-machine.rl" 448 {te = p+1;{ found_syllable (consonant_cluster); }} 449 break; 450 case 14: 451#line 137 "hb-ot-shape-complex-use-machine.rl" 452 {te = p+1;{ found_syllable (vowel_cluster); }} 453 break; 454 case 16: 455#line 138 "hb-ot-shape-complex-use-machine.rl" 456 {te = p+1;{ found_syllable (number_joiner_terminated_cluster); }} 457 break; 458 case 7: 459#line 141 "hb-ot-shape-complex-use-machine.rl" 460 {te = p+1;{ found_syllable (broken_cluster); }} 461 break; 462 case 8: 463#line 134 "hb-ot-shape-complex-use-machine.rl" 464 {te = p;p--;{ found_syllable (independent_cluster); }} 465 break; 466 case 12: 467#line 135 "hb-ot-shape-complex-use-machine.rl" 468 {te = p;p--;{ found_syllable (virama_terminated_cluster); }} 469 break; 470 case 10: 471#line 136 "hb-ot-shape-complex-use-machine.rl" 472 {te = p;p--;{ found_syllable (consonant_cluster); }} 473 break; 474 case 13: 475#line 137 "hb-ot-shape-complex-use-machine.rl" 476 {te = p;p--;{ found_syllable (vowel_cluster); }} 477 break; 478 case 15: 479#line 139 "hb-ot-shape-complex-use-machine.rl" 480 {te = p;p--;{ found_syllable (numeral_cluster); }} 481 break; 482 case 18: 483#line 140 "hb-ot-shape-complex-use-machine.rl" 484 {te = p;p--;{ found_syllable (symbol_cluster); }} 485 break; 486 case 17: 487#line 141 "hb-ot-shape-complex-use-machine.rl" 488 {te = p;p--;{ found_syllable (broken_cluster); }} 489 break; 490 case 1: 491#line 139 "hb-ot-shape-complex-use-machine.rl" 492 {{p = ((te))-1;}{ found_syllable (numeral_cluster); }} 493 break; 494 case 3: 495#line 1 "NONE" 496 { switch( act ) { 497 case 0: 498 {{cs = 0; goto _again;}} 499 break; 500 case 8: 501 {{p = ((te))-1;} found_syllable (broken_cluster); } 502 break; 503 } 504 } 505 break; 506 case 4: 507#line 1 "NONE" 508 {te = p+1;} 509#line 141 "hb-ot-shape-complex-use-machine.rl" 510 {act = 8;} 511 break; 512#line 513 "hb-ot-shape-complex-use-machine.hh" 513 } 514 515_again: 516 switch ( _use_syllable_machine_to_state_actions[cs] ) { 517 case 5: 518#line 1 "NONE" 519 {ts = 0;} 520#line 1 "NONE" 521 {act = 0;} 522 break; 523#line 524 "hb-ot-shape-complex-use-machine.hh" 524 } 525 526 if ( cs == 0 ) 527 goto _out; 528 if ( ++p != pe ) 529 goto _resume; 530 _test_eof: {} 531 if ( p == eof ) 532 { 533 if ( _use_syllable_machine_eof_trans[cs] > 0 ) { 534 _trans = _use_syllable_machine_eof_trans[cs] - 1; 535 goto _eof_trans; 536 } 537 } 538 539 _out: {} 540 } 541 542#line 175 "hb-ot-shape-complex-use-machine.rl" 543 544} 545 546#undef found_syllable 547 548#endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */ 549