2 #line 1 "hb-buffer-deserialize-text.rl"
4 * Copyright © 2013 Google, Inc.
6 * This is part of HarfBuzz, a text shaping library.
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.
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
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.
26 * Google Author(s): Behdad Esfahbod
29 #ifndef HB_BUFFER_DESERIALIZE_TEXT_HH
30 #define HB_BUFFER_DESERIALIZE_TEXT_HH
35 #line 36 "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, 45u, 57u,
38 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u,
39 43u, 124u, 45u, 57u, 48u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u, 9u, 124u,
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, 0
44 static const char _deserialize_text_key_spans[] = {
45 0, 83, 1, 1, 55, 77, 10, 13,
46 10, 10, 13, 10, 1, 13, 10, 14,
47 82, 13, 10, 116, 116, 0, 77, 116,
48 116, 116, 116, 116, 116, 116, 116, 116,
49 116, 116, 116, 116, 116
52 static const short _deserialize_text_index_offsets[] = {
53 0, 0, 84, 86, 88, 144, 222, 233,
54 247, 258, 269, 283, 294, 296, 310, 321,
55 336, 419, 433, 444, 561, 678, 679, 757,
56 874, 991, 1108, 1225, 1342, 1459, 1576, 1693,
57 1810, 1927, 2044, 2161, 2278
60 static const char _deserialize_text_indicies[] = {
62 1, 1, 1, 1, 1, 1, 1, 1,
63 1, 1, 1, 1, 1, 1, 1, 1,
64 0, 1, 1, 1, 1, 1, 1, 1,
65 1, 1, 1, 1, 1, 1, 1, 1,
66 1, 1, 1, 1, 1, 1, 1, 1,
67 1, 1, 1, 1, 2, 1, 1, 1,
68 1, 1, 1, 1, 1, 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, 3, 1, 4, 1, 5,
72 1, 6, 6, 6, 6, 6, 6, 6,
73 6, 6, 6, 1, 1, 1, 1, 1,
74 1, 1, 6, 6, 6, 6, 6, 6,
75 1, 1, 1, 1, 1, 1, 1, 1,
76 1, 1, 1, 1, 1, 1, 1, 1,
77 1, 1, 1, 1, 1, 1, 1, 1,
78 1, 1, 6, 6, 6, 6, 6, 6,
79 1, 7, 7, 7, 7, 7, 1, 1,
80 1, 1, 1, 1, 1, 1, 1, 1,
81 1, 1, 1, 1, 1, 1, 1, 1,
82 7, 1, 1, 1, 1, 1, 1, 1,
83 1, 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, 4, 1, 8,
89 9, 9, 9, 9, 9, 9, 9, 9,
90 9, 1, 10, 1, 1, 11, 12, 12,
91 12, 12, 12, 12, 12, 12, 12, 1,
92 13, 14, 14, 14, 14, 14, 14, 14,
93 14, 14, 1, 15, 16, 16, 16, 16,
94 16, 16, 16, 16, 16, 1, 17, 1,
95 1, 18, 19, 19, 19, 19, 19, 19,
96 19, 19, 19, 1, 20, 21, 21, 21,
97 21, 21, 21, 21, 21, 21, 1, 22,
98 1, 23, 1, 1, 24, 25, 25, 25,
99 25, 25, 25, 25, 25, 25, 1, 26,
100 27, 27, 27, 27, 27, 27, 27, 27,
101 27, 1, 22, 1, 1, 1, 21, 21,
102 21, 21, 21, 21, 21, 21, 21, 21,
103 1, 28, 28, 1, 1, 1, 1, 1,
104 1, 1, 1, 1, 1, 1, 1, 1,
105 1, 1, 1, 28, 1, 1, 28, 1,
106 1, 1, 1, 1, 1, 1, 1, 1,
107 1, 1, 1, 1, 1, 1, 1, 1,
108 1, 1, 1, 1, 1, 1, 1, 1,
109 1, 1, 28, 28, 1, 1, 1, 1,
110 1, 1, 1, 1, 1, 1, 1, 1,
111 1, 1, 1, 1, 1, 1, 1, 1,
112 1, 1, 1, 1, 1, 1, 1, 1,
113 1, 1, 28, 1, 29, 1, 1, 30,
114 31, 31, 31, 31, 31, 31, 31, 31,
115 31, 1, 32, 33, 33, 33, 33, 33,
116 33, 33, 33, 33, 1, 34, 34, 34,
117 34, 34, 1, 1, 1, 1, 1, 1,
118 1, 1, 1, 1, 1, 1, 1, 1,
119 1, 1, 1, 1, 34, 1, 1, 1,
120 1, 1, 1, 1, 1, 1, 1, 1,
121 1, 1, 1, 1, 35, 35, 35, 35,
122 35, 35, 35, 35, 35, 35, 1, 1,
123 1, 36, 37, 1, 1, 35, 35, 35,
124 35, 35, 35, 1, 1, 1, 1, 1,
125 1, 1, 1, 1, 1, 1, 1, 1,
126 1, 1, 1, 1, 1, 1, 1, 1,
127 1, 1, 1, 1, 1, 35, 35, 35,
128 35, 35, 35, 1, 1, 1, 1, 1,
129 1, 1, 1, 1, 1, 1, 1, 1,
130 1, 1, 1, 1, 1, 1, 1, 1,
131 38, 1, 39, 39, 39, 39, 39, 1,
132 1, 1, 1, 1, 1, 1, 1, 1,
133 1, 1, 1, 1, 1, 1, 1, 1,
134 1, 39, 1, 1, 1, 1, 1, 1,
135 1, 1, 1, 1, 1, 1, 1, 1,
136 1, 1, 1, 1, 1, 1, 1, 1,
137 1, 1, 1, 1, 1, 1, 1, 40,
138 1, 1, 1, 1, 1, 1, 1, 1,
139 1, 1, 1, 1, 1, 1, 1, 1,
140 1, 1, 1, 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, 41, 1, 1,
146 7, 7, 7, 7, 7, 1, 1, 1,
147 1, 1, 1, 1, 1, 1, 1, 1,
148 1, 1, 1, 1, 1, 1, 1, 7,
149 1, 1, 1, 1, 1, 1, 1, 1,
150 1, 1, 1, 1, 1, 1, 1, 1,
151 1, 1, 1, 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, 4, 1, 42, 42,
156 42, 42, 42, 1, 1, 1, 1, 1,
157 1, 1, 1, 1, 1, 1, 1, 1,
158 1, 1, 1, 1, 1, 42, 1, 1,
159 1, 1, 1, 1, 1, 1, 1, 1,
160 1, 1, 1, 1, 1, 1, 1, 1,
161 1, 1, 1, 1, 1, 1, 1, 1,
162 1, 1, 1, 43, 1, 1, 1, 1,
163 1, 1, 1, 1, 1, 1, 1, 1,
164 1, 1, 1, 1, 1, 1, 1, 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, 44, 1, 42, 42, 42, 42, 42,
171 1, 1, 1, 1, 1, 1, 1, 1,
172 1, 1, 1, 1, 1, 1, 1, 1,
173 1, 1, 42, 1, 1, 1, 1, 1,
174 1, 1, 1, 1, 1, 1, 1, 1,
175 1, 1, 45, 45, 45, 45, 45, 45,
176 45, 45, 45, 45, 1, 1, 1, 1,
177 43, 1, 1, 1, 1, 1, 1, 1,
178 1, 1, 1, 1, 1, 1, 1, 1,
179 1, 1, 1, 1, 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, 44, 1,
185 47, 47, 47, 47, 47, 46, 46, 46,
186 46, 46, 46, 46, 46, 46, 46, 46,
187 46, 46, 46, 46, 46, 46, 46, 47,
188 46, 46, 46, 46, 46, 46, 46, 46,
189 46, 46, 48, 1, 46, 46, 46, 46,
190 46, 46, 46, 46, 46, 46, 46, 46,
191 46, 46, 46, 46, 49, 46, 46, 50,
192 46, 46, 46, 46, 46, 46, 46, 46,
193 46, 46, 46, 46, 46, 46, 46, 46,
194 46, 46, 46, 46, 46, 46, 46, 46,
195 46, 46, 46, 51, 52, 46, 46, 46,
196 46, 46, 46, 46, 46, 46, 46, 46,
197 46, 46, 46, 46, 46, 46, 46, 46,
198 46, 46, 46, 46, 46, 46, 46, 46,
199 46, 46, 46, 53, 46, 54, 54, 54,
200 54, 54, 28, 28, 28, 28, 28, 28,
201 28, 28, 28, 28, 28, 28, 28, 28,
202 28, 28, 28, 28, 54, 28, 28, 28,
203 28, 28, 28, 28, 28, 28, 28, 55,
204 1, 28, 28, 28, 28, 28, 28, 28,
205 28, 28, 28, 28, 28, 28, 28, 28,
206 28, 56, 28, 28, 57, 28, 28, 28,
207 28, 28, 28, 28, 28, 28, 28, 28,
208 28, 28, 28, 28, 28, 28, 28, 28,
209 28, 28, 28, 28, 28, 28, 28, 28,
210 58, 59, 28, 28, 28, 28, 28, 28,
211 28, 28, 28, 28, 28, 28, 28, 28,
212 28, 28, 28, 28, 28, 28, 28, 28,
213 28, 28, 28, 28, 28, 28, 28, 28,
214 60, 28, 61, 61, 61, 61, 61, 1,
215 1, 1, 1, 1, 1, 1, 1, 1,
216 1, 1, 1, 1, 1, 1, 1, 1,
217 1, 61, 1, 1, 1, 1, 1, 1,
218 1, 1, 1, 1, 1, 62, 1, 1,
219 1, 1, 1, 1, 1, 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, 63, 1,
225 1, 1, 1, 1, 1, 1, 1, 1,
226 1, 1, 1, 1, 1, 1, 1, 1,
227 1, 1, 1, 1, 1, 1, 1, 1,
228 1, 1, 1, 1, 1, 64, 1, 65,
229 65, 65, 65, 65, 1, 1, 1, 1,
230 1, 1, 1, 1, 1, 1, 1, 1,
231 1, 1, 1, 1, 1, 1, 65, 1,
232 1, 1, 1, 1, 1, 1, 1, 1,
233 1, 1, 1, 1, 1, 1, 1, 1,
234 1, 1, 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, 40, 1, 1, 1, 1,
240 1, 1, 1, 1, 1, 1, 1, 1,
241 1, 1, 1, 1, 1, 1, 1, 1,
242 1, 1, 1, 1, 1, 1, 1, 1,
243 1, 1, 66, 1, 67, 67, 67, 67,
244 67, 46, 46, 46, 46, 46, 46, 46,
245 46, 46, 46, 46, 46, 46, 46, 46,
246 46, 46, 46, 67, 46, 46, 46, 46,
247 46, 46, 46, 46, 46, 46, 48, 1,
248 46, 46, 46, 46, 46, 46, 46, 46,
249 46, 46, 46, 46, 46, 46, 46, 46,
250 49, 46, 46, 50, 46, 46, 46, 46,
251 46, 46, 46, 46, 46, 46, 46, 46,
252 46, 46, 46, 46, 46, 46, 46, 46,
253 46, 46, 46, 46, 46, 46, 46, 51,
254 52, 46, 46, 46, 46, 46, 46, 46,
255 46, 46, 46, 46, 46, 46, 46, 46,
256 46, 46, 46, 46, 46, 46, 46, 46,
257 46, 46, 46, 46, 46, 46, 46, 53,
258 46, 68, 68, 68, 68, 68, 1, 1,
259 1, 1, 1, 1, 1, 1, 1, 1,
260 1, 1, 1, 1, 1, 1, 1, 1,
261 68, 1, 1, 1, 1, 1, 1, 1,
262 1, 1, 1, 69, 1, 1, 1, 1,
263 1, 1, 1, 1, 1, 1, 1, 1,
264 1, 1, 1, 1, 1, 1, 1, 1,
265 70, 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, 43, 1, 1,
269 1, 1, 1, 1, 1, 1, 1, 1,
270 1, 1, 1, 1, 1, 1, 1, 1,
271 1, 1, 1, 1, 1, 1, 1, 1,
272 1, 1, 1, 1, 71, 1, 72, 72,
273 72, 72, 72, 1, 1, 1, 1, 1,
274 1, 1, 1, 1, 1, 1, 1, 1,
275 1, 1, 1, 1, 1, 72, 1, 1,
276 1, 1, 1, 1, 1, 1, 1, 1,
277 73, 1, 1, 1, 1, 1, 1, 1,
278 1, 1, 1, 1, 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, 74, 1, 1, 1, 1, 1,
284 1, 1, 1, 1, 1, 1, 1, 1,
285 1, 1, 1, 1, 1, 1, 1, 1,
286 1, 1, 1, 1, 1, 1, 1, 1,
287 1, 75, 1, 72, 72, 72, 72, 72,
288 1, 1, 1, 1, 1, 1, 1, 1,
289 1, 1, 1, 1, 1, 1, 1, 1,
290 1, 1, 72, 1, 1, 1, 1, 1,
291 1, 1, 1, 1, 1, 73, 1, 1,
292 1, 1, 27, 27, 27, 27, 27, 27,
293 27, 27, 27, 27, 1, 1, 1, 1,
294 1, 1, 1, 1, 1, 1, 1, 1,
295 1, 1, 1, 1, 1, 1, 1, 1,
296 1, 1, 1, 1, 1, 1, 1, 1,
297 1, 1, 1, 1, 1, 1, 1, 74,
298 1, 1, 1, 1, 1, 1, 1, 1,
299 1, 1, 1, 1, 1, 1, 1, 1,
300 1, 1, 1, 1, 1, 1, 1, 1,
301 1, 1, 1, 1, 1, 1, 75, 1,
302 68, 68, 68, 68, 68, 1, 1, 1,
303 1, 1, 1, 1, 1, 1, 1, 1,
304 1, 1, 1, 1, 1, 1, 1, 68,
305 1, 1, 1, 1, 1, 1, 1, 1,
306 1, 1, 69, 1, 1, 1, 1, 76,
307 76, 76, 76, 76, 76, 76, 76, 76,
308 76, 1, 1, 1, 1, 1, 1, 70,
309 1, 1, 1, 1, 1, 1, 1, 1,
310 1, 1, 1, 1, 1, 1, 1, 1,
311 1, 1, 1, 1, 1, 1, 1, 1,
312 1, 1, 1, 1, 43, 1, 1, 1,
313 1, 1, 1, 1, 1, 1, 1, 1,
314 1, 1, 1, 1, 1, 1, 1, 1,
315 1, 1, 1, 1, 1, 1, 1, 1,
316 1, 1, 1, 71, 1, 77, 77, 77,
317 77, 77, 1, 1, 1, 1, 1, 1,
318 1, 1, 1, 1, 1, 1, 1, 1,
319 1, 1, 1, 1, 77, 1, 1, 1,
320 1, 1, 1, 1, 1, 1, 1, 1,
321 1, 1, 1, 1, 1, 1, 1, 1,
322 1, 1, 1, 1, 1, 1, 1, 1,
323 1, 1, 1, 1, 1, 1, 1, 1,
324 1, 1, 1, 1, 1, 1, 1, 1,
325 1, 1, 1, 1, 1, 1, 1, 1,
326 1, 1, 1, 1, 1, 1, 1, 1,
327 1, 78, 1, 1, 1, 1, 1, 1,
328 1, 1, 1, 1, 1, 1, 1, 1,
329 1, 1, 1, 1, 1, 1, 1, 1,
330 1, 1, 1, 1, 1, 1, 1, 1,
331 79, 1, 77, 77, 77, 77, 77, 1,
332 1, 1, 1, 1, 1, 1, 1, 1,
333 1, 1, 1, 1, 1, 1, 1, 1,
334 1, 77, 1, 1, 1, 1, 1, 1,
335 1, 1, 1, 1, 1, 1, 1, 1,
336 1, 33, 33, 33, 33, 33, 33, 33,
337 33, 33, 33, 1, 1, 1, 1, 1,
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, 78, 1,
342 1, 1, 1, 1, 1, 1, 1, 1,
343 1, 1, 1, 1, 1, 1, 1, 1,
344 1, 1, 1, 1, 1, 1, 1, 1,
345 1, 1, 1, 1, 1, 79, 1, 61,
346 61, 61, 61, 61, 1, 1, 1, 1,
347 1, 1, 1, 1, 1, 1, 1, 1,
348 1, 1, 1, 1, 1, 1, 61, 1,
349 1, 1, 1, 1, 1, 1, 1, 1,
350 1, 1, 62, 1, 1, 1, 14, 14,
351 14, 14, 14, 14, 14, 14, 14, 14,
352 1, 1, 1, 1, 1, 1, 1, 1,
353 1, 1, 1, 1, 1, 1, 1, 1,
354 1, 1, 1, 1, 1, 1, 1, 1,
355 1, 1, 1, 1, 1, 1, 1, 1,
356 1, 1, 1, 63, 1, 1, 1, 1,
357 1, 1, 1, 1, 1, 1, 1, 1,
358 1, 1, 1, 1, 1, 1, 1, 1,
359 1, 1, 1, 1, 1, 1, 1, 1,
363 static const char _deserialize_text_trans_targs[] = {
364 1, 0, 2, 25, 3, 4, 19, 5,
365 23, 24, 8, 27, 36, 27, 36, 30,
366 33, 11, 12, 15, 12, 15, 13, 14,
367 31, 32, 31, 32, 26, 18, 34, 35,
368 34, 35, 20, 19, 6, 21, 22, 20,
369 21, 22, 20, 21, 22, 24, 26, 26,
370 7, 9, 10, 16, 21, 29, 26, 7,
371 9, 10, 16, 21, 29, 28, 17, 21,
372 29, 28, 29, 29, 28, 7, 10, 29,
373 28, 7, 21, 29, 33, 28, 21, 29
376 static const char _deserialize_text_trans_actions[] = {
377 0, 0, 0, 0, 1, 0, 2, 0,
378 2, 2, 3, 4, 4, 5, 5, 4,
379 4, 3, 3, 3, 0, 0, 6, 3,
380 4, 4, 5, 5, 5, 3, 4, 4,
381 5, 5, 7, 8, 9, 7, 7, 0,
382 0, 0, 10, 10, 10, 8, 12, 13,
383 14, 14, 14, 15, 11, 11, 17, 18,
384 18, 18, 0, 16, 16, 19, 20, 19,
385 19, 0, 0, 13, 10, 21, 21, 10,
386 22, 23, 22, 22, 5, 24, 24, 24
389 static const char _deserialize_text_eof_actions[] = {
390 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 7, 0, 0, 0, 10,
393 10, 11, 16, 19, 0, 11, 10, 22,
397 static const int deserialize_text_start = 1;
398 static const int deserialize_text_first_final = 19;
399 static const int deserialize_text_error = 0;
401 static const int deserialize_text_en_main = 1;
404 #line 114 "hb-buffer-deserialize-text.rl"
408 _hb_buffer_deserialize_text (hb_buffer_t *buffer,
410 unsigned int buf_len,
411 const char **end_ptr,
414 const char *p = buf, *pe = buf + buf_len;
416 /* Ensure we have positions. */
417 (void) hb_buffer_get_glyph_positions (buffer, nullptr);
419 while (p < pe && ISSPACE (*p))
422 const char *eof = pe, *tok = nullptr;
424 hb_glyph_info_t info = {0};
425 hb_glyph_position_t pos = {0};
427 #line 428 "hb-buffer-deserialize-text.hh"
429 cs = deserialize_text_start;
432 #line 433 "hb-buffer-deserialize-text.hh"
436 const unsigned char *_keys;
443 _keys = _deserialize_text_trans_keys + (cs<<1);
444 _inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs];
446 _slen = _deserialize_text_key_spans[cs];
447 _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
449 (*p) - _keys[0] : _slen ];
451 cs = _deserialize_text_trans_targs[_trans];
453 if ( _deserialize_text_trans_actions[_trans] == 0 )
456 switch ( _deserialize_text_trans_actions[_trans] ) {
458 #line 38 "hb-buffer-deserialize-text.rl"
460 memset (&info, 0, sizeof (info));
461 memset (&pos , 0, sizeof (pos ));
465 #line 51 "hb-buffer-deserialize-text.rl"
471 #line 55 "hb-buffer-deserialize-text.rl"
472 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
475 #line 56 "hb-buffer-deserialize-text.rl"
476 { if (unlikely (!buffer->ensure_unicode ())) return false; }
479 #line 58 "hb-buffer-deserialize-text.rl"
481 /* TODO Unescape delimeters. */
482 if (!hb_font_glyph_from_string (font,
489 #line 66 "hb-buffer-deserialize-text.rl"
490 {if (!parse_hex (tok, p, &info.codepoint )) return false; }
493 #line 68 "hb-buffer-deserialize-text.rl"
494 { if (!parse_uint (tok, p, &info.cluster )) return false; }
497 #line 69 "hb-buffer-deserialize-text.rl"
498 { if (!parse_int (tok, p, &pos.x_offset )) return false; }
501 #line 70 "hb-buffer-deserialize-text.rl"
502 { if (!parse_int (tok, p, &pos.y_offset )) return false; }
505 #line 71 "hb-buffer-deserialize-text.rl"
506 { if (!parse_int (tok, p, &pos.x_advance)) return false; }
509 #line 38 "hb-buffer-deserialize-text.rl"
511 memset (&info, 0, sizeof (info));
512 memset (&pos , 0, sizeof (pos ));
514 #line 51 "hb-buffer-deserialize-text.rl"
520 #line 51 "hb-buffer-deserialize-text.rl"
524 #line 55 "hb-buffer-deserialize-text.rl"
525 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
528 #line 51 "hb-buffer-deserialize-text.rl"
532 #line 56 "hb-buffer-deserialize-text.rl"
533 { if (unlikely (!buffer->ensure_unicode ())) return false; }
536 #line 58 "hb-buffer-deserialize-text.rl"
538 /* TODO Unescape delimeters. */
539 if (!hb_font_glyph_from_string (font,
544 #line 43 "hb-buffer-deserialize-text.rl"
546 buffer->add_info (info);
547 if (unlikely (!buffer->successful))
549 buffer->pos[buffer->len - 1] = pos;
554 #line 66 "hb-buffer-deserialize-text.rl"
555 {if (!parse_hex (tok, p, &info.codepoint )) return false; }
556 #line 43 "hb-buffer-deserialize-text.rl"
558 buffer->add_info (info);
559 if (unlikely (!buffer->successful))
561 buffer->pos[buffer->len - 1] = pos;
566 #line 68 "hb-buffer-deserialize-text.rl"
567 { if (!parse_uint (tok, p, &info.cluster )) return false; }
568 #line 43 "hb-buffer-deserialize-text.rl"
570 buffer->add_info (info);
571 if (unlikely (!buffer->successful))
573 buffer->pos[buffer->len - 1] = pos;
578 #line 70 "hb-buffer-deserialize-text.rl"
579 { if (!parse_int (tok, p, &pos.y_offset )) return false; }
580 #line 43 "hb-buffer-deserialize-text.rl"
582 buffer->add_info (info);
583 if (unlikely (!buffer->successful))
585 buffer->pos[buffer->len - 1] = pos;
590 #line 71 "hb-buffer-deserialize-text.rl"
591 { if (!parse_int (tok, p, &pos.x_advance)) return false; }
592 #line 43 "hb-buffer-deserialize-text.rl"
594 buffer->add_info (info);
595 if (unlikely (!buffer->successful))
597 buffer->pos[buffer->len - 1] = pos;
602 #line 72 "hb-buffer-deserialize-text.rl"
603 { if (!parse_int (tok, p, &pos.y_advance)) return false; }
604 #line 43 "hb-buffer-deserialize-text.rl"
606 buffer->add_info (info);
607 if (unlikely (!buffer->successful))
609 buffer->pos[buffer->len - 1] = pos;
614 #line 38 "hb-buffer-deserialize-text.rl"
616 memset (&info, 0, sizeof (info));
617 memset (&pos , 0, sizeof (pos ));
619 #line 51 "hb-buffer-deserialize-text.rl"
623 #line 55 "hb-buffer-deserialize-text.rl"
624 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
627 #line 38 "hb-buffer-deserialize-text.rl"
629 memset (&info, 0, sizeof (info));
630 memset (&pos , 0, sizeof (pos ));
632 #line 51 "hb-buffer-deserialize-text.rl"
636 #line 58 "hb-buffer-deserialize-text.rl"
638 /* TODO Unescape delimeters. */
639 if (!hb_font_glyph_from_string (font,
646 #line 58 "hb-buffer-deserialize-text.rl"
648 /* TODO Unescape delimeters. */
649 if (!hb_font_glyph_from_string (font,
654 #line 55 "hb-buffer-deserialize-text.rl"
655 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
656 #line 43 "hb-buffer-deserialize-text.rl"
658 buffer->add_info (info);
659 if (unlikely (!buffer->successful))
661 buffer->pos[buffer->len - 1] = pos;
666 #line 38 "hb-buffer-deserialize-text.rl"
668 memset (&info, 0, sizeof (info));
669 memset (&pos , 0, sizeof (pos ));
671 #line 51 "hb-buffer-deserialize-text.rl"
675 #line 58 "hb-buffer-deserialize-text.rl"
677 /* TODO Unescape delimeters. */
678 if (!hb_font_glyph_from_string (font,
683 #line 43 "hb-buffer-deserialize-text.rl"
685 buffer->add_info (info);
686 if (unlikely (!buffer->successful))
688 buffer->pos[buffer->len - 1] = pos;
693 #line 38 "hb-buffer-deserialize-text.rl"
695 memset (&info, 0, sizeof (info));
696 memset (&pos , 0, sizeof (pos ));
698 #line 51 "hb-buffer-deserialize-text.rl"
702 #line 58 "hb-buffer-deserialize-text.rl"
704 /* TODO Unescape delimeters. */
705 if (!hb_font_glyph_from_string (font,
710 #line 55 "hb-buffer-deserialize-text.rl"
711 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
712 #line 43 "hb-buffer-deserialize-text.rl"
714 buffer->add_info (info);
715 if (unlikely (!buffer->successful))
717 buffer->pos[buffer->len - 1] = pos;
721 #line 722 "hb-buffer-deserialize-text.hh"
732 switch ( _deserialize_text_eof_actions[cs] ) {
734 #line 58 "hb-buffer-deserialize-text.rl"
736 /* TODO Unescape delimeters. */
737 if (!hb_font_glyph_from_string (font,
742 #line 43 "hb-buffer-deserialize-text.rl"
744 buffer->add_info (info);
745 if (unlikely (!buffer->successful))
747 buffer->pos[buffer->len - 1] = pos;
752 #line 66 "hb-buffer-deserialize-text.rl"
753 {if (!parse_hex (tok, p, &info.codepoint )) return false; }
754 #line 43 "hb-buffer-deserialize-text.rl"
756 buffer->add_info (info);
757 if (unlikely (!buffer->successful))
759 buffer->pos[buffer->len - 1] = pos;
764 #line 68 "hb-buffer-deserialize-text.rl"
765 { if (!parse_uint (tok, p, &info.cluster )) return false; }
766 #line 43 "hb-buffer-deserialize-text.rl"
768 buffer->add_info (info);
769 if (unlikely (!buffer->successful))
771 buffer->pos[buffer->len - 1] = pos;
776 #line 70 "hb-buffer-deserialize-text.rl"
777 { if (!parse_int (tok, p, &pos.y_offset )) return false; }
778 #line 43 "hb-buffer-deserialize-text.rl"
780 buffer->add_info (info);
781 if (unlikely (!buffer->successful))
783 buffer->pos[buffer->len - 1] = pos;
788 #line 71 "hb-buffer-deserialize-text.rl"
789 { if (!parse_int (tok, p, &pos.x_advance)) return false; }
790 #line 43 "hb-buffer-deserialize-text.rl"
792 buffer->add_info (info);
793 if (unlikely (!buffer->successful))
795 buffer->pos[buffer->len - 1] = pos;
800 #line 72 "hb-buffer-deserialize-text.rl"
801 { if (!parse_int (tok, p, &pos.y_advance)) return false; }
802 #line 43 "hb-buffer-deserialize-text.rl"
804 buffer->add_info (info);
805 if (unlikely (!buffer->successful))
807 buffer->pos[buffer->len - 1] = pos;
812 #line 38 "hb-buffer-deserialize-text.rl"
814 memset (&info, 0, sizeof (info));
815 memset (&pos , 0, sizeof (pos ));
817 #line 51 "hb-buffer-deserialize-text.rl"
821 #line 58 "hb-buffer-deserialize-text.rl"
823 /* TODO Unescape delimeters. */
824 if (!hb_font_glyph_from_string (font,
829 #line 43 "hb-buffer-deserialize-text.rl"
831 buffer->add_info (info);
832 if (unlikely (!buffer->successful))
834 buffer->pos[buffer->len - 1] = pos;
838 #line 839 "hb-buffer-deserialize-text.hh"
845 #line 138 "hb-buffer-deserialize-text.rl"
850 return p == pe && *(p-1) != ']';
853 #endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */