• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #line 1 "hb-buffer-deserialize-text.rl"
3 /*
4  * Copyright © 2013  Google, Inc.
5  *
6  *  This is part of HarfBuzz, a text shaping library.
7  *
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.
13  *
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
18  * DAMAGE.
19  *
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.
25  *
26  * Google Author(s): Behdad Esfahbod
27  */
28 
29 #ifndef HB_BUFFER_DESERIALIZE_TEXT_HH
30 #define HB_BUFFER_DESERIALIZE_TEXT_HH
31 
32 #include "hb.hh"
33 
34 
35 #line 33 "hb-buffer-deserialize-text.hh"
36 static const unsigned char _deserialize_text_trans_keys[] = {
37 	0u, 0u, 9u, 91u, 85u, 85u, 43u, 43u, 48u, 102u, 9u, 85u, 48u, 57u, 48u, 57u,
38 	45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 44u, 44u,
39 	45u, 57u, 48u, 57u, 44u, 57u, 43u, 124u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u,
40 	9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u,
41 	9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u,
42 	0
43 };
44 
45 static const char _deserialize_text_key_spans[] = {
46 	0, 83, 1, 1, 55, 77, 10, 10,
47 	13, 10, 13, 10, 10, 13, 10, 1,
48 	13, 10, 14, 82, 116, 116, 0, 77,
49 	116, 116, 116, 116, 116, 116, 116, 116,
50 	116, 116, 116, 116, 116, 116, 116, 116
51 };
52 
53 static const short _deserialize_text_index_offsets[] = {
54 	0, 0, 84, 86, 88, 144, 222, 233,
55 	244, 258, 269, 283, 294, 305, 319, 330,
56 	332, 346, 357, 372, 455, 572, 689, 690,
57 	768, 885, 1002, 1119, 1236, 1353, 1470, 1587,
58 	1704, 1821, 1938, 2055, 2172, 2289, 2406, 2523
59 };
60 
61 static const char _deserialize_text_indicies[] = {
62 	0, 0, 0, 0, 0, 1, 1,
63 	1, 1, 1, 1, 1, 1, 1, 1,
64 	1, 1, 1, 1, 1, 1, 1, 1,
65 	0, 1, 1, 1, 1, 1, 1, 1,
66 	1, 1, 1, 1, 1, 1, 1, 1,
67 	1, 1, 1, 1, 1, 1, 1, 1,
68 	1, 1, 1, 1, 2, 1, 1, 1,
69 	1, 1, 1, 1, 1, 1, 1, 1,
70 	1, 1, 1, 1, 1, 1, 1, 1,
71 	1, 1, 1, 1, 1, 1, 1, 1,
72 	1, 1, 1, 3, 1, 4, 1, 5,
73 	1, 6, 6, 6, 6, 6, 6, 6,
74 	6, 6, 6, 1, 1, 1, 1, 1,
75 	1, 1, 6, 6, 6, 6, 6, 6,
76 	1, 1, 1, 1, 1, 1, 1, 1,
77 	1, 1, 1, 1, 1, 1, 1, 1,
78 	1, 1, 1, 1, 1, 1, 1, 1,
79 	1, 1, 6, 6, 6, 6, 6, 6,
80 	1, 7, 7, 7, 7, 7, 1, 1,
81 	1, 1, 1, 1, 1, 1, 1, 1,
82 	1, 1, 1, 1, 1, 1, 1, 1,
83 	7, 1, 1, 1, 1, 1, 1, 1,
84 	1, 1, 1, 1, 1, 1, 1, 1,
85 	1, 1, 1, 1, 1, 1, 1, 1,
86 	1, 1, 1, 1, 1, 1, 1, 1,
87 	1, 1, 1, 1, 1, 1, 1, 1,
88 	1, 1, 1, 1, 1, 1, 1, 1,
89 	1, 1, 1, 1, 1, 4, 1, 8,
90 	9, 9, 9, 9, 9, 9, 9, 9,
91 	9, 1, 10, 11, 11, 11, 11, 11,
92 	11, 11, 11, 11, 1, 12, 1, 1,
93 	13, 14, 14, 14, 14, 14, 14, 14,
94 	14, 14, 1, 15, 16, 16, 16, 16,
95 	16, 16, 16, 16, 16, 1, 17, 1,
96 	1, 18, 19, 19, 19, 19, 19, 19,
97 	19, 19, 19, 1, 20, 21, 21, 21,
98 	21, 21, 21, 21, 21, 21, 1, 22,
99 	23, 23, 23, 23, 23, 23, 23, 23,
100 	23, 1, 24, 1, 1, 25, 26, 26,
101 	26, 26, 26, 26, 26, 26, 26, 1,
102 	27, 28, 28, 28, 28, 28, 28, 28,
103 	28, 28, 1, 29, 1, 30, 1, 1,
104 	31, 32, 32, 32, 32, 32, 32, 32,
105 	32, 32, 1, 33, 34, 34, 34, 34,
106 	34, 34, 34, 34, 34, 1, 29, 1,
107 	1, 1, 28, 28, 28, 28, 28, 28,
108 	28, 28, 28, 28, 1, 35, 35, 1,
109 	1, 1, 1, 1, 1, 1, 1, 1,
110 	1, 1, 1, 1, 1, 1, 1, 35,
111 	1, 1, 35, 1, 1, 1, 1, 1,
112 	1, 1, 1, 1, 1, 1, 1, 1,
113 	1, 1, 1, 1, 1, 1, 1, 1,
114 	1, 1, 1, 1, 1, 1, 35, 35,
115 	1, 1, 1, 1, 1, 1, 1, 1,
116 	1, 1, 1, 1, 1, 1, 1, 1,
117 	1, 1, 1, 1, 1, 1, 1, 1,
118 	1, 1, 1, 1, 1, 1, 35, 1,
119 	36, 36, 36, 36, 36, 1, 1, 1,
120 	1, 1, 1, 1, 1, 1, 1, 1,
121 	1, 1, 1, 1, 1, 1, 1, 36,
122 	1, 1, 1, 1, 1, 1, 1, 1,
123 	1, 1, 1, 1, 1, 1, 1, 37,
124 	37, 37, 37, 37, 37, 37, 37, 37,
125 	37, 1, 1, 1, 38, 39, 1, 1,
126 	37, 37, 37, 37, 37, 37, 1, 1,
127 	1, 1, 1, 1, 1, 1, 1, 1,
128 	1, 1, 1, 1, 1, 1, 1, 1,
129 	1, 1, 1, 1, 1, 1, 1, 1,
130 	37, 37, 37, 37, 37, 37, 1, 1,
131 	1, 1, 1, 1, 1, 1, 1, 1,
132 	1, 1, 1, 1, 1, 1, 1, 1,
133 	1, 1, 1, 40, 1, 41, 41, 41,
134 	41, 41, 1, 1, 1, 1, 1, 1,
135 	1, 1, 1, 1, 1, 1, 1, 1,
136 	1, 1, 1, 1, 41, 1, 1, 1,
137 	1, 1, 1, 1, 1, 1, 1, 1,
138 	1, 1, 1, 1, 1, 1, 1, 1,
139 	1, 1, 1, 1, 1, 1, 1, 1,
140 	1, 1, 42, 1, 1, 1, 1, 1,
141 	1, 1, 1, 1, 1, 1, 1, 1,
142 	1, 1, 1, 1, 1, 1, 1, 1,
143 	1, 1, 1, 1, 1, 1, 1, 1,
144 	1, 1, 1, 1, 1, 1, 1, 1,
145 	1, 1, 1, 1, 1, 1, 1, 1,
146 	1, 1, 1, 1, 1, 1, 1, 1,
147 	1, 1, 1, 1, 1, 1, 1, 1,
148 	43, 1, 1, 7, 7, 7, 7, 7,
149 	1, 1, 1, 1, 1, 1, 1, 1,
150 	1, 1, 1, 1, 1, 1, 1, 1,
151 	1, 1, 7, 1, 1, 1, 1, 1,
152 	1, 1, 1, 1, 1, 1, 1, 1,
153 	1, 1, 1, 1, 1, 1, 1, 1,
154 	1, 1, 1, 1, 1, 1, 1, 1,
155 	1, 1, 1, 1, 1, 1, 1, 1,
156 	1, 1, 1, 1, 1, 1, 1, 1,
157 	1, 1, 1, 1, 1, 1, 1, 4,
158 	1, 44, 44, 44, 44, 44, 1, 1,
159 	1, 1, 1, 1, 1, 1, 1, 1,
160 	1, 1, 1, 1, 1, 1, 1, 1,
161 	44, 1, 1, 1, 1, 1, 1, 1,
162 	1, 1, 1, 1, 1, 1, 1, 1,
163 	1, 1, 1, 1, 1, 1, 1, 1,
164 	1, 1, 1, 1, 1, 1, 45, 1,
165 	1, 1, 1, 1, 1, 1, 1, 1,
166 	1, 1, 1, 1, 1, 1, 1, 1,
167 	1, 1, 1, 1, 1, 1, 1, 1,
168 	1, 1, 1, 1, 1, 1, 1, 1,
169 	1, 1, 1, 1, 1, 1, 1, 1,
170 	1, 1, 1, 1, 1, 1, 1, 1,
171 	1, 1, 1, 1, 1, 1, 1, 1,
172 	1, 1, 1, 1, 46, 1, 44, 44,
173 	44, 44, 44, 1, 1, 1, 1, 1,
174 	1, 1, 1, 1, 1, 1, 1, 1,
175 	1, 1, 1, 1, 1, 44, 1, 1,
176 	1, 1, 1, 1, 1, 1, 1, 1,
177 	1, 1, 1, 1, 1, 47, 47, 47,
178 	47, 47, 47, 47, 47, 47, 47, 1,
179 	1, 1, 1, 45, 1, 1, 1, 1,
180 	1, 1, 1, 1, 1, 1, 1, 1,
181 	1, 1, 1, 1, 1, 1, 1, 1,
182 	1, 1, 1, 1, 1, 1, 1, 1,
183 	1, 1, 1, 1, 1, 1, 1, 1,
184 	1, 1, 1, 1, 1, 1, 1, 1,
185 	1, 1, 1, 1, 1, 1, 1, 1,
186 	1, 1, 1, 1, 1, 1, 1, 1,
187 	1, 46, 1, 49, 49, 49, 49, 49,
188 	48, 48, 48, 48, 48, 48, 48, 48,
189 	48, 48, 48, 48, 48, 48, 48, 48,
190 	48, 48, 49, 48, 48, 50, 48, 48,
191 	48, 48, 48, 48, 48, 51, 1, 48,
192 	48, 48, 48, 48, 48, 48, 48, 48,
193 	48, 48, 48, 48, 48, 48, 48, 52,
194 	48, 48, 53, 48, 48, 48, 48, 48,
195 	48, 48, 48, 48, 48, 48, 48, 48,
196 	48, 48, 48, 48, 48, 48, 48, 48,
197 	48, 48, 48, 48, 48, 48, 54, 55,
198 	48, 48, 48, 48, 48, 48, 48, 48,
199 	48, 48, 48, 48, 48, 48, 48, 48,
200 	48, 48, 48, 48, 48, 48, 48, 48,
201 	48, 48, 48, 48, 48, 48, 56, 48,
202 	57, 57, 57, 57, 57, 35, 35, 35,
203 	35, 35, 35, 35, 35, 35, 35, 35,
204 	35, 35, 35, 35, 35, 35, 35, 57,
205 	35, 35, 58, 35, 35, 35, 35, 35,
206 	35, 35, 59, 1, 35, 35, 35, 35,
207 	35, 35, 35, 35, 35, 35, 35, 35,
208 	35, 35, 35, 35, 60, 35, 35, 61,
209 	35, 35, 35, 35, 35, 35, 35, 35,
210 	35, 35, 35, 35, 35, 35, 35, 35,
211 	35, 35, 35, 35, 35, 35, 35, 35,
212 	35, 35, 35, 62, 63, 35, 35, 35,
213 	35, 35, 35, 35, 35, 35, 35, 35,
214 	35, 35, 35, 35, 35, 35, 35, 35,
215 	35, 35, 35, 35, 35, 35, 35, 35,
216 	35, 35, 35, 64, 35, 65, 65, 65,
217 	65, 65, 1, 1, 1, 1, 1, 1,
218 	1, 1, 1, 1, 1, 1, 1, 1,
219 	1, 1, 1, 1, 65, 1, 1, 1,
220 	1, 1, 1, 1, 1, 1, 1, 1,
221 	1, 1, 1, 1, 1, 1, 1, 1,
222 	1, 1, 1, 1, 1, 1, 1, 1,
223 	1, 1, 1, 1, 1, 1, 1, 1,
224 	1, 1, 1, 1, 1, 1, 1, 1,
225 	1, 1, 1, 1, 1, 1, 1, 1,
226 	1, 1, 1, 1, 1, 1, 1, 1,
227 	1, 66, 1, 1, 1, 1, 1, 1,
228 	1, 1, 1, 1, 1, 1, 1, 1,
229 	1, 1, 1, 1, 1, 1, 1, 1,
230 	1, 1, 1, 1, 1, 1, 1, 1,
231 	67, 1, 68, 68, 68, 68, 68, 1,
232 	1, 1, 1, 1, 1, 1, 1, 1,
233 	1, 1, 1, 1, 1, 1, 1, 1,
234 	1, 68, 1, 1, 1, 1, 1, 1,
235 	1, 1, 1, 1, 1, 1, 1, 1,
236 	1, 1, 1, 1, 1, 1, 1, 1,
237 	1, 1, 1, 1, 1, 1, 1, 1,
238 	1, 1, 1, 1, 1, 1, 1, 1,
239 	1, 1, 1, 1, 1, 1, 1, 1,
240 	1, 1, 1, 1, 1, 1, 1, 1,
241 	1, 1, 1, 1, 1, 1, 42, 1,
242 	1, 1, 1, 1, 1, 1, 1, 1,
243 	1, 1, 1, 1, 1, 1, 1, 1,
244 	1, 1, 1, 1, 1, 1, 1, 1,
245 	1, 1, 1, 1, 1, 69, 1, 70,
246 	70, 70, 70, 70, 48, 48, 48, 48,
247 	48, 48, 48, 48, 48, 48, 48, 48,
248 	48, 48, 48, 48, 48, 48, 70, 48,
249 	48, 50, 48, 48, 48, 48, 48, 48,
250 	48, 51, 1, 48, 48, 48, 48, 48,
251 	48, 48, 48, 48, 48, 48, 48, 48,
252 	48, 48, 48, 52, 48, 48, 53, 48,
253 	48, 48, 48, 48, 48, 48, 48, 48,
254 	48, 48, 48, 48, 48, 48, 48, 48,
255 	48, 48, 48, 48, 48, 48, 48, 48,
256 	48, 48, 54, 55, 48, 48, 48, 48,
257 	48, 48, 48, 48, 48, 48, 48, 48,
258 	48, 48, 48, 48, 48, 48, 48, 48,
259 	48, 48, 48, 48, 48, 48, 48, 48,
260 	48, 48, 56, 48, 71, 71, 71, 71,
261 	71, 1, 1, 1, 1, 1, 1, 1,
262 	1, 1, 1, 1, 1, 1, 1, 1,
263 	1, 1, 1, 71, 1, 1, 72, 1,
264 	1, 1, 1, 1, 1, 1, 1, 73,
265 	1, 1, 1, 1, 1, 1, 1, 1,
266 	1, 1, 1, 1, 1, 1, 1, 1,
267 	1, 1, 1, 1, 1, 1, 1, 1,
268 	1, 1, 1, 1, 1, 1, 1, 1,
269 	1, 1, 1, 1, 1, 1, 1, 1,
270 	1, 1, 1, 1, 1, 1, 1, 1,
271 	74, 1, 1, 1, 1, 1, 1, 1,
272 	1, 1, 1, 1, 1, 1, 1, 1,
273 	1, 1, 1, 1, 1, 1, 1, 1,
274 	1, 1, 1, 1, 1, 1, 1, 75,
275 	1, 76, 76, 76, 76, 76, 1, 1,
276 	1, 1, 1, 1, 1, 1, 1, 1,
277 	1, 1, 1, 1, 1, 1, 1, 1,
278 	76, 1, 1, 77, 1, 1, 1, 1,
279 	1, 1, 1, 1, 1, 1, 1, 1,
280 	1, 1, 1, 1, 1, 1, 1, 1,
281 	1, 1, 1, 1, 1, 1, 1, 1,
282 	1, 1, 1, 1, 1, 1, 1, 1,
283 	1, 1, 1, 1, 1, 1, 1, 1,
284 	1, 1, 1, 1, 1, 1, 1, 1,
285 	1, 1, 1, 1, 1, 78, 1, 1,
286 	1, 1, 1, 1, 1, 1, 1, 1,
287 	1, 1, 1, 1, 1, 1, 1, 1,
288 	1, 1, 1, 1, 1, 1, 1, 1,
289 	1, 1, 1, 1, 79, 1, 76, 76,
290 	76, 76, 76, 1, 1, 1, 1, 1,
291 	1, 1, 1, 1, 1, 1, 1, 1,
292 	1, 1, 1, 1, 1, 76, 1, 1,
293 	77, 1, 1, 1, 1, 1, 1, 1,
294 	1, 1, 1, 1, 1, 21, 21, 21,
295 	21, 21, 21, 21, 21, 21, 21, 1,
296 	1, 1, 1, 1, 1, 1, 1, 1,
297 	1, 1, 1, 1, 1, 1, 1, 1,
298 	1, 1, 1, 1, 1, 1, 1, 1,
299 	1, 1, 1, 1, 1, 1, 1, 1,
300 	1, 1, 78, 1, 1, 1, 1, 1,
301 	1, 1, 1, 1, 1, 1, 1, 1,
302 	1, 1, 1, 1, 1, 1, 1, 1,
303 	1, 1, 1, 1, 1, 1, 1, 1,
304 	1, 79, 1, 71, 71, 71, 71, 71,
305 	1, 1, 1, 1, 1, 1, 1, 1,
306 	1, 1, 1, 1, 1, 1, 1, 1,
307 	1, 1, 71, 1, 1, 72, 1, 1,
308 	1, 1, 1, 1, 1, 1, 73, 1,
309 	1, 1, 16, 16, 16, 16, 16, 16,
310 	16, 16, 16, 16, 1, 1, 1, 1,
311 	1, 1, 1, 1, 1, 1, 1, 1,
312 	1, 1, 1, 1, 1, 1, 1, 1,
313 	1, 1, 1, 1, 1, 1, 1, 1,
314 	1, 1, 1, 1, 1, 1, 1, 74,
315 	1, 1, 1, 1, 1, 1, 1, 1,
316 	1, 1, 1, 1, 1, 1, 1, 1,
317 	1, 1, 1, 1, 1, 1, 1, 1,
318 	1, 1, 1, 1, 1, 1, 75, 1,
319 	80, 80, 80, 80, 80, 1, 1, 1,
320 	1, 1, 1, 1, 1, 1, 1, 1,
321 	1, 1, 1, 1, 1, 1, 1, 80,
322 	1, 1, 81, 1, 1, 1, 1, 1,
323 	1, 1, 82, 1, 1, 1, 1, 1,
324 	1, 1, 1, 1, 1, 1, 1, 1,
325 	1, 1, 1, 1, 1, 1, 1, 83,
326 	1, 1, 1, 1, 1, 1, 1, 1,
327 	1, 1, 1, 1, 1, 1, 1, 1,
328 	1, 1, 1, 1, 1, 1, 1, 1,
329 	1, 1, 1, 1, 45, 1, 1, 1,
330 	1, 1, 1, 1, 1, 1, 1, 1,
331 	1, 1, 1, 1, 1, 1, 1, 1,
332 	1, 1, 1, 1, 1, 1, 1, 1,
333 	1, 1, 1, 84, 1, 85, 85, 85,
334 	85, 85, 1, 1, 1, 1, 1, 1,
335 	1, 1, 1, 1, 1, 1, 1, 1,
336 	1, 1, 1, 1, 85, 1, 1, 86,
337 	1, 1, 1, 1, 1, 1, 1, 87,
338 	1, 1, 1, 1, 1, 1, 1, 1,
339 	1, 1, 1, 1, 1, 1, 1, 1,
340 	1, 1, 1, 1, 1, 1, 1, 1,
341 	1, 1, 1, 1, 1, 1, 1, 1,
342 	1, 1, 1, 1, 1, 1, 1, 1,
343 	1, 1, 1, 1, 1, 1, 1, 1,
344 	1, 88, 1, 1, 1, 1, 1, 1,
345 	1, 1, 1, 1, 1, 1, 1, 1,
346 	1, 1, 1, 1, 1, 1, 1, 1,
347 	1, 1, 1, 1, 1, 1, 1, 1,
348 	89, 1, 85, 85, 85, 85, 85, 1,
349 	1, 1, 1, 1, 1, 1, 1, 1,
350 	1, 1, 1, 1, 1, 1, 1, 1,
351 	1, 85, 1, 1, 86, 1, 1, 1,
352 	1, 1, 1, 1, 87, 1, 1, 1,
353 	1, 34, 34, 34, 34, 34, 34, 34,
354 	34, 34, 34, 1, 1, 1, 1, 1,
355 	1, 1, 1, 1, 1, 1, 1, 1,
356 	1, 1, 1, 1, 1, 1, 1, 1,
357 	1, 1, 1, 1, 1, 1, 1, 1,
358 	1, 1, 1, 1, 1, 1, 88, 1,
359 	1, 1, 1, 1, 1, 1, 1, 1,
360 	1, 1, 1, 1, 1, 1, 1, 1,
361 	1, 1, 1, 1, 1, 1, 1, 1,
362 	1, 1, 1, 1, 1, 89, 1, 80,
363 	80, 80, 80, 80, 1, 1, 1, 1,
364 	1, 1, 1, 1, 1, 1, 1, 1,
365 	1, 1, 1, 1, 1, 1, 80, 1,
366 	1, 81, 1, 1, 1, 1, 1, 1,
367 	1, 82, 1, 1, 1, 1, 90, 90,
368 	90, 90, 90, 90, 90, 90, 90, 90,
369 	1, 1, 1, 1, 1, 1, 83, 1,
370 	1, 1, 1, 1, 1, 1, 1, 1,
371 	1, 1, 1, 1, 1, 1, 1, 1,
372 	1, 1, 1, 1, 1, 1, 1, 1,
373 	1, 1, 1, 45, 1, 1, 1, 1,
374 	1, 1, 1, 1, 1, 1, 1, 1,
375 	1, 1, 1, 1, 1, 1, 1, 1,
376 	1, 1, 1, 1, 1, 1, 1, 1,
377 	1, 1, 84, 1, 65, 65, 65, 65,
378 	65, 1, 1, 1, 1, 1, 1, 1,
379 	1, 1, 1, 1, 1, 1, 1, 1,
380 	1, 1, 1, 65, 1, 1, 1, 1,
381 	1, 1, 1, 1, 1, 1, 1, 1,
382 	1, 1, 1, 91, 91, 91, 91, 91,
383 	91, 91, 91, 91, 91, 1, 1, 1,
384 	1, 1, 1, 1, 1, 1, 1, 1,
385 	1, 1, 1, 1, 1, 1, 1, 1,
386 	1, 1, 1, 1, 1, 1, 1, 1,
387 	1, 1, 1, 1, 1, 1, 1, 1,
388 	66, 1, 1, 1, 1, 1, 1, 1,
389 	1, 1, 1, 1, 1, 1, 1, 1,
390 	1, 1, 1, 1, 1, 1, 1, 1,
391 	1, 1, 1, 1, 1, 1, 1, 67,
392 	1, 0
393 };
394 
395 static const char _deserialize_text_trans_targs[] = {
396 	1, 0, 2, 26, 3, 4, 20, 5,
397 	24, 25, 28, 39, 9, 31, 34, 31,
398 	34, 11, 32, 33, 32, 33, 35, 38,
399 	14, 15, 18, 15, 18, 16, 17, 36,
400 	37, 36, 37, 27, 21, 20, 6, 22,
401 	23, 21, 22, 23, 21, 22, 23, 25,
402 	27, 27, 7, 8, 12, 13, 19, 22,
403 	30, 27, 7, 8, 12, 13, 19, 22,
404 	30, 29, 22, 30, 29, 30, 30, 29,
405 	7, 10, 22, 30, 29, 7, 22, 30,
406 	29, 7, 8, 13, 30, 29, 7, 8,
407 	22, 30, 38, 39
408 };
409 
410 static const char _deserialize_text_trans_actions[] = {
411 	0, 0, 0, 0, 1, 0, 2, 0,
412 	2, 2, 3, 3, 4, 3, 3, 5,
413 	5, 4, 3, 3, 5, 5, 3, 3,
414 	4, 4, 4, 0, 0, 6, 4, 3,
415 	3, 5, 5, 5, 7, 8, 9, 7,
416 	7, 0, 0, 0, 10, 10, 10, 8,
417 	12, 13, 14, 14, 14, 14, 15, 11,
418 	11, 17, 18, 18, 18, 18, 0, 16,
419 	16, 19, 19, 19, 0, 0, 13, 20,
420 	21, 21, 20, 20, 22, 23, 22, 22,
421 	10, 24, 24, 24, 10, 25, 26, 26,
422 	25, 25, 5, 5
423 };
424 
425 static const char _deserialize_text_eof_actions[] = {
426 	0, 0, 0, 0, 0, 0, 0, 0,
427 	0, 0, 0, 0, 0, 0, 0, 0,
428 	0, 0, 0, 0, 7, 0, 0, 0,
429 	10, 10, 11, 16, 19, 0, 11, 20,
430 	22, 22, 20, 10, 25, 25, 10, 19
431 };
432 
433 static const int deserialize_text_start = 1;
434 static const int deserialize_text_first_final = 20;
435 static const int deserialize_text_error = 0;
436 
437 static const int deserialize_text_en_main = 1;
438 
439 
440 #line 117 "hb-buffer-deserialize-text.rl"
441 
442 
443 static hb_bool_t
_hb_buffer_deserialize_text(hb_buffer_t * buffer,const char * buf,unsigned int buf_len,const char ** end_ptr,hb_font_t * font)444 _hb_buffer_deserialize_text (hb_buffer_t *buffer,
445 				    const char *buf,
446 				    unsigned int buf_len,
447 				    const char **end_ptr,
448 				    hb_font_t *font)
449 {
450   const char *p = buf, *pe = buf + buf_len;
451 
452   /* Ensure we have positions. */
453   (void) hb_buffer_get_glyph_positions (buffer, nullptr);
454 
455   while (p < pe && ISSPACE (*p))
456     p++;
457 
458   const char *eof = pe, *tok = nullptr;
459   int cs;
460   hb_glyph_info_t info = {0};
461   hb_glyph_position_t pos = {0};
462 
463 #line 457 "hb-buffer-deserialize-text.hh"
464 	{
465 	cs = deserialize_text_start;
466 	}
467 
468 #line 460 "hb-buffer-deserialize-text.hh"
469 	{
470 	int _slen;
471 	int _trans;
472 	const unsigned char *_keys;
473 	const char *_inds;
474 	if ( p == pe )
475 		goto _test_eof;
476 	if ( cs == 0 )
477 		goto _out;
478 _resume:
479 	_keys = _deserialize_text_trans_keys + (cs<<1);
480 	_inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs];
481 
482 	_slen = _deserialize_text_key_spans[cs];
483 	_trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
484 		(*p) <= _keys[1] ?
485 		(*p) - _keys[0] : _slen ];
486 
487 	cs = _deserialize_text_trans_targs[_trans];
488 
489 	if ( _deserialize_text_trans_actions[_trans] == 0 )
490 		goto _again;
491 
492 	switch ( _deserialize_text_trans_actions[_trans] ) {
493 	case 1:
494 #line 38 "hb-buffer-deserialize-text.rl"
495 	{
496 	hb_memset (&info, 0, sizeof (info));
497 	hb_memset (&pos , 0, sizeof (pos ));
498 }
499 	break;
500 	case 4:
501 #line 51 "hb-buffer-deserialize-text.rl"
502 	{
503 	tok = p;
504 }
505 	break;
506 	case 5:
507 #line 55 "hb-buffer-deserialize-text.rl"
508 	{ if (unlikely (!buffer->ensure_glyphs ())) return false; }
509 	break;
510 	case 8:
511 #line 56 "hb-buffer-deserialize-text.rl"
512 	{ if (unlikely (!buffer->ensure_unicode ())) return false; }
513 	break;
514 	case 18:
515 #line 58 "hb-buffer-deserialize-text.rl"
516 	{
517 	/* TODO Unescape delimiters. */
518 	if (!hb_font_glyph_from_string (font,
519 					tok, p - tok,
520 					&info.codepoint))
521 	  return false;
522 }
523 	break;
524 	case 9:
525 #line 66 "hb-buffer-deserialize-text.rl"
526 	{if (!parse_hex (tok, p, &info.codepoint )) return false; }
527 	break;
528 	case 24:
529 #line 68 "hb-buffer-deserialize-text.rl"
530 	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
531 	break;
532 	case 6:
533 #line 69 "hb-buffer-deserialize-text.rl"
534 	{ if (!parse_int  (tok, p, &pos.x_offset )) return false; }
535 	break;
536 	case 26:
537 #line 70 "hb-buffer-deserialize-text.rl"
538 	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
539 	break;
540 	case 21:
541 #line 71 "hb-buffer-deserialize-text.rl"
542 	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
543 	break;
544 	case 23:
545 #line 72 "hb-buffer-deserialize-text.rl"
546 	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
547 	break;
548 	case 15:
549 #line 38 "hb-buffer-deserialize-text.rl"
550 	{
551 	hb_memset (&info, 0, sizeof (info));
552 	hb_memset (&pos , 0, sizeof (pos ));
553 }
554 #line 51 "hb-buffer-deserialize-text.rl"
555 	{
556 	tok = p;
557 }
558 	break;
559 	case 3:
560 #line 51 "hb-buffer-deserialize-text.rl"
561 	{
562 	tok = p;
563 }
564 #line 55 "hb-buffer-deserialize-text.rl"
565 	{ if (unlikely (!buffer->ensure_glyphs ())) return false; }
566 	break;
567 	case 2:
568 #line 51 "hb-buffer-deserialize-text.rl"
569 	{
570 	tok = p;
571 }
572 #line 56 "hb-buffer-deserialize-text.rl"
573 	{ if (unlikely (!buffer->ensure_unicode ())) return false; }
574 	break;
575 	case 16:
576 #line 58 "hb-buffer-deserialize-text.rl"
577 	{
578 	/* TODO Unescape delimiters. */
579 	if (!hb_font_glyph_from_string (font,
580 					tok, p - tok,
581 					&info.codepoint))
582 	  return false;
583 }
584 #line 43 "hb-buffer-deserialize-text.rl"
585 	{
586 	buffer->add_info (info);
587 	if (unlikely (!buffer->successful))
588 	  return false;
589 	buffer->pos[buffer->len - 1] = pos;
590 	*end_ptr = p;
591 }
592 	break;
593 	case 7:
594 #line 66 "hb-buffer-deserialize-text.rl"
595 	{if (!parse_hex (tok, p, &info.codepoint )) return false; }
596 #line 43 "hb-buffer-deserialize-text.rl"
597 	{
598 	buffer->add_info (info);
599 	if (unlikely (!buffer->successful))
600 	  return false;
601 	buffer->pos[buffer->len - 1] = pos;
602 	*end_ptr = p;
603 }
604 	break;
605 	case 10:
606 #line 68 "hb-buffer-deserialize-text.rl"
607 	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
608 #line 43 "hb-buffer-deserialize-text.rl"
609 	{
610 	buffer->add_info (info);
611 	if (unlikely (!buffer->successful))
612 	  return false;
613 	buffer->pos[buffer->len - 1] = pos;
614 	*end_ptr = p;
615 }
616 	break;
617 	case 25:
618 #line 70 "hb-buffer-deserialize-text.rl"
619 	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
620 #line 43 "hb-buffer-deserialize-text.rl"
621 	{
622 	buffer->add_info (info);
623 	if (unlikely (!buffer->successful))
624 	  return false;
625 	buffer->pos[buffer->len - 1] = pos;
626 	*end_ptr = p;
627 }
628 	break;
629 	case 20:
630 #line 71 "hb-buffer-deserialize-text.rl"
631 	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
632 #line 43 "hb-buffer-deserialize-text.rl"
633 	{
634 	buffer->add_info (info);
635 	if (unlikely (!buffer->successful))
636 	  return false;
637 	buffer->pos[buffer->len - 1] = pos;
638 	*end_ptr = p;
639 }
640 	break;
641 	case 22:
642 #line 72 "hb-buffer-deserialize-text.rl"
643 	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
644 #line 43 "hb-buffer-deserialize-text.rl"
645 	{
646 	buffer->add_info (info);
647 	if (unlikely (!buffer->successful))
648 	  return false;
649 	buffer->pos[buffer->len - 1] = pos;
650 	*end_ptr = p;
651 }
652 	break;
653 	case 19:
654 #line 73 "hb-buffer-deserialize-text.rl"
655 	{ if (!parse_uint (tok, p, &info.mask    )) return false; }
656 #line 43 "hb-buffer-deserialize-text.rl"
657 	{
658 	buffer->add_info (info);
659 	if (unlikely (!buffer->successful))
660 	  return false;
661 	buffer->pos[buffer->len - 1] = pos;
662 	*end_ptr = p;
663 }
664 	break;
665 	case 12:
666 #line 38 "hb-buffer-deserialize-text.rl"
667 	{
668 	hb_memset (&info, 0, sizeof (info));
669 	hb_memset (&pos , 0, sizeof (pos ));
670 }
671 #line 51 "hb-buffer-deserialize-text.rl"
672 	{
673 	tok = p;
674 }
675 #line 55 "hb-buffer-deserialize-text.rl"
676 	{ if (unlikely (!buffer->ensure_glyphs ())) return false; }
677 	break;
678 	case 14:
679 #line 38 "hb-buffer-deserialize-text.rl"
680 	{
681 	hb_memset (&info, 0, sizeof (info));
682 	hb_memset (&pos , 0, sizeof (pos ));
683 }
684 #line 51 "hb-buffer-deserialize-text.rl"
685 	{
686 	tok = p;
687 }
688 #line 58 "hb-buffer-deserialize-text.rl"
689 	{
690 	/* TODO Unescape delimiters. */
691 	if (!hb_font_glyph_from_string (font,
692 					tok, p - tok,
693 					&info.codepoint))
694 	  return false;
695 }
696 	break;
697 	case 17:
698 #line 58 "hb-buffer-deserialize-text.rl"
699 	{
700 	/* TODO Unescape delimiters. */
701 	if (!hb_font_glyph_from_string (font,
702 					tok, p - tok,
703 					&info.codepoint))
704 	  return false;
705 }
706 #line 55 "hb-buffer-deserialize-text.rl"
707 	{ if (unlikely (!buffer->ensure_glyphs ())) return false; }
708 #line 43 "hb-buffer-deserialize-text.rl"
709 	{
710 	buffer->add_info (info);
711 	if (unlikely (!buffer->successful))
712 	  return false;
713 	buffer->pos[buffer->len - 1] = pos;
714 	*end_ptr = p;
715 }
716 	break;
717 	case 11:
718 #line 38 "hb-buffer-deserialize-text.rl"
719 	{
720 	hb_memset (&info, 0, sizeof (info));
721 	hb_memset (&pos , 0, sizeof (pos ));
722 }
723 #line 51 "hb-buffer-deserialize-text.rl"
724 	{
725 	tok = p;
726 }
727 #line 58 "hb-buffer-deserialize-text.rl"
728 	{
729 	/* TODO Unescape delimiters. */
730 	if (!hb_font_glyph_from_string (font,
731 					tok, p - tok,
732 					&info.codepoint))
733 	  return false;
734 }
735 #line 43 "hb-buffer-deserialize-text.rl"
736 	{
737 	buffer->add_info (info);
738 	if (unlikely (!buffer->successful))
739 	  return false;
740 	buffer->pos[buffer->len - 1] = pos;
741 	*end_ptr = p;
742 }
743 	break;
744 	case 13:
745 #line 38 "hb-buffer-deserialize-text.rl"
746 	{
747 	hb_memset (&info, 0, sizeof (info));
748 	hb_memset (&pos , 0, sizeof (pos ));
749 }
750 #line 51 "hb-buffer-deserialize-text.rl"
751 	{
752 	tok = p;
753 }
754 #line 58 "hb-buffer-deserialize-text.rl"
755 	{
756 	/* TODO Unescape delimiters. */
757 	if (!hb_font_glyph_from_string (font,
758 					tok, p - tok,
759 					&info.codepoint))
760 	  return false;
761 }
762 #line 55 "hb-buffer-deserialize-text.rl"
763 	{ if (unlikely (!buffer->ensure_glyphs ())) return false; }
764 #line 43 "hb-buffer-deserialize-text.rl"
765 	{
766 	buffer->add_info (info);
767 	if (unlikely (!buffer->successful))
768 	  return false;
769 	buffer->pos[buffer->len - 1] = pos;
770 	*end_ptr = p;
771 }
772 	break;
773 #line 715 "hb-buffer-deserialize-text.hh"
774 	}
775 
776 _again:
777 	if ( cs == 0 )
778 		goto _out;
779 	if ( ++p != pe )
780 		goto _resume;
781 	_test_eof: {}
782 	if ( p == eof )
783 	{
784 	switch ( _deserialize_text_eof_actions[cs] ) {
785 	case 16:
786 #line 58 "hb-buffer-deserialize-text.rl"
787 	{
788 	/* TODO Unescape delimiters. */
789 	if (!hb_font_glyph_from_string (font,
790 					tok, p - tok,
791 					&info.codepoint))
792 	  return false;
793 }
794 #line 43 "hb-buffer-deserialize-text.rl"
795 	{
796 	buffer->add_info (info);
797 	if (unlikely (!buffer->successful))
798 	  return false;
799 	buffer->pos[buffer->len - 1] = pos;
800 	*end_ptr = p;
801 }
802 	break;
803 	case 7:
804 #line 66 "hb-buffer-deserialize-text.rl"
805 	{if (!parse_hex (tok, p, &info.codepoint )) return false; }
806 #line 43 "hb-buffer-deserialize-text.rl"
807 	{
808 	buffer->add_info (info);
809 	if (unlikely (!buffer->successful))
810 	  return false;
811 	buffer->pos[buffer->len - 1] = pos;
812 	*end_ptr = p;
813 }
814 	break;
815 	case 10:
816 #line 68 "hb-buffer-deserialize-text.rl"
817 	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
818 #line 43 "hb-buffer-deserialize-text.rl"
819 	{
820 	buffer->add_info (info);
821 	if (unlikely (!buffer->successful))
822 	  return false;
823 	buffer->pos[buffer->len - 1] = pos;
824 	*end_ptr = p;
825 }
826 	break;
827 	case 25:
828 #line 70 "hb-buffer-deserialize-text.rl"
829 	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
830 #line 43 "hb-buffer-deserialize-text.rl"
831 	{
832 	buffer->add_info (info);
833 	if (unlikely (!buffer->successful))
834 	  return false;
835 	buffer->pos[buffer->len - 1] = pos;
836 	*end_ptr = p;
837 }
838 	break;
839 	case 20:
840 #line 71 "hb-buffer-deserialize-text.rl"
841 	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
842 #line 43 "hb-buffer-deserialize-text.rl"
843 	{
844 	buffer->add_info (info);
845 	if (unlikely (!buffer->successful))
846 	  return false;
847 	buffer->pos[buffer->len - 1] = pos;
848 	*end_ptr = p;
849 }
850 	break;
851 	case 22:
852 #line 72 "hb-buffer-deserialize-text.rl"
853 	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
854 #line 43 "hb-buffer-deserialize-text.rl"
855 	{
856 	buffer->add_info (info);
857 	if (unlikely (!buffer->successful))
858 	  return false;
859 	buffer->pos[buffer->len - 1] = pos;
860 	*end_ptr = p;
861 }
862 	break;
863 	case 19:
864 #line 73 "hb-buffer-deserialize-text.rl"
865 	{ if (!parse_uint (tok, p, &info.mask    )) return false; }
866 #line 43 "hb-buffer-deserialize-text.rl"
867 	{
868 	buffer->add_info (info);
869 	if (unlikely (!buffer->successful))
870 	  return false;
871 	buffer->pos[buffer->len - 1] = pos;
872 	*end_ptr = p;
873 }
874 	break;
875 	case 11:
876 #line 38 "hb-buffer-deserialize-text.rl"
877 	{
878 	hb_memset (&info, 0, sizeof (info));
879 	hb_memset (&pos , 0, sizeof (pos ));
880 }
881 #line 51 "hb-buffer-deserialize-text.rl"
882 	{
883 	tok = p;
884 }
885 #line 58 "hb-buffer-deserialize-text.rl"
886 	{
887 	/* TODO Unescape delimiters. */
888 	if (!hb_font_glyph_from_string (font,
889 					tok, p - tok,
890 					&info.codepoint))
891 	  return false;
892 }
893 #line 43 "hb-buffer-deserialize-text.rl"
894 	{
895 	buffer->add_info (info);
896 	if (unlikely (!buffer->successful))
897 	  return false;
898 	buffer->pos[buffer->len - 1] = pos;
899 	*end_ptr = p;
900 }
901 	break;
902 #line 825 "hb-buffer-deserialize-text.hh"
903 	}
904 	}
905 
906 	_out: {}
907 	}
908 
909 #line 141 "hb-buffer-deserialize-text.rl"
910 
911 
912   *end_ptr = p;
913 
914   return p == pe && *(p-1) != ']';
915 }
916 
917 #endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */
918