Home | History | Annotate | Download | only in harfbuzz
      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.hh"
     35 
     36 
     37 #line 38 "hb-ot-shape-complex-use-machine.hh"
     38 static const unsigned char _use_syllable_machine_trans_keys[] = {
     39 	12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 44u, 21u, 21u, 8u, 44u, 8u, 44u,
     40 	1u, 15u, 1u, 1u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u,
     41 	8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u,
     42 	8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 8u, 44u, 13u, 21u, 4u, 4u, 13u, 13u,
     43 	8u, 44u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u,
     44 	8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u,
     45 	8u, 44u, 8u, 44u, 1u, 39u, 1u, 15u, 12u, 44u, 1u, 44u, 8u, 44u, 21u, 42u,
     46 	41u, 42u, 42u, 42u, 1u, 5u, 0
     47 };
     48 
     49 static const char _use_syllable_machine_key_spans[] = {
     50 	33, 15, 1, 33, 45, 1, 37, 37,
     51 	15, 1, 37, 37, 32, 19, 19, 19,
     52 	32, 32, 32, 37, 37, 37, 37, 37,
     53 	37, 37, 37, 39, 37, 9, 1, 1,
     54 	37, 37, 37, 32, 19, 19, 19, 32,
     55 	32, 32, 37, 37, 37, 37, 37, 37,
     56 	37, 37, 39, 15, 33, 44, 37, 22,
     57 	2, 1, 5
     58 };
     59 
     60 static const short _use_syllable_machine_index_offsets[] = {
     61 	0, 34, 50, 52, 86, 132, 134, 172,
     62 	210, 226, 228, 266, 304, 337, 357, 377,
     63 	397, 430, 463, 496, 534, 572, 610, 648,
     64 	686, 724, 762, 800, 840, 878, 888, 890,
     65 	892, 930, 968, 1006, 1039, 1059, 1079, 1099,
     66 	1132, 1165, 1198, 1236, 1274, 1312, 1350, 1388,
     67 	1426, 1464, 1502, 1542, 1558, 1592, 1637, 1675,
     68 	1698, 1701, 1703
     69 };
     70 
     71 static const char _use_syllable_machine_indicies[] = {
     72 	1, 0, 0, 0, 0, 0, 0, 0,
     73 	0, 0, 0, 0, 0, 0, 0, 0,
     74 	0, 0, 0, 0, 0, 0, 0, 0,
     75 	0, 0, 0, 0, 0, 0, 0, 0,
     76 	1, 0, 3, 2, 2, 2, 2, 2,
     77 	2, 2, 2, 2, 2, 2, 2, 2,
     78 	4, 2, 3, 2, 6, 5, 5, 5,
     79 	5, 5, 5, 5, 5, 5, 5, 5,
     80 	5, 5, 5, 5, 5, 5, 5, 5,
     81 	5, 5, 5, 5, 5, 5, 5, 5,
     82 	5, 5, 5, 5, 6, 5, 7, 8,
     83 	9, 7, 10, 8, 9, 9, 11, 9,
     84 	9, 3, 12, 9, 9, 13, 7, 7,
     85 	14, 15, 9, 9, 16, 17, 18, 19,
     86 	20, 21, 22, 16, 23, 24, 25, 26,
     87 	27, 28, 9, 29, 30, 31, 9, 9,
     88 	9, 32, 33, 9, 35, 34, 37, 36,
     89 	36, 38, 1, 36, 36, 39, 36, 36,
     90 	36, 36, 36, 40, 41, 42, 43, 44,
     91 	45, 46, 47, 41, 48, 40, 49, 50,
     92 	51, 52, 36, 53, 54, 55, 36, 36,
     93 	36, 36, 56, 36, 37, 36, 36, 38,
     94 	1, 36, 36, 39, 36, 36, 36, 36,
     95 	36, 57, 41, 42, 43, 44, 45, 46,
     96 	47, 41, 48, 49, 49, 50, 51, 52,
     97 	36, 53, 54, 55, 36, 36, 36, 36,
     98 	56, 36, 38, 58, 58, 58, 58, 58,
     99 	58, 58, 58, 58, 58, 58, 58, 58,
    100 	59, 58, 38, 58, 37, 36, 36, 38,
    101 	1, 36, 36, 39, 36, 36, 36, 36,
    102 	36, 36, 41, 42, 43, 44, 45, 46,
    103 	47, 41, 48, 49, 49, 50, 51, 52,
    104 	36, 53, 54, 55, 36, 36, 36, 36,
    105 	56, 36, 37, 36, 36, 36, 36, 36,
    106 	36, 36, 36, 36, 36, 36, 36, 36,
    107 	41, 42, 43, 44, 45, 36, 36, 36,
    108 	36, 36, 36, 50, 51, 52, 36, 53,
    109 	54, 55, 36, 36, 36, 36, 42, 36,
    110 	37, 36, 36, 36, 36, 36, 36, 36,
    111 	36, 36, 36, 36, 36, 36, 36, 42,
    112 	43, 44, 45, 36, 36, 36, 36, 36,
    113 	36, 36, 36, 36, 36, 53, 54, 55,
    114 	36, 37, 36, 36, 36, 36, 36, 36,
    115 	36, 36, 36, 36, 36, 36, 36, 36,
    116 	36, 43, 44, 45, 36, 37, 36, 36,
    117 	36, 36, 36, 36, 36, 36, 36, 36,
    118 	36, 36, 36, 36, 36, 36, 44, 45,
    119 	36, 37, 36, 36, 36, 36, 36, 36,
    120 	36, 36, 36, 36, 36, 36, 36, 36,
    121 	36, 36, 36, 45, 36, 37, 36, 36,
    122 	36, 36, 36, 36, 36, 36, 36, 36,
    123 	36, 36, 36, 36, 36, 43, 44, 45,
    124 	36, 36, 36, 36, 36, 36, 36, 36,
    125 	36, 36, 53, 54, 55, 36, 37, 36,
    126 	36, 36, 36, 36, 36, 36, 36, 36,
    127 	36, 36, 36, 36, 36, 36, 43, 44,
    128 	45, 36, 36, 36, 36, 36, 36, 36,
    129 	36, 36, 36, 36, 54, 55, 36, 37,
    130 	36, 36, 36, 36, 36, 36, 36, 36,
    131 	36, 36, 36, 36, 36, 36, 36, 43,
    132 	44, 45, 36, 36, 36, 36, 36, 36,
    133 	36, 36, 36, 36, 36, 36, 55, 36,
    134 	37, 36, 36, 36, 36, 36, 36, 36,
    135 	36, 36, 36, 36, 36, 36, 36, 42,
    136 	43, 44, 45, 36, 36, 36, 36, 36,
    137 	36, 50, 51, 52, 36, 53, 54, 55,
    138 	36, 36, 36, 36, 42, 36, 37, 36,
    139 	36, 36, 36, 36, 36, 36, 36, 36,
    140 	36, 36, 36, 36, 36, 42, 43, 44,
    141 	45, 36, 36, 36, 36, 36, 36, 36,
    142 	51, 52, 36, 53, 54, 55, 36, 36,
    143 	36, 36, 42, 36, 37, 36, 36, 36,
    144 	36, 36, 36, 36, 36, 36, 36, 36,
    145 	36, 36, 36, 42, 43, 44, 45, 36,
    146 	36, 36, 36, 36, 36, 36, 36, 52,
    147 	36, 53, 54, 55, 36, 36, 36, 36,
    148 	42, 36, 37, 36, 36, 36, 36, 36,
    149 	36, 36, 36, 36, 36, 36, 36, 36,
    150 	41, 42, 43, 44, 45, 36, 47, 41,
    151 	36, 36, 36, 50, 51, 52, 36, 53,
    152 	54, 55, 36, 36, 36, 36, 42, 36,
    153 	37, 36, 36, 36, 36, 36, 36, 36,
    154 	36, 36, 36, 36, 36, 36, 41, 42,
    155 	43, 44, 45, 36, 60, 41, 36, 36,
    156 	36, 50, 51, 52, 36, 53, 54, 55,
    157 	36, 36, 36, 36, 42, 36, 37, 36,
    158 	36, 36, 36, 36, 36, 36, 36, 36,
    159 	36, 36, 36, 36, 41, 42, 43, 44,
    160 	45, 36, 36, 41, 36, 36, 36, 50,
    161 	51, 52, 36, 53, 54, 55, 36, 36,
    162 	36, 36, 42, 36, 37, 36, 36, 36,
    163 	36, 36, 36, 36, 36, 36, 36, 36,
    164 	36, 36, 41, 42, 43, 44, 45, 46,
    165 	47, 41, 36, 36, 36, 50, 51, 52,
    166 	36, 53, 54, 55, 36, 36, 36, 36,
    167 	42, 36, 37, 36, 36, 38, 1, 36,
    168 	36, 39, 36, 36, 36, 36, 36, 36,
    169 	41, 42, 43, 44, 45, 46, 47, 41,
    170 	48, 36, 49, 50, 51, 52, 36, 53,
    171 	54, 55, 36, 36, 36, 36, 56, 36,
    172 	38, 58, 58, 58, 58, 58, 58, 37,
    173 	58, 58, 58, 58, 58, 58, 59, 58,
    174 	58, 58, 58, 58, 58, 58, 42, 43,
    175 	44, 45, 58, 58, 58, 58, 58, 58,
    176 	58, 58, 58, 58, 53, 54, 55, 58,
    177 	37, 36, 36, 38, 1, 36, 36, 39,
    178 	36, 36, 36, 36, 36, 36, 41, 42,
    179 	43, 44, 45, 46, 47, 41, 48, 40,
    180 	49, 50, 51, 52, 36, 53, 54, 55,
    181 	36, 36, 36, 36, 56, 36, 62, 61,
    182 	61, 61, 61, 61, 61, 61, 63, 61,
    183 	10, 64, 62, 61, 11, 65, 65, 3,
    184 	6, 65, 65, 66, 65, 65, 65, 65,
    185 	65, 67, 16, 17, 18, 19, 20, 21,
    186 	22, 16, 23, 25, 25, 26, 27, 28,
    187 	65, 29, 30, 31, 65, 65, 65, 65,
    188 	33, 65, 11, 65, 65, 3, 6, 65,
    189 	65, 66, 65, 65, 65, 65, 65, 65,
    190 	16, 17, 18, 19, 20, 21, 22, 16,
    191 	23, 25, 25, 26, 27, 28, 65, 29,
    192 	30, 31, 65, 65, 65, 65, 33, 65,
    193 	11, 65, 65, 65, 65, 65, 65, 65,
    194 	65, 65, 65, 65, 65, 65, 16, 17,
    195 	18, 19, 20, 65, 65, 65, 65, 65,
    196 	65, 26, 27, 28, 65, 29, 30, 31,
    197 	65, 65, 65, 65, 17, 65, 11, 65,
    198 	65, 65, 65, 65, 65, 65, 65, 65,
    199 	65, 65, 65, 65, 65, 17, 18, 19,
    200 	20, 65, 65, 65, 65, 65, 65, 65,
    201 	65, 65, 65, 29, 30, 31, 65, 11,
    202 	65, 65, 65, 65, 65, 65, 65, 65,
    203 	65, 65, 65, 65, 65, 65, 65, 18,
    204 	19, 20, 65, 11, 65, 65, 65, 65,
    205 	65, 65, 65, 65, 65, 65, 65, 65,
    206 	65, 65, 65, 65, 19, 20, 65, 11,
    207 	65, 65, 65, 65, 65, 65, 65, 65,
    208 	65, 65, 65, 65, 65, 65, 65, 65,
    209 	65, 20, 65, 11, 65, 65, 65, 65,
    210 	65, 65, 65, 65, 65, 65, 65, 65,
    211 	65, 65, 65, 18, 19, 20, 65, 65,
    212 	65, 65, 65, 65, 65, 65, 65, 65,
    213 	29, 30, 31, 65, 11, 65, 65, 65,
    214 	65, 65, 65, 65, 65, 65, 65, 65,
    215 	65, 65, 65, 65, 18, 19, 20, 65,
    216 	65, 65, 65, 65, 65, 65, 65, 65,
    217 	65, 65, 30, 31, 65, 11, 65, 65,
    218 	65, 65, 65, 65, 65, 65, 65, 65,
    219 	65, 65, 65, 65, 65, 18, 19, 20,
    220 	65, 65, 65, 65, 65, 65, 65, 65,
    221 	65, 65, 65, 65, 31, 65, 11, 65,
    222 	65, 65, 65, 65, 65, 65, 65, 65,
    223 	65, 65, 65, 65, 65, 17, 18, 19,
    224 	20, 65, 65, 65, 65, 65, 65, 26,
    225 	27, 28, 65, 29, 30, 31, 65, 65,
    226 	65, 65, 17, 65, 11, 65, 65, 65,
    227 	65, 65, 65, 65, 65, 65, 65, 65,
    228 	65, 65, 65, 17, 18, 19, 20, 65,
    229 	65, 65, 65, 65, 65, 65, 27, 28,
    230 	65, 29, 30, 31, 65, 65, 65, 65,
    231 	17, 65, 11, 65, 65, 65, 65, 65,
    232 	65, 65, 65, 65, 65, 65, 65, 65,
    233 	65, 17, 18, 19, 20, 65, 65, 65,
    234 	65, 65, 65, 65, 65, 28, 65, 29,
    235 	30, 31, 65, 65, 65, 65, 17, 65,
    236 	11, 65, 65, 65, 65, 65, 65, 65,
    237 	65, 65, 65, 65, 65, 65, 16, 17,
    238 	18, 19, 20, 65, 22, 16, 65, 65,
    239 	65, 26, 27, 28, 65, 29, 30, 31,
    240 	65, 65, 65, 65, 17, 65, 11, 65,
    241 	65, 65, 65, 65, 65, 65, 65, 65,
    242 	65, 65, 65, 65, 16, 17, 18, 19,
    243 	20, 65, 68, 16, 65, 65, 65, 26,
    244 	27, 28, 65, 29, 30, 31, 65, 65,
    245 	65, 65, 17, 65, 11, 65, 65, 65,
    246 	65, 65, 65, 65, 65, 65, 65, 65,
    247 	65, 65, 16, 17, 18, 19, 20, 65,
    248 	65, 16, 65, 65, 65, 26, 27, 28,
    249 	65, 29, 30, 31, 65, 65, 65, 65,
    250 	17, 65, 11, 65, 65, 65, 65, 65,
    251 	65, 65, 65, 65, 65, 65, 65, 65,
    252 	16, 17, 18, 19, 20, 21, 22, 16,
    253 	65, 65, 65, 26, 27, 28, 65, 29,
    254 	30, 31, 65, 65, 65, 65, 17, 65,
    255 	11, 65, 65, 3, 6, 65, 65, 66,
    256 	65, 65, 65, 65, 65, 65, 16, 17,
    257 	18, 19, 20, 21, 22, 16, 23, 65,
    258 	25, 26, 27, 28, 65, 29, 30, 31,
    259 	65, 65, 65, 65, 33, 65, 3, 65,
    260 	65, 65, 65, 65, 65, 11, 65, 65,
    261 	65, 65, 65, 65, 4, 65, 65, 65,
    262 	65, 65, 65, 65, 17, 18, 19, 20,
    263 	65, 65, 65, 65, 65, 65, 65, 65,
    264 	65, 65, 29, 30, 31, 65, 3, 69,
    265 	69, 69, 69, 69, 69, 69, 69, 69,
    266 	69, 69, 69, 69, 4, 69, 6, 69,
    267 	69, 69, 69, 69, 69, 69, 69, 69,
    268 	69, 69, 69, 69, 69, 69, 69, 69,
    269 	69, 69, 69, 69, 69, 69, 69, 69,
    270 	69, 69, 69, 69, 69, 69, 6, 69,
    271 	8, 65, 65, 65, 8, 65, 65, 11,
    272 	65, 65, 3, 6, 65, 65, 66, 65,
    273 	65, 65, 65, 65, 65, 16, 17, 18,
    274 	19, 20, 21, 22, 16, 23, 24, 25,
    275 	26, 27, 28, 65, 29, 30, 31, 65,
    276 	65, 65, 65, 33, 65, 11, 65, 65,
    277 	3, 6, 65, 65, 66, 65, 65, 65,
    278 	65, 65, 65, 16, 17, 18, 19, 20,
    279 	21, 22, 16, 23, 24, 25, 26, 27,
    280 	28, 65, 29, 30, 31, 65, 65, 65,
    281 	65, 33, 65, 71, 70, 70, 70, 70,
    282 	70, 70, 70, 70, 70, 70, 70, 70,
    283 	70, 70, 70, 70, 70, 70, 70, 71,
    284 	72, 70, 71, 72, 70, 72, 70, 8,
    285 	69, 69, 69, 8, 69, 0
    286 };
    287 
    288 static const char _use_syllable_machine_trans_targs[] = {
    289 	4, 8, 4, 32, 2, 4, 1, 5,
    290 	6, 4, 29, 4, 51, 52, 53, 55,
    291 	34, 35, 36, 37, 38, 45, 46, 48,
    292 	54, 49, 42, 43, 44, 39, 40, 41,
    293 	58, 50, 4, 4, 4, 4, 7, 0,
    294 	28, 11, 12, 13, 14, 15, 22, 23,
    295 	25, 26, 19, 20, 21, 16, 17, 18,
    296 	27, 10, 4, 9, 24, 4, 30, 31,
    297 	4, 4, 3, 33, 47, 4, 4, 56,
    298 	57
    299 };
    300 
    301 static const char _use_syllable_machine_trans_actions[] = {
    302 	1, 0, 2, 3, 0, 4, 0, 0,
    303 	7, 8, 0, 9, 10, 10, 3, 0,
    304 	0, 0, 0, 0, 0, 0, 0, 0,
    305 	3, 3, 0, 0, 0, 0, 0, 0,
    306 	0, 3, 11, 12, 13, 14, 7, 0,
    307 	7, 0, 0, 0, 0, 0, 0, 0,
    308 	0, 7, 0, 0, 0, 0, 0, 0,
    309 	0, 7, 15, 0, 0, 16, 0, 0,
    310 	17, 18, 0, 3, 0, 19, 20, 0,
    311 	0
    312 };
    313 
    314 static const char _use_syllable_machine_to_state_actions[] = {
    315 	0, 0, 0, 0, 5, 0, 0, 0,
    316 	0, 0, 0, 0, 0, 0, 0, 0,
    317 	0, 0, 0, 0, 0, 0, 0, 0,
    318 	0, 0, 0, 0, 0, 0, 0, 0,
    319 	0, 0, 0, 0, 0, 0, 0, 0,
    320 	0, 0, 0, 0, 0, 0, 0, 0,
    321 	0, 0, 0, 0, 0, 0, 0, 0,
    322 	0, 0, 0
    323 };
    324 
    325 static const char _use_syllable_machine_from_state_actions[] = {
    326 	0, 0, 0, 0, 6, 0, 0, 0,
    327 	0, 0, 0, 0, 0, 0, 0, 0,
    328 	0, 0, 0, 0, 0, 0, 0, 0,
    329 	0, 0, 0, 0, 0, 0, 0, 0,
    330 	0, 0, 0, 0, 0, 0, 0, 0,
    331 	0, 0, 0, 0, 0, 0, 0, 0,
    332 	0, 0, 0, 0, 0, 0, 0, 0,
    333 	0, 0, 0
    334 };
    335 
    336 static const short _use_syllable_machine_eof_trans[] = {
    337 	1, 3, 3, 6, 0, 35, 37, 37,
    338 	59, 59, 37, 37, 37, 37, 37, 37,
    339 	37, 37, 37, 37, 37, 37, 37, 37,
    340 	37, 37, 37, 59, 37, 62, 65, 62,
    341 	66, 66, 66, 66, 66, 66, 66, 66,
    342 	66, 66, 66, 66, 66, 66, 66, 66,
    343 	66, 66, 66, 70, 70, 66, 66, 71,
    344 	71, 71, 70
    345 };
    346 
    347 static const int use_syllable_machine_start = 4;
    348 static const int use_syllable_machine_first_final = 4;
    349 static const int use_syllable_machine_error = -1;
    350 
    351 static const int use_syllable_machine_en_main = 4;
    352 
    353 
    354 #line 38 "hb-ot-shape-complex-use-machine.rl"
    355 
    356 
    357 
    358 #line 143 "hb-ot-shape-complex-use-machine.rl"
    359 
    360 
    361 #define found_syllable(syllable_type) \
    362   HB_STMT_START { \
    363     if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
    364     for (unsigned int i = ts; i < te; i++) \
    365       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
    366     syllable_serial++; \
    367     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
    368   } HB_STMT_END
    369 
    370 static void
    371 find_syllables (hb_buffer_t *buffer)
    372 {
    373   unsigned int p, pe, eof, ts, te, act;
    374   int cs;
    375   hb_glyph_info_t *info = buffer->info;
    376 
    377 #line 378 "hb-ot-shape-complex-use-machine.hh"
    378 	{
    379 	cs = use_syllable_machine_start;
    380 	ts = 0;
    381 	te = 0;
    382 	act = 0;
    383 	}
    384 
    385 #line 163 "hb-ot-shape-complex-use-machine.rl"
    386 
    387 
    388   p = 0;
    389   pe = eof = buffer->len;
    390 
    391   unsigned int syllable_serial = 1;
    392 
    393 #line 394 "hb-ot-shape-complex-use-machine.hh"
    394 	{
    395 	int _slen;
    396 	int _trans;
    397 	const unsigned char *_keys;
    398 	const char *_inds;
    399 	if ( p == pe )
    400 		goto _test_eof;
    401 _resume:
    402 	switch ( _use_syllable_machine_from_state_actions[cs] ) {
    403 	case 6:
    404 #line 1 "NONE"
    405 	{ts = p;}
    406 	break;
    407 #line 408 "hb-ot-shape-complex-use-machine.hh"
    408 	}
    409 
    410 	_keys = _use_syllable_machine_trans_keys + (cs<<1);
    411 	_inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
    412 
    413 	_slen = _use_syllable_machine_key_spans[cs];
    414 	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) &&
    415 		( info[p].use_category()) <= _keys[1] ?
    416 		( info[p].use_category()) - _keys[0] : _slen ];
    417 
    418 _eof_trans:
    419 	cs = _use_syllable_machine_trans_targs[_trans];
    420 
    421 	if ( _use_syllable_machine_trans_actions[_trans] == 0 )
    422 		goto _again;
    423 
    424 	switch ( _use_syllable_machine_trans_actions[_trans] ) {
    425 	case 7:
    426 #line 1 "NONE"
    427 	{te = p+1;}
    428 	break;
    429 	case 12:
    430 #line 132 "hb-ot-shape-complex-use-machine.rl"
    431 	{te = p+1;{ found_syllable (independent_cluster); }}
    432 	break;
    433 	case 14:
    434 #line 134 "hb-ot-shape-complex-use-machine.rl"
    435 	{te = p+1;{ found_syllable (standard_cluster); }}
    436 	break;
    437 	case 9:
    438 #line 138 "hb-ot-shape-complex-use-machine.rl"
    439 	{te = p+1;{ found_syllable (broken_cluster); }}
    440 	break;
    441 	case 8:
    442 #line 139 "hb-ot-shape-complex-use-machine.rl"
    443 	{te = p+1;{ found_syllable (non_cluster); }}
    444 	break;
    445 	case 11:
    446 #line 132 "hb-ot-shape-complex-use-machine.rl"
    447 	{te = p;p--;{ found_syllable (independent_cluster); }}
    448 	break;
    449 	case 15:
    450 #line 133 "hb-ot-shape-complex-use-machine.rl"
    451 	{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
    452 	break;
    453 	case 13:
    454 #line 134 "hb-ot-shape-complex-use-machine.rl"
    455 	{te = p;p--;{ found_syllable (standard_cluster); }}
    456 	break;
    457 	case 17:
    458 #line 135 "hb-ot-shape-complex-use-machine.rl"
    459 	{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
    460 	break;
    461 	case 16:
    462 #line 136 "hb-ot-shape-complex-use-machine.rl"
    463 	{te = p;p--;{ found_syllable (numeral_cluster); }}
    464 	break;
    465 	case 20:
    466 #line 137 "hb-ot-shape-complex-use-machine.rl"
    467 	{te = p;p--;{ found_syllable (symbol_cluster); }}
    468 	break;
    469 	case 18:
    470 #line 138 "hb-ot-shape-complex-use-machine.rl"
    471 	{te = p;p--;{ found_syllable (broken_cluster); }}
    472 	break;
    473 	case 19:
    474 #line 139 "hb-ot-shape-complex-use-machine.rl"
    475 	{te = p;p--;{ found_syllable (non_cluster); }}
    476 	break;
    477 	case 1:
    478 #line 134 "hb-ot-shape-complex-use-machine.rl"
    479 	{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
    480 	break;
    481 	case 4:
    482 #line 138 "hb-ot-shape-complex-use-machine.rl"
    483 	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
    484 	break;
    485 	case 2:
    486 #line 1 "NONE"
    487 	{	switch( act ) {
    488 	case 7:
    489 	{{p = ((te))-1;} found_syllable (broken_cluster); }
    490 	break;
    491 	case 8:
    492 	{{p = ((te))-1;} found_syllable (non_cluster); }
    493 	break;
    494 	}
    495 	}
    496 	break;
    497 	case 3:
    498 #line 1 "NONE"
    499 	{te = p+1;}
    500 #line 138 "hb-ot-shape-complex-use-machine.rl"
    501 	{act = 7;}
    502 	break;
    503 	case 10:
    504 #line 1 "NONE"
    505 	{te = p+1;}
    506 #line 139 "hb-ot-shape-complex-use-machine.rl"
    507 	{act = 8;}
    508 	break;
    509 #line 510 "hb-ot-shape-complex-use-machine.hh"
    510 	}
    511 
    512 _again:
    513 	switch ( _use_syllable_machine_to_state_actions[cs] ) {
    514 	case 5:
    515 #line 1 "NONE"
    516 	{ts = 0;}
    517 	break;
    518 #line 519 "hb-ot-shape-complex-use-machine.hh"
    519 	}
    520 
    521 	if ( ++p != pe )
    522 		goto _resume;
    523 	_test_eof: {}
    524 	if ( p == eof )
    525 	{
    526 	if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
    527 		_trans = _use_syllable_machine_eof_trans[cs] - 1;
    528 		goto _eof_trans;
    529 	}
    530 	}
    531 
    532 	}
    533 
    534 #line 171 "hb-ot-shape-complex-use-machine.rl"
    535 
    536 }
    537 
    538 #undef found_syllable
    539 
    540 #endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */
    541