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