1b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
2b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#line 1 "hb-ot-shape-complex-use-machine.rl"
3b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat/*
4b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Copyright © 2015  Mozilla Foundation.
5b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Copyright © 2015  Google, Inc.
6b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat *
7b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat *  This is part of HarfBuzz, a text shaping library.
8cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko *
9cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * Permission is hereby granted, without written agreement and without
10b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * license or royalty fees, to use, copy, modify, and distribute this
11b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * software and its documentation for any purpose, provided that the
12b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * above copyright notice and the following two paragraphs appear in
13b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * all copies of this software.
14cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko *
15b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
16b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
17b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
18b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
19b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * DAMAGE.
20cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko *
21b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
22cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
23b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
24b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
25b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
26b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat *
27b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Mozilla Author(s): Jonathan Kew
28b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Google Author(s): Behdad Esfahbod
29b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat */
30b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
31b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
32b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
33b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
34b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "hb-private.hh"
35b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
36b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
37b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#line 38 "hb-ot-shape-complex-use-machine.hh"
38b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const unsigned char _use_syllable_machine_trans_keys[] = {
39b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	0u, 0u, 4u, 4u, 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u,
40b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u,
41b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
42b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u,
43b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
44b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 39u, 12u, 21u, 12u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u,
45b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
46b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u,
47b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	42u, 42u, 0
48b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat};
49b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
50b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const char _use_syllable_machine_key_spans[] = {
51b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	0, 1, 1, 40, 1, 32, 32, 1,
52b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	32, 32, 32, 19, 19, 19, 32, 32,
53b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	32, 32, 32, 32, 32, 32, 32, 32,
54b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	32, 32, 32, 1, 32, 32, 19, 19,
55b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	19, 32, 32, 32, 32, 32, 32, 32,
56b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	32, 10, 2, 32, 32, 32, 32, 19,
57b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	19, 19, 32, 32, 32, 32, 32, 32,
58b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	32, 32, 32, 32, 39, 32, 22, 2,
59b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	1
60b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat};
61b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
62b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const short _use_syllable_machine_index_offsets[] = {
63b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	0, 0, 2, 4, 45, 47, 80, 113,
64b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	115, 148, 181, 214, 234, 254, 274, 307,
65b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	340, 373, 406, 439, 472, 505, 538, 571,
66b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	604, 637, 670, 703, 705, 738, 771, 791,
67b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	811, 831, 864, 897, 930, 963, 996, 1029,
68b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	1062, 1095, 1106, 1109, 1142, 1175, 1208, 1241,
69b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	1261, 1281, 1301, 1334, 1367, 1400, 1433, 1466,
70b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	1499, 1532, 1565, 1598, 1631, 1671, 1704, 1727,
71b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	1730
72b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat};
73b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
74b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const char _use_syllable_machine_indicies[] = {
75b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	1, 0, 3, 2, 4, 5, 6,
76b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	4, 1, 5, 8, 8, 7, 8, 8,
77b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	3, 9, 8, 8, 8, 4, 4, 10,
78b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	11, 8, 8, 12, 13, 14, 15, 16,
79b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	17, 18, 12, 19, 20, 21, 22, 23,
80b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	24, 8, 25, 26, 27, 8, 29, 28,
81b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	31, 30, 30, 32, 33, 30, 30, 30,
82b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 34, 35, 36,
83b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	37, 38, 39, 40, 41, 35, 42, 34,
84b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	43, 44, 45, 46, 30, 47, 48, 49,
85b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 31, 30, 30, 32, 33, 30, 30,
86b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 50, 35,
87b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	36, 37, 38, 39, 40, 41, 35, 42,
88b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	43, 43, 44, 45, 46, 30, 47, 48,
89b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	49, 30, 32, 51, 31, 30, 30, 32,
90b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	33, 30, 30, 30, 30, 30, 30, 30,
91b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 35, 36, 37, 38, 39, 40,
92b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	41, 35, 42, 43, 43, 44, 45, 46,
93cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	30, 47, 48, 49, 30, 31, 30, 30,
94b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
95b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 35, 36, 37, 38, 39,
96b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 44, 45,
97b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	46, 30, 47, 48, 49, 30, 31, 30,
98b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
99b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 36, 37, 38,
100b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	39, 30, 30, 30, 30, 30, 30, 30,
101b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 47, 48, 49, 30, 31,
102b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
103b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 37,
104b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	38, 39, 30, 31, 30, 30, 30, 30,
105b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
106b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 38, 39, 30, 31,
107b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
108b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
109b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 39, 30, 31, 30, 30, 30, 30,
110b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
111b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 37, 38, 39, 30, 30,
112b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
113b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	47, 48, 49, 30, 31, 30, 30, 30,
114b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
115b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 37, 38, 39, 30,
116b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
117b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 48, 49, 30, 31, 30, 30,
118b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
119b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 37, 38, 39,
120b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
121b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 49, 30, 31, 30,
122b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
123b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 36, 37, 38,
124b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	39, 30, 30, 30, 30, 30, 30, 44,
125cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	45, 46, 30, 47, 48, 49, 30, 31,
126b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
127b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 36, 37,
128b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	38, 39, 30, 30, 30, 30, 30, 30,
129b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 45, 46, 30, 47, 48, 49, 30,
130b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	31, 30, 30, 30, 30, 30, 30, 30,
131b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 36,
132b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	37, 38, 39, 30, 30, 30, 30, 30,
133b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 46, 30, 47, 48, 49,
134b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 31, 30, 30, 30, 30, 30, 30,
135b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 35,
136b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	36, 37, 38, 39, 30, 41, 35, 30,
137b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 44, 45, 46, 30, 47, 48,
138b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	49, 30, 31, 30, 30, 30, 30, 30,
139b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
140b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	35, 36, 37, 38, 39, 30, 30, 35,
141b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 44, 45, 46, 30, 47,
142b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	48, 49, 30, 31, 30, 30, 30, 30,
143b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 30, 30, 30, 30, 30,
144b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 35, 36, 37, 38, 39, 40, 41,
145b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	35, 30, 30, 30, 44, 45, 46, 30,
146b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	47, 48, 49, 30, 31, 30, 30, 32,
147b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	33, 30, 30, 30, 30, 30, 30, 30,
148b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 35, 36, 37, 38, 39, 40,
149b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	41, 35, 42, 30, 43, 44, 45, 46,
150b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 47, 48, 49, 30, 31, 30, 30,
151b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	32, 33, 30, 30, 30, 30, 30, 30,
152b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	30, 30, 30, 35, 36, 37, 38, 39,
153b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	40, 41, 35, 42, 34, 43, 44, 45,
154b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	46, 30, 47, 48, 49, 30, 53, 52,
155cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	52, 54, 55, 52, 52, 52, 52, 52,
156b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 56, 52, 57, 58, 59,
157b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	60, 61, 62, 57, 63, 56, 64, 52,
158b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 65, 66, 67, 52, 53,
159b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 54, 55, 52, 52, 52, 52,
160b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 68, 52, 57, 58,
161b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	59, 60, 61, 62, 57, 63, 64, 64,
162b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 65, 66, 67, 52,
163cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	54, 51, 53, 52, 52, 54, 55, 52,
164b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
165b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 57, 58, 59, 60, 61, 62, 57,
166b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	63, 64, 64, 52, 52, 52, 52, 65,
167b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	66, 67, 52, 53, 52, 52, 52, 52,
168b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
169b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 57, 58, 59, 60, 52, 52,
170b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
171b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	65, 66, 67, 52, 53, 52, 52, 52,
172b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
173b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 58, 59, 60, 52,
174b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	53, 52, 52, 52, 52, 52, 52, 52,
175b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
176b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 59, 60, 52, 53, 52, 52, 52,
177cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	52, 52, 52, 52, 52, 52, 52, 52,
178cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	52, 52, 52, 52, 52, 52, 60, 52,
179cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	53, 52, 52, 52, 52, 52, 52, 52,
180cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	52, 52, 52, 52, 52, 52, 52, 52,
181cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	58, 59, 60, 52, 52, 52, 52, 52,
182cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	52, 52, 52, 52, 52, 65, 66, 67,
183cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	52, 53, 52, 52, 52, 52, 52, 52,
184b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
185b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 58, 59, 60, 52, 52, 52, 52,
186b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 66,
187b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	67, 52, 53, 52, 52, 52, 52, 52,
188b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
189b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 58, 59, 60, 52, 52, 52,
190b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
191b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 67, 52, 53, 52, 52, 52, 52,
192b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
193b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 57, 58, 59, 60, 52, 62,
194b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	57, 52, 52, 52, 52, 52, 52, 52,
195b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	65, 66, 67, 52, 53, 52, 52, 52,
196b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
197b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 57, 58, 59, 60, 52,
198b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 57, 52, 52, 52, 52, 52, 52,
199b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 65, 66, 67, 52, 53, 52, 52,
200b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 52, 52,
201b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 57, 58, 59, 60,
202b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	61, 62, 57, 52, 52, 52, 52, 52,
203b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 65, 66, 67, 52, 53, 52,
204b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 54, 55, 52, 52, 52, 52, 52,
205b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 57, 58, 59,
206b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	60, 61, 62, 57, 63, 52, 64, 52,
207b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 65, 66, 67, 52, 53,
208b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 54, 55, 52, 52, 52, 52,
209b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 52, 52, 57, 58,
210b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	59, 60, 61, 62, 57, 63, 56, 64,
211b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	52, 52, 52, 52, 65, 66, 67, 52,
212b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	70, 71, 69, 69, 69, 69, 69, 69,
213b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	69, 72, 69, 70, 71, 69, 7, 73,
214b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 3, 9, 73, 73, 73, 73, 73,
215b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 74, 12, 13, 14, 15,
216b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	16, 17, 18, 12, 19, 21, 21, 22,
217b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	23, 24, 73, 25, 26, 27, 73, 7,
218b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 3, 9, 73, 73, 73, 73,
219b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 12, 13, 14,
220b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	15, 16, 17, 18, 12, 19, 21, 21,
221b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	22, 23, 24, 73, 25, 26, 27, 73,
222b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	7, 73, 73, 73, 73, 73, 73, 73,
223cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 73, 73, 73, 73, 73, 12, 13,
224cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	14, 15, 16, 73, 73, 73, 73, 73,
225cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 22, 23, 24, 73, 25, 26, 27,
226b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 7, 73, 73, 73, 73, 73, 73,
227b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
228b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	13, 14, 15, 16, 73, 73, 73, 73,
229b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 25, 26,
230cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	27, 73, 7, 73, 73, 73, 73, 73,
231b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
232b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 14, 15, 16, 73, 7, 73,
233b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
234cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 73, 73, 73, 73, 73, 73, 15,
235cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	16, 73, 7, 73, 73, 73, 73, 73,
236cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 73, 73, 73, 73, 73, 73, 73,
237cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 73, 73, 73, 16, 73, 7, 73,
238cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 73, 73, 73, 73, 73, 73, 73,
239b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 14, 15,
240b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	16, 73, 73, 73, 73, 73, 73, 73,
241b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 25, 26, 27, 73, 7,
242b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
243b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 14,
244b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	15, 16, 73, 73, 73, 73, 73, 73,
245b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 26, 27, 73,
246b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	7, 73, 73, 73, 73, 73, 73, 73,
247b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
248b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	14, 15, 16, 73, 73, 73, 73, 73,
249b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 27,
250b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 7, 73, 73, 73, 73, 73, 73,
251cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	73, 73, 73, 73, 73, 73, 73, 73,
252cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko	13, 14, 15, 16, 73, 73, 73, 73,
253b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 22, 23, 24, 73, 25, 26,
254b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	27, 73, 7, 73, 73, 73, 73, 73,
255b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
256b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 13, 14, 15, 16, 73, 73, 73,
257b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 23, 24, 73, 25,
258b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	26, 27, 73, 7, 73, 73, 73, 73,
259b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 73, 73, 73, 73, 73, 73,
260b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	73, 73, 13, 14, 15, 16, 73, 73,
261b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat	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