10ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
29fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 1 "../../src/hb-buffer-deserialize-text.rl"
30ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien/*
40ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Copyright © 2013  Google, Inc.
50ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
60ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *  This is part of HarfBuzz, a text shaping library.
70ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
80ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Permission is hereby granted, without written agreement and without
90ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * license or royalty fees, to use, copy, modify, and distribute this
100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * software and its documentation for any purpose, provided that the
110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * above copyright notice and the following two paragraphs appear in
120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * all copies of this software.
130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * DAMAGE.
190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien *
260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien * Google Author(s): Behdad Esfahbod
270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien */
280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#ifndef HB_BUFFER_DESERIALIZE_TEXT_HH
300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#define HB_BUFFER_DESERIALIZE_TEXT_HH
310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#include "hb-private.hh"
330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 36 "hb-buffer-deserialize-text.hh.tmp"
360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const unsigned char _deserialize_text_trans_keys[] = {
370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u,
380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u,
390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u,
400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9u, 124u, 9u, 124u, 9u, 124u, 0
410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_text_key_spans[] = {
440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 114, 13, 10, 13, 10, 10, 13,
450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	10, 1, 13, 10, 14, 116, 116, 0,
460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	114, 116, 116, 116, 116, 116, 116, 116,
470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	116, 116, 116
480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const short _deserialize_text_index_offsets[] = {
510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 115, 129, 140, 154, 165, 176,
520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	190, 201, 203, 217, 228, 243, 360, 477,
530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	478, 593, 710, 827, 944, 1061, 1178, 1295,
540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1412, 1529, 1646
550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_text_indicies[] = {
580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 0, 1, 1,
590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 1, 1, 1, 1, 1, 1, 1,
620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 3, 3, 3, 3, 3, 3, 3,
640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	3, 3, 1, 1, 1, 1, 1, 1,
650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 4, 4, 4, 4, 4, 4, 4,
660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 1, 1, 1, 1, 1,
690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 4, 4, 4, 4, 4, 4, 4,
700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 1, 5, 1, 1, 6,
730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	7, 7, 7, 7, 7, 7, 7, 7,
740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	7, 1, 8, 9, 9, 9, 9, 9,
750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9, 9, 9, 9, 1, 10, 1, 1,
760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	11, 12, 12, 12, 12, 12, 12, 12,
770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	12, 12, 1, 13, 14, 14, 14, 14,
780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	14, 14, 14, 14, 14, 1, 15, 16,
790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	16, 16, 16, 16, 16, 16, 16, 16,
800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 17, 1, 1, 18, 19, 19, 19,
810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	19, 19, 19, 19, 19, 19, 1, 20,
820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	21, 21, 21, 21, 21, 21, 21, 21,
830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	21, 1, 22, 1, 23, 1, 1, 24,
840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	25, 25, 25, 25, 25, 25, 25, 25,
850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	25, 1, 26, 27, 27, 27, 27, 27,
860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	27, 27, 27, 27, 1, 22, 1, 1,
870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 21, 21, 21, 21, 21, 21, 21,
880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	21, 21, 21, 1, 28, 28, 28, 28,
890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	28, 1, 1, 1, 1, 1, 1, 1,
900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 28, 1, 1, 1, 1,
920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 29, 1,
930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	30, 1, 1, 31, 1, 1, 1, 1,
960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	32, 1, 1, 1, 1, 1, 1, 1,
1000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 33,
1030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 34, 34, 34, 34, 34, 1, 1,
1040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	34, 1, 1, 1, 1, 1, 1, 1,
1070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 35, 1, 1,
1140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 36, 1, 1, 0,
1180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 1, 1, 1, 1,
1190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 0, 1,
1210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 2, 3,
1230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	3, 3, 3, 3, 3, 3, 3, 3,
1240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 4,
1250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
1260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
1270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
1280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 1, 1, 1, 1, 1, 1, 4,
1290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
1300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
1310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 4, 4, 4, 4, 4, 4,
1320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 1, 28, 28, 28, 28, 28, 1,
1330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 28, 1, 1, 1, 1, 1, 1,
1360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 29, 1, 1, 1,
1370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 37, 37, 37, 37, 37, 37, 37,
1380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	37, 37, 37, 1, 1, 1, 30, 1,
1390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 31, 1, 1, 1, 1, 1, 1,
1400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 32, 1,
1430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 33, 1, 38,
1470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	38, 38, 38, 38, 1, 1, 1, 1,
1480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 38, 1,
1500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 39, 1, 1, 1, 1, 1,
1520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 40, 1, 1, 1, 1,
1580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 41, 1, 42, 42, 42, 42,
1620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	42, 1, 1, 1, 1, 1, 1, 1,
1630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 42, 1, 1, 1, 1,
1650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	43, 1, 1, 1, 1, 1, 1, 1,
1730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 44,
1760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 42, 42, 42, 42, 42, 1, 1,
1770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	42, 1, 1, 1, 1, 1, 1, 1,
1800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	14, 14, 14, 14, 14, 14, 14, 14,
1820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	14, 14, 1, 1, 1, 1, 1, 1,
1830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 43, 1, 1,
1870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 44, 1, 38, 38,
1910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	38, 38, 38, 1, 1, 1, 1, 1,
1920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 38, 1, 1,
1940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 39, 1, 1, 1, 9, 9, 9,
1960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9, 9, 9, 9, 9, 9, 9, 1,
1970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
1990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 40, 1, 1, 1, 1, 1,
2020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 41, 1, 45, 45, 45, 45, 45,
2060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 45, 1, 1, 1, 1, 1,
2090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 46, 1, 1,
2100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 47, 1, 1, 1, 1, 1,
2130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 48,
2160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 49, 1,
2200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	50, 50, 50, 50, 50, 1, 1, 1,
2210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 50,
2230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 51, 1, 1, 1, 1, 1,
2250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 52, 1, 1, 1,
2310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 53, 1, 50, 50, 50,
2350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	50, 50, 1, 1, 1, 1, 1, 1,
2360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 50, 1, 1, 1,
2380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 51,
2390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 27, 27, 27, 27,
2400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	27, 27, 27, 27, 27, 27, 1, 1,
2410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 52, 1, 1, 1, 1, 1, 1,
2460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	53, 1, 45, 45, 45, 45, 45, 1,
2500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 45, 1, 1, 1, 1, 1, 1,
2530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 46, 1, 1, 1,
2540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 54, 54, 54, 54, 54, 54, 54,
2550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	54, 54, 54, 1, 1, 1, 1, 1,
2560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 47, 1, 1, 1, 1, 1, 1,
2570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 48, 1,
2600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 49, 1, 28,
2640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	28, 28, 28, 28, 1, 1, 1, 1,
2650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 28, 1,
2670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 1, 1, 1, 1, 1,
2680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 29, 1, 55, 55, 1, 55, 55,
2690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 1, 1, 30, 1, 1, 31, 55,
2710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 1, 1, 32, 1, 55, 1, 55,
2750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 55, 55, 55, 55, 55, 55, 55,
2780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	55, 1, 33, 1, 0
2790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
2800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_text_trans_targs[] = {
2820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	1, 0, 13, 17, 26, 3, 18, 21,
2830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	18, 21, 5, 19, 20, 19, 20, 22,
2840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	25, 8, 9, 12, 9, 12, 10, 11,
2850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	23, 24, 23, 24, 14, 2, 6, 7,
2860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	15, 16, 14, 15, 16, 17, 14, 4,
2870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	15, 16, 14, 15, 16, 14, 2, 7,
2880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	15, 16, 14, 2, 15, 16, 25, 26
2890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
2900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
2910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_text_trans_actions[] = {
2920ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 1, 1, 1, 2, 2, 2,
2930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 2, 2, 2, 0, 0, 2,
2940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 2, 2, 2, 0, 0, 3, 2,
2950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	2, 2, 0, 0, 4, 5, 5, 5,
2960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	4, 4, 0, 0, 0, 0, 6, 7,
2970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	6, 6, 8, 8, 8, 9, 10, 10,
2980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	9, 9, 11, 12, 11, 11, 0, 0
2990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
3000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const char _deserialize_text_eof_actions[] = {
3020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 0, 0, 0, 0,
3030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 0, 0, 0, 0, 4, 0, 0,
3040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	0, 4, 6, 8, 8, 6, 9, 11,
3050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	11, 9, 4
3060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien};
3070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_text_start = 1;
3090ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_text_first_final = 13;
3100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_text_error = 0;
3110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic const int deserialize_text_en_main = 1;
3130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3159fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 91 "../../src/hb-buffer-deserialize-text.rl"
3160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levienstatic hb_bool_t
3190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer,
3200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    const char *buf,
3210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    unsigned int buf_len,
3220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    const char **end_ptr,
3230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien				    hb_font_t *font)
3240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien{
3250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  const char *p = buf, *pe = buf + buf_len;
3260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  /* Ensure we have positions. */
3280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  (void) hb_buffer_get_glyph_positions (buffer, NULL);
3290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  while (p < pe && ISSPACE (*p))
3310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    p++;
3320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  if (p < pe && *p == (buffer->len ? '|' : '['))
3330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  {
3340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien    *end_ptr = ++p;
3350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  }
3360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  const char *eof = pe, *tok = NULL;
3380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  int cs;
3390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  hb_glyph_info_t info;
3400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  hb_glyph_position_t pos;
3410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 343 "hb-buffer-deserialize-text.hh.tmp"
3430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
3440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	cs = deserialize_text_start;
3450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
3460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 348 "hb-buffer-deserialize-text.hh.tmp"
3480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
3490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	int _slen;
3500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	int _trans;
3510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	const unsigned char *_keys;
3520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	const char *_inds;
3530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( p == pe )
3540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _test_eof;
3550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( cs == 0 )
3560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _out;
3570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_resume:
3580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_keys = _deserialize_text_trans_keys + (cs<<1);
3590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs];
3600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_slen = _deserialize_text_key_spans[cs];
3620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
3630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		(*p) <= _keys[1] ?
3640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		(*p) - _keys[0] : _slen ];
3650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	cs = _deserialize_text_trans_targs[_trans];
3670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( _deserialize_text_trans_actions[_trans] == 0 )
3690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _again;
3700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
3710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	switch ( _deserialize_text_trans_actions[_trans] ) {
3720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 2:
3739fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 51 "../../src/hb-buffer-deserialize-text.rl"
3740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
3750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	tok = p;
3760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
3770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
3780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 5:
3799fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 55 "../../src/hb-buffer-deserialize-text.rl"
3800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
3810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (!hb_font_glyph_from_string (font,
3820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					tok, p - tok,
3830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					&info.codepoint))
3840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
3850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
3860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
3870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 10:
3889fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-buffer-deserialize-text.rl"
3890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
3900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
3910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 3:
3929fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 63 "../../src/hb-buffer-deserialize-text.rl"
3930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_offset )) return false; }
3940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
3950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 12:
3969fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 64 "../../src/hb-buffer-deserialize-text.rl"
3970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
3980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
3990ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 7:
4009fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 65 "../../src/hb-buffer-deserialize-text.rl"
4010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
4020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 1:
4049fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 38 "../../src/hb-buffer-deserialize-text.rl"
4050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	memset (&info, 0, sizeof (info));
4070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	memset (&pos , 0, sizeof (pos ));
4080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4099fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 51 "../../src/hb-buffer-deserialize-text.rl"
4100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4110ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	tok = p;
4120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 4:
4159fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 55 "../../src/hb-buffer-deserialize-text.rl"
4160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (!hb_font_glyph_from_string (font,
4180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					tok, p - tok,
4190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					&info.codepoint))
4200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4210ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4229fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
4230ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
4250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
4260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
4280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
4290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 9:
4329fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-buffer-deserialize-text.rl"
4330ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
4349fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
4350ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
4370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
4380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
4400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
4410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 11:
4449fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 64 "../../src/hb-buffer-deserialize-text.rl"
4450ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
4469fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
4470ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
4490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
4500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
4520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
4530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 6:
4569fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 65 "../../src/hb-buffer-deserialize-text.rl"
4570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
4589fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
4590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
4610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
4620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4630ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
4640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
4650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 8:
4689fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 66 "../../src/hb-buffer-deserialize-text.rl"
4690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
4709fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
4710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4720ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
4730ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
4740ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4750ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
4760ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
4770ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4780ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
4790ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 480 "hb-buffer-deserialize-text.hh.tmp"
4800ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
4810ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
4820ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien_again:
4830ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( cs == 0 )
4840ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _out;
4850ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( ++p != pe )
4860ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien		goto _resume;
4870ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_test_eof: {}
4880ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if ( p == eof )
4890ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4900ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	switch ( _deserialize_text_eof_actions[cs] ) {
4910ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 4:
4929fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 55 "../../src/hb-buffer-deserialize-text.rl"
4930ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
4940ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (!hb_font_glyph_from_string (font,
4950ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					tok, p - tok,
4960ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien					&info.codepoint))
4970ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
4980ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
4999fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
5000ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5010ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5020ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5030ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5040ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5050ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5060ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5070ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5080ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 9:
5099fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 62 "../../src/hb-buffer-deserialize-text.rl"
5100ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
5119fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
5120ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5130ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5140ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5150ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5160ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5170ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5180ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5190ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5200ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 11:
5219fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 64 "../../src/hb-buffer-deserialize-text.rl"
5220ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
5239fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
5240ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5250ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5260ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5270ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5280ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5290ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5300ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5310ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5320ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 6:
5339fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 65 "../../src/hb-buffer-deserialize-text.rl"
5340ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
5359fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
5360ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5370ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5380ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5390ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5400ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5410ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5420ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5430ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5440ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	case 8:
5459fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 66 "../../src/hb-buffer-deserialize-text.rl"
5460ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
5479fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 43 "../../src/hb-buffer-deserialize-text.rl"
5480ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	{
5490ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->add_info (info);
5500ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	if (buffer->in_error)
5510ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	  return false;
5520ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	buffer->pos[buffer->len - 1] = pos;
5530ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	*end_ptr = p;
5540ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5550ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	break;
5560ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#line 557 "hb-buffer-deserialize-text.hh.tmp"
5570ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
5580ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
5590ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
5600ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	_out: {}
5610ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien	}
5620ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
5639fe80482a1adfd555ec60b563cd9b6641528d2e2Behdad Esfahbod#line 119 "../../src/hb-buffer-deserialize-text.rl"
5640ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
5650ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
5660ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  *end_ptr = p;
5670ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
5680ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien  return p == pe && *(p-1) != ']';
5690ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien}
5700ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien
5710ae9e064ddee691abed9dd70f57475e2e926e86bRaph Levien#endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */
572