blob: fb36f5601595c4e6f58f099afa41a9d2745965d6 [file] [log] [blame]
Behdad Esfahbod8461ade2019-05-13 14:10:48 -07001#line 1 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -08002/*
Behdad Esfahbod5ef06132020-10-15 01:54:28 -06003* Copyright © 2013 Google, Inc.
4*
5* This is part of HarfBuzz, a text shaping library.
6*
7* Permission is hereby granted, without written agreement and without
8* license or royalty fees, to use, copy, modify, and distribute this
9* software and its documentation for any purpose, provided that the
10* above copyright notice and the following two paragraphs appear in
11* all copies of this software.
12*
13* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
14* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
15* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
16* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
17* DAMAGE.
18*
19* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
20* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
22* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
23* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24*
25* Google Author(s): Behdad Esfahbod
26*/
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -080027
28#ifndef HB_BUFFER_DESERIALIZE_TEXT_HH
29#define HB_BUFFER_DESERIALIZE_TEXT_HH
30
Behdad Esfahbodc77ae402018-08-25 22:36:36 -070031#include "hb.hh"
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -080032
33
Behdad Esfahbod5ef06132020-10-15 01:54:28 -060034#line 35 "hb-buffer-deserialize-text.hh"
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -080035static const unsigned char _deserialize_text_trans_keys[] = {
Behdad Esfahbod5ef06132020-10-15 01:54:28 -060036 1u, 0u, 0u, 13u, 12u, 12u, 2u, 2u,
37 5u, 11u, 0u, 12u, 5u, 6u, 4u, 6u,
38 5u, 6u, 5u, 6u, 4u, 6u, 5u, 6u,
39 3u, 3u, 4u, 6u, 5u, 6u, 3u, 6u,
40 2u, 16u, 4u, 6u, 5u, 6u, 0u, 16u,
41 0u, 16u, 1u, 0u, 0u, 12u, 0u, 16u,
42 0u, 16u, 0u, 16u, 0u, 16u, 0u, 16u,
43 0u, 16u, 0u, 16u, 0u, 16u, 0u, 16u,
44 0u, 16u, 0u, 16u, 0u, 16u, 0u, 16u,
45 0u, 16u, 0u
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -080046};
47
Behdad Esfahbod5ef06132020-10-15 01:54:28 -060048static const signed char _deserialize_text_char_class[] = {
49 0, 0, 0, 0, 0, 1, 1, 1,
50 1, 1, 1, 1, 1, 1, 1, 1,
51 1, 1, 1, 1, 1, 1, 1, 0,
52 1, 1, 1, 1, 1, 1, 1, 1,
53 1, 1, 2, 3, 4, 1, 1, 5,
54 6, 6, 6, 6, 6, 6, 6, 6,
55 6, 1, 1, 7, 8, 9, 1, 10,
56 11, 11, 11, 11, 11, 11, 1, 1,
57 1, 1, 1, 1, 1, 1, 1, 1,
58 1, 1, 1, 1, 12, 1, 1, 1,
59 1, 1, 13, 14, 15, 1, 1, 1,
60 11, 11, 11, 11, 11, 11, 1, 1,
61 1, 1, 1, 1, 1, 1, 1, 1,
62 1, 1, 1, 1, 1, 1, 1, 1,
63 1, 1, 1, 16, 0
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -080064};
65
Behdad Esfahbod52c15b02019-05-13 14:10:28 -070066static const short _deserialize_text_index_offsets[] = {
Behdad Esfahbod5ef06132020-10-15 01:54:28 -060067 0, 0, 14, 15, 16, 23, 36, 38,
68 41, 43, 45, 48, 50, 51, 54, 56,
69 60, 75, 78, 80, 97, 114, 114, 127,
70 144, 161, 178, 195, 212, 229, 246, 263,
71 280, 297, 314, 331, 348, 0
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -080072};
73
Behdad Esfahbod5ef06132020-10-15 01:54:28 -060074static const signed char _deserialize_text_indicies[] = {
75 1, 0, 0, 0, 0, 0, 0, 2,
76 0, 0, 0, 0, 0, 3, 4, 6,
77 7, 7, 0, 0, 0, 0, 7, 8,
78 0, 0, 0, 0, 0, 0, 0, 0,
79 0, 0, 0, 4, 10, 11, 13, 14,
80 15, 17, 18, 20, 21, 23, 24, 25,
81 27, 28, 29, 31, 32, 33, 35, 36,
82 29, 0, 28, 28, 38, 38, 0, 0,
83 0, 0, 38, 0, 38, 0, 0, 0,
84 38, 38, 38, 40, 41, 42, 44, 45,
85 47, 0, 0, 0, 0, 48, 48, 0,
86 49, 50, 0, 48, 0, 0, 0, 0,
87 51, 52, 0, 0, 0, 0, 0, 0,
88 0, 0, 53, 0, 0, 0, 0, 0,
89 0, 54, 8, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 4, 56,
91 0, 0, 0, 0, 0, 0, 0, 0,
92 57, 0, 0, 0, 0, 0, 0, 58,
93 56, 0, 0, 0, 0, 60, 60, 0,
94 0, 57, 0, 0, 0, 0, 0, 0,
95 58, 63, 62, 64, 0, 62, 62, 62,
96 62, 65, 62, 66, 62, 62, 62, 67,
97 68, 69, 71, 38, 72, 0, 38, 38,
98 38, 38, 73, 38, 74, 38, 38, 38,
99 37, 75, 76, 78, 0, 0, 79, 0,
100 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 80, 81, 82, 0, 0, 0,
102 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 53, 83, 84, 62, 64,
104 0, 62, 62, 62, 62, 65, 62, 66,
105 62, 62, 62, 67, 68, 69, 86, 0,
106 87, 0, 0, 0, 0, 0, 0, 0,
107 88, 0, 0, 0, 0, 57, 89, 91,
108 0, 92, 0, 0, 0, 0, 0, 0,
109 0, 0, 0, 0, 0, 0, 93, 94,
110 91, 0, 92, 0, 0, 36, 36, 0,
111 0, 0, 0, 0, 0, 0, 0, 93,
112 94, 86, 0, 87, 0, 0, 97, 97,
113 0, 0, 0, 88, 0, 0, 0, 0,
114 57, 89, 99, 0, 0, 0, 0, 0,
115 0, 0, 0, 0, 0, 0, 0, 0,
116 0, 100, 101, 99, 0, 0, 0, 0,
117 45, 45, 0, 0, 0, 0, 0, 0,
118 0, 0, 100, 101, 78, 0, 0, 79,
119 0, 18, 18, 0, 0, 0, 0, 0,
120 0, 0, 0, 80, 81, 0
Behdad Esfahbod52c15b02019-05-13 14:10:28 -0700121};
122
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600123static const signed char _deserialize_text_index_defaults[] = {
124 0, 0, 0, 0, 0, 0, 0, 0,
125 0, 0, 0, 0, 0, 0, 0, 0,
126 0, 0, 0, 0, 0, 0, 0, 0,
127 0, 62, 38, 0, 0, 62, 0, 0,
128 0, 0, 0, 0, 0, 0
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800129};
130
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600131static const signed char _deserialize_text_cond_targs[] = {
132 0, 1, 2, 25, 3, 3, 4, 19,
133 5, 6, 23, 24, 7, 8, 27, 36,
134 8, 27, 36, 9, 30, 33, 10, 11,
135 12, 15, 11, 12, 15, 13, 13, 14,
136 31, 32, 14, 31, 32, 16, 26, 17,
137 18, 34, 35, 18, 34, 35, 19, 20,
138 19, 6, 21, 22, 20, 21, 22, 23,
139 20, 21, 22, 24, 24, 25, 26, 26,
140 7, 9, 10, 16, 21, 29, 26, 26,
141 7, 9, 10, 21, 29, 27, 28, 17,
142 21, 29, 28, 29, 29, 30, 28, 7,
143 10, 29, 31, 28, 7, 21, 29, 32,
144 33, 33, 34, 28, 21, 29, 35, 36,
145 0
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800146};
147
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600148static const signed char _deserialize_text_cond_actions[] = {
149 0, 0, 0, 0, 1, 0, 0, 2,
150 0, 0, 2, 2, 0, 3, 4, 4,
151 0, 5, 5, 0, 4, 4, 0, 3,
152 3, 3, 0, 0, 0, 6, 0, 3,
153 4, 4, 0, 5, 5, 0, 5, 0,
154 3, 4, 4, 0, 5, 5, 7, 7,
155 8, 9, 7, 7, 0, 0, 0, 10,
156 10, 10, 10, 10, 8, 11, 12, 13,
157 14, 14, 14, 15, 11, 11, 16, 17,
158 18, 18, 18, 16, 16, 19, 19, 20,
159 19, 19, 0, 0, 13, 10, 10, 21,
160 21, 10, 22, 22, 23, 22, 22, 22,
161 10, 5, 24, 24, 24, 24, 24, 19,
162 0
163};
164
165static const signed char _deserialize_text_eof_trans[] = {
166 1, 2, 3, 6, 7, 9, 10, 13,
167 17, 20, 23, 27, 28, 31, 35, 29,
168 38, 40, 44, 47, 53, 54, 55, 56,
169 60, 62, 71, 78, 83, 70, 86, 91,
170 96, 97, 99, 103, 104, 0
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800171};
172
173static const int deserialize_text_start = 1;
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600174static const int deserialize_text_first_final = 19;
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800175static const int deserialize_text_error = 0;
176
177static const int deserialize_text_en_main = 1;
178
179
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600180#line 114 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700181
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800182
183static hb_bool_t
Simon Cozensc03a2002020-09-18 14:19:17 +0100184_hb_buffer_deserialize_text (hb_buffer_t *buffer,
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600185const char *buf,
186unsigned int buf_len,
187const char **end_ptr,
188hb_font_t *font)
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800189{
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600190 const char *p = buf, *pe = buf + buf_len;
191
192 /* Ensure we have positions. */
193 (void) hb_buffer_get_glyph_positions (buffer, nullptr);
194
195 while (p < pe && ISSPACE (*p))
196 p++;
197
198 const char *eof = pe, *tok = nullptr;
199 int cs;
200 hb_glyph_info_t info = {0};
201 hb_glyph_position_t pos = {0};
202
203#line 204 "hb-buffer-deserialize-text.hh"
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800204 {
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600205 cs = (int)deserialize_text_start;
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800206 }
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600207
208#line 209 "hb-buffer-deserialize-text.hh"
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800209 {
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600210 unsigned int _trans = 0;
211 const unsigned char * _keys;
212 const signed char * _inds;
213 int _ic;
214 _resume: {}
215 if ( p == pe && p != eof )
216 goto _out;
217 if ( p == eof ) {
218 if ( _deserialize_text_eof_trans[cs] > 0 ) {
219 _trans = (unsigned int)_deserialize_text_eof_trans[cs] - 1;
220 }
221 }
222 else {
223 _keys = ( _deserialize_text_trans_keys + ((cs<<1)));
224 _inds = ( _deserialize_text_indicies + (_deserialize_text_index_offsets[cs]));
225
226 if ( ( (*( p))) <= 124 && ( (*( p))) >= 9 ) {
227 _ic = (int)_deserialize_text_char_class[(int)( (*( p))) - 9];
228 if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) )
229 _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) ));
230 else
231 _trans = (unsigned int)_deserialize_text_index_defaults[cs];
232 }
233 else {
234 _trans = (unsigned int)_deserialize_text_index_defaults[cs];
235 }
236
237 }
238 cs = (int)_deserialize_text_cond_targs[_trans];
239
240 if ( _deserialize_text_cond_actions[_trans] != 0 ) {
241
242 switch ( _deserialize_text_cond_actions[_trans] ) {
243 case 1: {
244 {
Behdad Esfahbod4a4eebc2020-10-09 21:06:20 -0600245#line 38 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600246
247 memset (&info, 0, sizeof (info));
248 memset (&pos , 0, sizeof (pos ));
249 }
250
251#line 252 "hb-buffer-deserialize-text.hh"
252
253
254 break;
255 }
256 case 3: {
257 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700258#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600259
260 tok = p;
261 }
262
263#line 264 "hb-buffer-deserialize-text.hh"
264
265
266 break;
267 }
268 case 5: {
269 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700270#line 55 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600271 if (unlikely (!buffer->ensure_glyphs ())) return false; }
272
273#line 274 "hb-buffer-deserialize-text.hh"
274
275
276 break;
277 }
278 case 8: {
279 {
280#line 56 "hb-buffer-deserialize-text.rl"
281 if (unlikely (!buffer->ensure_unicode ())) return false; }
282
283#line 284 "hb-buffer-deserialize-text.hh"
284
285
286 break;
287 }
288 case 18: {
289 {
290#line 58 "hb-buffer-deserialize-text.rl"
291
292 /* TODO Unescape delimeters. */
293 if (!hb_font_glyph_from_string (font,
294 tok, p - tok,
295 &info.codepoint))
296 return false;
297 }
298
299#line 300 "hb-buffer-deserialize-text.hh"
300
301
302 break;
303 }
304 case 9: {
305 {
306#line 66 "hb-buffer-deserialize-text.rl"
307 if (!parse_hex (tok, p, &info.codepoint )) return false; }
308
309#line 310 "hb-buffer-deserialize-text.hh"
310
311
312 break;
313 }
314 case 21: {
315 {
316#line 68 "hb-buffer-deserialize-text.rl"
317 if (!parse_uint (tok, p, &info.cluster )) return false; }
318
319#line 320 "hb-buffer-deserialize-text.hh"
320
321
322 break;
323 }
324 case 6: {
325 {
326#line 69 "hb-buffer-deserialize-text.rl"
327 if (!parse_int (tok, p, &pos.x_offset )) return false; }
328
329#line 330 "hb-buffer-deserialize-text.hh"
330
331
332 break;
333 }
334 case 23: {
335 {
336#line 70 "hb-buffer-deserialize-text.rl"
337 if (!parse_int (tok, p, &pos.y_offset )) return false; }
338
339#line 340 "hb-buffer-deserialize-text.hh"
340
341
342 break;
343 }
344 case 20: {
345 {
346#line 71 "hb-buffer-deserialize-text.rl"
347 if (!parse_int (tok, p, &pos.x_advance)) return false; }
348
349#line 350 "hb-buffer-deserialize-text.hh"
350
351
352 break;
353 }
354 case 15: {
355 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600356#line 38 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600357
358 memset (&info, 0, sizeof (info));
359 memset (&pos , 0, sizeof (pos ));
360 }
361
362#line 363 "hb-buffer-deserialize-text.hh"
363
364 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600365#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600366
367 tok = p;
368 }
369
370#line 371 "hb-buffer-deserialize-text.hh"
371
372
373 break;
374 }
375 case 4: {
376 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600377#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600378
379 tok = p;
380 }
381
382#line 383 "hb-buffer-deserialize-text.hh"
383
384 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600385#line 55 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600386 if (unlikely (!buffer->ensure_glyphs ())) return false; }
387
388#line 389 "hb-buffer-deserialize-text.hh"
389
390
391 break;
392 }
393 case 2: {
394 {
Behdad Esfahbod4a4eebc2020-10-09 21:06:20 -0600395#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600396
397 tok = p;
398 }
399
400#line 401 "hb-buffer-deserialize-text.hh"
401
402 {
403#line 56 "hb-buffer-deserialize-text.rl"
404 if (unlikely (!buffer->ensure_unicode ())) return false; }
405
406#line 407 "hb-buffer-deserialize-text.hh"
407
408
409 break;
410 }
411 case 16: {
412 {
413#line 58 "hb-buffer-deserialize-text.rl"
414
415 /* TODO Unescape delimeters. */
416 if (!hb_font_glyph_from_string (font,
417 tok, p - tok,
418 &info.codepoint))
419 return false;
420 }
421
422#line 423 "hb-buffer-deserialize-text.hh"
423
424 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700425#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600426
427 buffer->add_info (info);
428 if (unlikely (!buffer->successful))
429 return false;
430 buffer->pos[buffer->len - 1] = pos;
431 *end_ptr = p;
432 }
433
434#line 435 "hb-buffer-deserialize-text.hh"
435
436
437 break;
438 }
439 case 7: {
440 {
441#line 66 "hb-buffer-deserialize-text.rl"
442 if (!parse_hex (tok, p, &info.codepoint )) return false; }
443
444#line 445 "hb-buffer-deserialize-text.hh"
445
446 {
Simon Cozensc03a2002020-09-18 14:19:17 +0100447#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600448
449 buffer->add_info (info);
450 if (unlikely (!buffer->successful))
451 return false;
452 buffer->pos[buffer->len - 1] = pos;
453 *end_ptr = p;
454 }
455
456#line 457 "hb-buffer-deserialize-text.hh"
457
458
459 break;
460 }
461 case 10: {
462 {
463#line 68 "hb-buffer-deserialize-text.rl"
464 if (!parse_uint (tok, p, &info.cluster )) return false; }
465
466#line 467 "hb-buffer-deserialize-text.hh"
467
468 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700469#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600470
471 buffer->add_info (info);
472 if (unlikely (!buffer->successful))
473 return false;
474 buffer->pos[buffer->len - 1] = pos;
475 *end_ptr = p;
476 }
477
478#line 479 "hb-buffer-deserialize-text.hh"
479
480
481 break;
482 }
483 case 22: {
484 {
485#line 70 "hb-buffer-deserialize-text.rl"
486 if (!parse_int (tok, p, &pos.y_offset )) return false; }
487
488#line 489 "hb-buffer-deserialize-text.hh"
489
490 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700491#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600492
493 buffer->add_info (info);
494 if (unlikely (!buffer->successful))
495 return false;
496 buffer->pos[buffer->len - 1] = pos;
497 *end_ptr = p;
498 }
499
500#line 501 "hb-buffer-deserialize-text.hh"
501
502
503 break;
504 }
505 case 19: {
506 {
507#line 71 "hb-buffer-deserialize-text.rl"
508 if (!parse_int (tok, p, &pos.x_advance)) return false; }
509
510#line 511 "hb-buffer-deserialize-text.hh"
511
512 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700513#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600514
515 buffer->add_info (info);
516 if (unlikely (!buffer->successful))
517 return false;
518 buffer->pos[buffer->len - 1] = pos;
519 *end_ptr = p;
520 }
521
522#line 523 "hb-buffer-deserialize-text.hh"
523
524
525 break;
526 }
527 case 24: {
528 {
529#line 72 "hb-buffer-deserialize-text.rl"
530 if (!parse_int (tok, p, &pos.y_advance)) return false; }
531
532#line 533 "hb-buffer-deserialize-text.hh"
533
534 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700535#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600536
537 buffer->add_info (info);
538 if (unlikely (!buffer->successful))
539 return false;
540 buffer->pos[buffer->len - 1] = pos;
541 *end_ptr = p;
542 }
543
544#line 545 "hb-buffer-deserialize-text.hh"
545
546
547 break;
548 }
549 case 12: {
550 {
Simon Cozens150f3912020-09-25 10:04:39 +0100551#line 38 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600552
553 memset (&info, 0, sizeof (info));
554 memset (&pos , 0, sizeof (pos ));
555 }
556
557#line 558 "hb-buffer-deserialize-text.hh"
558
559 {
Simon Cozens150f3912020-09-25 10:04:39 +0100560#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600561
562 tok = p;
563 }
564
565#line 566 "hb-buffer-deserialize-text.hh"
566
567 {
Simon Cozens150f3912020-09-25 10:04:39 +0100568#line 55 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600569 if (unlikely (!buffer->ensure_glyphs ())) return false; }
570
571#line 572 "hb-buffer-deserialize-text.hh"
572
573
574 break;
575 }
576 case 14: {
577 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600578#line 38 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600579
580 memset (&info, 0, sizeof (info));
581 memset (&pos , 0, sizeof (pos ));
582 }
583
584#line 585 "hb-buffer-deserialize-text.hh"
585
586 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600587#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600588
589 tok = p;
590 }
591
592#line 593 "hb-buffer-deserialize-text.hh"
593
594 {
595#line 58 "hb-buffer-deserialize-text.rl"
596
597 /* TODO Unescape delimeters. */
598 if (!hb_font_glyph_from_string (font,
599 tok, p - tok,
600 &info.codepoint))
601 return false;
602 }
603
604#line 605 "hb-buffer-deserialize-text.hh"
605
606
607 break;
608 }
609 case 17: {
610 {
611#line 58 "hb-buffer-deserialize-text.rl"
612
613 /* TODO Unescape delimeters. */
614 if (!hb_font_glyph_from_string (font,
615 tok, p - tok,
616 &info.codepoint))
617 return false;
618 }
619
620#line 621 "hb-buffer-deserialize-text.hh"
621
622 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600623#line 55 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600624 if (unlikely (!buffer->ensure_glyphs ())) return false; }
625
626#line 627 "hb-buffer-deserialize-text.hh"
627
628 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600629#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600630
631 buffer->add_info (info);
632 if (unlikely (!buffer->successful))
633 return false;
634 buffer->pos[buffer->len - 1] = pos;
635 *end_ptr = p;
636 }
637
638#line 639 "hb-buffer-deserialize-text.hh"
639
640
641 break;
642 }
643 case 11: {
644 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600645#line 38 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600646
647 memset (&info, 0, sizeof (info));
648 memset (&pos , 0, sizeof (pos ));
649 }
650
651#line 652 "hb-buffer-deserialize-text.hh"
652
653 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600654#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600655
656 tok = p;
657 }
658
659#line 660 "hb-buffer-deserialize-text.hh"
660
661 {
662#line 58 "hb-buffer-deserialize-text.rl"
663
664 /* TODO Unescape delimeters. */
665 if (!hb_font_glyph_from_string (font,
666 tok, p - tok,
667 &info.codepoint))
668 return false;
669 }
670
671#line 672 "hb-buffer-deserialize-text.hh"
672
673 {
Behdad Esfahbod8461ade2019-05-13 14:10:48 -0700674#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600675
676 buffer->add_info (info);
677 if (unlikely (!buffer->successful))
678 return false;
679 buffer->pos[buffer->len - 1] = pos;
680 *end_ptr = p;
681 }
682
683#line 684 "hb-buffer-deserialize-text.hh"
684
685
686 break;
687 }
688 case 13: {
689 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600690#line 38 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600691
692 memset (&info, 0, sizeof (info));
693 memset (&pos , 0, sizeof (pos ));
694 }
695
696#line 697 "hb-buffer-deserialize-text.hh"
697
698 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600699#line 51 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600700
701 tok = p;
702 }
703
704#line 705 "hb-buffer-deserialize-text.hh"
705
706 {
707#line 58 "hb-buffer-deserialize-text.rl"
708
709 /* TODO Unescape delimeters. */
710 if (!hb_font_glyph_from_string (font,
711 tok, p - tok,
712 &info.codepoint))
713 return false;
714 }
715
716#line 717 "hb-buffer-deserialize-text.hh"
717
718 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600719#line 55 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600720 if (unlikely (!buffer->ensure_glyphs ())) return false; }
721
722#line 723 "hb-buffer-deserialize-text.hh"
723
724 {
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600725#line 43 "hb-buffer-deserialize-text.rl"
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600726
727 buffer->add_info (info);
728 if (unlikely (!buffer->successful))
729 return false;
730 buffer->pos[buffer->len - 1] = pos;
731 *end_ptr = p;
732 }
733
734#line 735 "hb-buffer-deserialize-text.hh"
735
736
737 break;
738 }
739 }
740
741 }
742
743 if ( p == eof ) {
744 if ( cs >= 19 )
745 goto _out;
746 }
747 else {
748 if ( cs != 0 ) {
749 p += 1;
750 goto _resume;
751 }
752 }
753 _out: {}
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600754 }
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600755
756#line 138 "hb-buffer-deserialize-text.rl"
757
758
Behdad Esfahbodc396e162020-10-09 21:13:10 -0600759 *end_ptr = p;
Behdad Esfahbod5ef06132020-10-15 01:54:28 -0600760
761 return p == pe && *(p-1) != ']';
Behdad Esfahbod4fb97be2018-02-21 14:38:02 -0800762}
763
764#endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */