Imported Upstream version 3.4.0
[platform/upstream/harfbuzz.git] / src / hb-buffer-deserialize-text.hh
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 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
42 };
43
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
50 };
51
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
58 };
59
60 static const char _deserialize_text_indicies[] = {
61         0, 0, 0, 0, 0, 1, 1, 
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, 
360         1, 1, 64, 1, 0
361 };
362
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
374 };
375
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
387 };
388
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, 
394         22, 10, 24, 24, 19
395 };
396
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;
400
401 static const int deserialize_text_en_main = 1;
402
403
404 #line 114 "hb-buffer-deserialize-text.rl"
405
406
407 static hb_bool_t
408 _hb_buffer_deserialize_text (hb_buffer_t *buffer,
409                                     const char *buf,
410                                     unsigned int buf_len,
411                                     const char **end_ptr,
412                                     hb_font_t *font)
413 {
414   const char *p = buf, *pe = buf + buf_len;
415
416   /* Ensure we have positions. */
417   (void) hb_buffer_get_glyph_positions (buffer, nullptr);
418
419   while (p < pe && ISSPACE (*p))
420     p++;
421
422   const char *eof = pe, *tok = nullptr;
423   int cs;
424   hb_glyph_info_t info = {0};
425   hb_glyph_position_t pos = {0};
426   
427 #line 428 "hb-buffer-deserialize-text.hh"
428         {
429         cs = deserialize_text_start;
430         }
431
432 #line 433 "hb-buffer-deserialize-text.hh"
433         {
434         int _slen;
435         int _trans;
436         const unsigned char *_keys;
437         const char *_inds;
438         if ( p == pe )
439                 goto _test_eof;
440         if ( cs == 0 )
441                 goto _out;
442 _resume:
443         _keys = _deserialize_text_trans_keys + (cs<<1);
444         _inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs];
445
446         _slen = _deserialize_text_key_spans[cs];
447         _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
448                 (*p) <= _keys[1] ?
449                 (*p) - _keys[0] : _slen ];
450
451         cs = _deserialize_text_trans_targs[_trans];
452
453         if ( _deserialize_text_trans_actions[_trans] == 0 )
454                 goto _again;
455
456         switch ( _deserialize_text_trans_actions[_trans] ) {
457         case 1:
458 #line 38 "hb-buffer-deserialize-text.rl"
459         {
460         memset (&info, 0, sizeof (info));
461         memset (&pos , 0, sizeof (pos ));
462 }
463         break;
464         case 3:
465 #line 51 "hb-buffer-deserialize-text.rl"
466         {
467         tok = p;
468 }
469         break;
470         case 5:
471 #line 55 "hb-buffer-deserialize-text.rl"
472         { if (unlikely (!buffer->ensure_glyphs ())) return false; }
473         break;
474         case 8:
475 #line 56 "hb-buffer-deserialize-text.rl"
476         { if (unlikely (!buffer->ensure_unicode ())) return false; }
477         break;
478         case 18:
479 #line 58 "hb-buffer-deserialize-text.rl"
480         {
481         /* TODO Unescape delimeters. */
482         if (!hb_font_glyph_from_string (font,
483                                         tok, p - tok,
484                                         &info.codepoint))
485           return false;
486 }
487         break;
488         case 9:
489 #line 66 "hb-buffer-deserialize-text.rl"
490         {if (!parse_hex (tok, p, &info.codepoint )) return false; }
491         break;
492         case 21:
493 #line 68 "hb-buffer-deserialize-text.rl"
494         { if (!parse_uint (tok, p, &info.cluster )) return false; }
495         break;
496         case 6:
497 #line 69 "hb-buffer-deserialize-text.rl"
498         { if (!parse_int  (tok, p, &pos.x_offset )) return false; }
499         break;
500         case 23:
501 #line 70 "hb-buffer-deserialize-text.rl"
502         { if (!parse_int  (tok, p, &pos.y_offset )) return false; }
503         break;
504         case 20:
505 #line 71 "hb-buffer-deserialize-text.rl"
506         { if (!parse_int  (tok, p, &pos.x_advance)) return false; }
507         break;
508         case 15:
509 #line 38 "hb-buffer-deserialize-text.rl"
510         {
511         memset (&info, 0, sizeof (info));
512         memset (&pos , 0, sizeof (pos ));
513 }
514 #line 51 "hb-buffer-deserialize-text.rl"
515         {
516         tok = p;
517 }
518         break;
519         case 4:
520 #line 51 "hb-buffer-deserialize-text.rl"
521         {
522         tok = p;
523 }
524 #line 55 "hb-buffer-deserialize-text.rl"
525         { if (unlikely (!buffer->ensure_glyphs ())) return false; }
526         break;
527         case 2:
528 #line 51 "hb-buffer-deserialize-text.rl"
529         {
530         tok = p;
531 }
532 #line 56 "hb-buffer-deserialize-text.rl"
533         { if (unlikely (!buffer->ensure_unicode ())) return false; }
534         break;
535         case 16:
536 #line 58 "hb-buffer-deserialize-text.rl"
537         {
538         /* TODO Unescape delimeters. */
539         if (!hb_font_glyph_from_string (font,
540                                         tok, p - tok,
541                                         &info.codepoint))
542           return false;
543 }
544 #line 43 "hb-buffer-deserialize-text.rl"
545         {
546         buffer->add_info (info);
547         if (unlikely (!buffer->successful))
548           return false;
549         buffer->pos[buffer->len - 1] = pos;
550         *end_ptr = p;
551 }
552         break;
553         case 7:
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"
557         {
558         buffer->add_info (info);
559         if (unlikely (!buffer->successful))
560           return false;
561         buffer->pos[buffer->len - 1] = pos;
562         *end_ptr = p;
563 }
564         break;
565         case 10:
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"
569         {
570         buffer->add_info (info);
571         if (unlikely (!buffer->successful))
572           return false;
573         buffer->pos[buffer->len - 1] = pos;
574         *end_ptr = p;
575 }
576         break;
577         case 22:
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"
581         {
582         buffer->add_info (info);
583         if (unlikely (!buffer->successful))
584           return false;
585         buffer->pos[buffer->len - 1] = pos;
586         *end_ptr = p;
587 }
588         break;
589         case 19:
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"
593         {
594         buffer->add_info (info);
595         if (unlikely (!buffer->successful))
596           return false;
597         buffer->pos[buffer->len - 1] = pos;
598         *end_ptr = p;
599 }
600         break;
601         case 24:
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"
605         {
606         buffer->add_info (info);
607         if (unlikely (!buffer->successful))
608           return false;
609         buffer->pos[buffer->len - 1] = pos;
610         *end_ptr = p;
611 }
612         break;
613         case 12:
614 #line 38 "hb-buffer-deserialize-text.rl"
615         {
616         memset (&info, 0, sizeof (info));
617         memset (&pos , 0, sizeof (pos ));
618 }
619 #line 51 "hb-buffer-deserialize-text.rl"
620         {
621         tok = p;
622 }
623 #line 55 "hb-buffer-deserialize-text.rl"
624         { if (unlikely (!buffer->ensure_glyphs ())) return false; }
625         break;
626         case 14:
627 #line 38 "hb-buffer-deserialize-text.rl"
628         {
629         memset (&info, 0, sizeof (info));
630         memset (&pos , 0, sizeof (pos ));
631 }
632 #line 51 "hb-buffer-deserialize-text.rl"
633         {
634         tok = p;
635 }
636 #line 58 "hb-buffer-deserialize-text.rl"
637         {
638         /* TODO Unescape delimeters. */
639         if (!hb_font_glyph_from_string (font,
640                                         tok, p - tok,
641                                         &info.codepoint))
642           return false;
643 }
644         break;
645         case 17:
646 #line 58 "hb-buffer-deserialize-text.rl"
647         {
648         /* TODO Unescape delimeters. */
649         if (!hb_font_glyph_from_string (font,
650                                         tok, p - tok,
651                                         &info.codepoint))
652           return false;
653 }
654 #line 55 "hb-buffer-deserialize-text.rl"
655         { if (unlikely (!buffer->ensure_glyphs ())) 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 11:
666 #line 38 "hb-buffer-deserialize-text.rl"
667         {
668         memset (&info, 0, sizeof (info));
669         memset (&pos , 0, sizeof (pos ));
670 }
671 #line 51 "hb-buffer-deserialize-text.rl"
672         {
673         tok = p;
674 }
675 #line 58 "hb-buffer-deserialize-text.rl"
676         {
677         /* TODO Unescape delimeters. */
678         if (!hb_font_glyph_from_string (font,
679                                         tok, p - tok,
680                                         &info.codepoint))
681           return false;
682 }
683 #line 43 "hb-buffer-deserialize-text.rl"
684         {
685         buffer->add_info (info);
686         if (unlikely (!buffer->successful))
687           return false;
688         buffer->pos[buffer->len - 1] = pos;
689         *end_ptr = p;
690 }
691         break;
692         case 13:
693 #line 38 "hb-buffer-deserialize-text.rl"
694         {
695         memset (&info, 0, sizeof (info));
696         memset (&pos , 0, sizeof (pos ));
697 }
698 #line 51 "hb-buffer-deserialize-text.rl"
699         {
700         tok = p;
701 }
702 #line 58 "hb-buffer-deserialize-text.rl"
703         {
704         /* TODO Unescape delimeters. */
705         if (!hb_font_glyph_from_string (font,
706                                         tok, p - tok,
707                                         &info.codepoint))
708           return false;
709 }
710 #line 55 "hb-buffer-deserialize-text.rl"
711         { if (unlikely (!buffer->ensure_glyphs ())) return false; }
712 #line 43 "hb-buffer-deserialize-text.rl"
713         {
714         buffer->add_info (info);
715         if (unlikely (!buffer->successful))
716           return false;
717         buffer->pos[buffer->len - 1] = pos;
718         *end_ptr = p;
719 }
720         break;
721 #line 722 "hb-buffer-deserialize-text.hh"
722         }
723
724 _again:
725         if ( cs == 0 )
726                 goto _out;
727         if ( ++p != pe )
728                 goto _resume;
729         _test_eof: {}
730         if ( p == eof )
731         {
732         switch ( _deserialize_text_eof_actions[cs] ) {
733         case 16:
734 #line 58 "hb-buffer-deserialize-text.rl"
735         {
736         /* TODO Unescape delimeters. */
737         if (!hb_font_glyph_from_string (font,
738                                         tok, p - tok,
739                                         &info.codepoint))
740           return false;
741 }
742 #line 43 "hb-buffer-deserialize-text.rl"
743         {
744         buffer->add_info (info);
745         if (unlikely (!buffer->successful))
746           return false;
747         buffer->pos[buffer->len - 1] = pos;
748         *end_ptr = p;
749 }
750         break;
751         case 7:
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"
755         {
756         buffer->add_info (info);
757         if (unlikely (!buffer->successful))
758           return false;
759         buffer->pos[buffer->len - 1] = pos;
760         *end_ptr = p;
761 }
762         break;
763         case 10:
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"
767         {
768         buffer->add_info (info);
769         if (unlikely (!buffer->successful))
770           return false;
771         buffer->pos[buffer->len - 1] = pos;
772         *end_ptr = p;
773 }
774         break;
775         case 22:
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"
779         {
780         buffer->add_info (info);
781         if (unlikely (!buffer->successful))
782           return false;
783         buffer->pos[buffer->len - 1] = pos;
784         *end_ptr = p;
785 }
786         break;
787         case 19:
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"
791         {
792         buffer->add_info (info);
793         if (unlikely (!buffer->successful))
794           return false;
795         buffer->pos[buffer->len - 1] = pos;
796         *end_ptr = p;
797 }
798         break;
799         case 24:
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"
803         {
804         buffer->add_info (info);
805         if (unlikely (!buffer->successful))
806           return false;
807         buffer->pos[buffer->len - 1] = pos;
808         *end_ptr = p;
809 }
810         break;
811         case 11:
812 #line 38 "hb-buffer-deserialize-text.rl"
813         {
814         memset (&info, 0, sizeof (info));
815         memset (&pos , 0, sizeof (pos ));
816 }
817 #line 51 "hb-buffer-deserialize-text.rl"
818         {
819         tok = p;
820 }
821 #line 58 "hb-buffer-deserialize-text.rl"
822         {
823         /* TODO Unescape delimeters. */
824         if (!hb_font_glyph_from_string (font,
825                                         tok, p - tok,
826                                         &info.codepoint))
827           return false;
828 }
829 #line 43 "hb-buffer-deserialize-text.rl"
830         {
831         buffer->add_info (info);
832         if (unlikely (!buffer->successful))
833           return false;
834         buffer->pos[buffer->len - 1] = pos;
835         *end_ptr = p;
836 }
837         break;
838 #line 839 "hb-buffer-deserialize-text.hh"
839         }
840         }
841
842         _out: {}
843         }
844
845 #line 138 "hb-buffer-deserialize-text.rl"
846
847
848   *end_ptr = p;
849
850   return p == pe && *(p-1) != ']';
851 }
852
853 #endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */