Coverage Report

Created: 2025-07-11 06:34

/src/harfbuzz/src/hb-buffer-deserialize-text-glyphs.hh
Line
Count
Source (jump to first uncovered line)
1
2
#line 1 "hb-buffer-deserialize-text-glyphs.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_GLYPHS_HH
30
#define HB_BUFFER_DESERIALIZE_TEXT_GLYPHS_HH
31
32
#include "hb.hh"
33
34
35
#line 33 "hb-buffer-deserialize-text-glyphs.hh"
36
static const unsigned char _deserialize_text_glyphs_trans_keys[] = {
37
  0u, 0u, 35u, 124u, 48u, 57u, 60u, 124u, 45u, 57u, 48u, 57u, 44u, 44u, 45u, 57u, 
38
  48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 62u, 62u, 
39
  93u, 124u, 45u, 57u, 48u, 57u, 35u, 124u, 45u, 57u, 48u, 57u, 35u, 124u, 35u, 124u, 
40
  35u, 124u, 35u, 124u, 35u, 124u, 35u, 124u, 48u, 57u, 35u, 124u, 45u, 57u, 48u, 57u, 
41
  44u, 44u, 45u, 57u, 48u, 57u, 35u, 124u, 35u, 124u, 44u, 57u, 35u, 124u, 43u, 124u, 
42
  35u, 124u, 48u, 62u, 44u, 57u, 44u, 57u, 44u, 57u, 48u, 124u, 35u, 124u, 35u, 124u, 
43
  35u, 124u, 0
44
};
45
46
static const char _deserialize_text_glyphs_key_spans[] = {
47
  0, 90, 10, 65, 13, 10, 1, 13, 
48
  10, 1, 13, 10, 1, 13, 10, 1, 
49
  32, 13, 10, 90, 13, 10, 90, 90, 
50
  90, 90, 90, 90, 10, 90, 13, 10, 
51
  1, 13, 10, 90, 90, 14, 90, 82, 
52
  90, 15, 14, 14, 14, 77, 90, 90, 
53
  90
54
};
55
56
static const short _deserialize_text_glyphs_index_offsets[] = {
57
  0, 0, 91, 102, 168, 182, 193, 195, 
58
  209, 220, 222, 236, 247, 249, 263, 274, 
59
  276, 309, 323, 334, 425, 439, 450, 541, 
60
  632, 723, 814, 905, 996, 1007, 1098, 1112, 
61
  1123, 1125, 1139, 1150, 1241, 1332, 1347, 1438, 
62
  1521, 1612, 1628, 1643, 1658, 1673, 1751, 1842, 
63
  1933
64
};
65
66
static const char _deserialize_text_glyphs_indicies[] = {
67
  1, 0, 0, 0, 0, 0, 0, 
68
  0, 2, 3, 0, 0, 0, 0, 0, 
69
  0, 0, 0, 0, 0, 0, 0, 0, 
70
  0, 0, 4, 5, 0, 0, 6, 0, 
71
  0, 0, 0, 0, 0, 0, 0, 0, 
72
  0, 0, 0, 0, 0, 0, 0, 0, 
73
  0, 0, 0, 0, 0, 0, 0, 0, 
74
  0, 0, 7, 8, 0, 0, 0, 0, 
75
  0, 0, 0, 0, 0, 0, 0, 0, 
76
  0, 0, 0, 0, 0, 0, 0, 0, 
77
  0, 0, 0, 0, 0, 0, 0, 0, 
78
  0, 0, 8, 0, 9, 10, 10, 10, 
79
  10, 10, 10, 10, 10, 10, 3, 11, 
80
  3, 3, 3, 3, 3, 3, 3, 3, 
81
  3, 3, 3, 3, 3, 3, 3, 3, 
82
  3, 3, 3, 3, 3, 3, 3, 3, 
83
  3, 3, 3, 3, 3, 3, 3, 3, 
84
  12, 3, 3, 3, 3, 3, 3, 3, 
85
  3, 3, 3, 3, 3, 3, 3, 3, 
86
  3, 3, 3, 3, 3, 3, 3, 3, 
87
  3, 3, 3, 3, 3, 3, 3, 12, 
88
  3, 13, 3, 3, 14, 15, 15, 15, 
89
  15, 15, 15, 15, 15, 15, 3, 14, 
90
  15, 15, 15, 15, 15, 15, 15, 15, 
91
  15, 3, 16, 3, 17, 3, 3, 18, 
92
  19, 19, 19, 19, 19, 19, 19, 19, 
93
  19, 3, 18, 19, 19, 19, 19, 19, 
94
  19, 19, 19, 19, 3, 20, 3, 21, 
95
  3, 3, 22, 23, 23, 23, 23, 23, 
96
  23, 23, 23, 23, 3, 22, 23, 23, 
97
  23, 23, 23, 23, 23, 23, 23, 3, 
98
  24, 3, 25, 3, 3, 26, 27, 27, 
99
  27, 27, 27, 27, 27, 27, 27, 3, 
100
  26, 27, 27, 27, 27, 27, 27, 27, 
101
  27, 27, 3, 28, 3, 29, 3, 3, 
102
  3, 3, 3, 3, 3, 3, 3, 3, 
103
  3, 3, 3, 3, 3, 3, 3, 3, 
104
  3, 3, 3, 3, 3, 3, 3, 3, 
105
  3, 3, 3, 3, 29, 3, 30, 3, 
106
  3, 31, 32, 32, 32, 32, 32, 32, 
107
  32, 32, 32, 3, 33, 34, 34, 34, 
108
  34, 34, 34, 34, 34, 34, 3, 35, 
109
  3, 3, 3, 3, 3, 3, 3, 3, 
110
  36, 3, 3, 3, 3, 3, 3, 3, 
111
  3, 3, 3, 3, 3, 3, 3, 3, 
112
  37, 3, 3, 3, 3, 3, 3, 3, 
113
  3, 3, 3, 3, 3, 3, 3, 3, 
114
  3, 3, 3, 3, 3, 3, 3, 3, 
115
  3, 3, 3, 3, 3, 3, 3, 3, 
116
  3, 38, 3, 3, 3, 3, 3, 3, 
117
  3, 3, 3, 3, 3, 3, 3, 3, 
118
  3, 3, 3, 3, 3, 3, 3, 3, 
119
  3, 3, 3, 3, 3, 3, 3, 3, 
120
  38, 3, 39, 3, 3, 40, 41, 41, 
121
  41, 41, 41, 41, 41, 41, 41, 3, 
122
  42, 43, 43, 43, 43, 43, 43, 43, 
123
  43, 43, 3, 44, 3, 3, 3, 3, 
124
  3, 3, 3, 3, 3, 3, 3, 3, 
125
  3, 3, 3, 3, 3, 3, 3, 3, 
126
  3, 3, 3, 3, 45, 3, 3, 3, 
127
  3, 3, 3, 3, 3, 3, 3, 3, 
128
  3, 3, 3, 3, 3, 3, 3, 3, 
129
  3, 3, 3, 3, 3, 3, 3, 3, 
130
  3, 3, 3, 3, 3, 46, 3, 3, 
131
  3, 3, 3, 3, 3, 3, 3, 3, 
132
  3, 3, 3, 3, 3, 3, 3, 3, 
133
  3, 3, 3, 3, 3, 3, 3, 3, 
134
  3, 3, 3, 3, 46, 3, 44, 3, 
135
  3, 3, 3, 3, 3, 3, 3, 3, 
136
  3, 3, 3, 43, 43, 43, 43, 43, 
137
  43, 43, 43, 43, 43, 3, 3, 45, 
138
  3, 3, 3, 3, 3, 3, 3, 3, 
139
  3, 3, 3, 3, 3, 3, 3, 3, 
140
  3, 3, 3, 3, 3, 3, 3, 3, 
141
  3, 3, 3, 3, 3, 3, 3, 3, 
142
  46, 3, 3, 3, 3, 3, 3, 3, 
143
  3, 3, 3, 3, 3, 3, 3, 3, 
144
  3, 3, 3, 3, 3, 3, 3, 3, 
145
  3, 3, 3, 3, 3, 3, 3, 46, 
146
  3, 35, 3, 3, 3, 3, 3, 3, 
147
  3, 3, 36, 3, 3, 3, 34, 34, 
148
  34, 34, 34, 34, 34, 34, 34, 34, 
149
  3, 3, 37, 3, 3, 3, 3, 3, 
150
  3, 3, 3, 3, 3, 3, 3, 3, 
151
  3, 3, 3, 3, 3, 3, 3, 3, 
152
  3, 3, 3, 3, 3, 3, 3, 3, 
153
  3, 3, 3, 38, 3, 3, 3, 3, 
154
  3, 3, 3, 3, 3, 3, 3, 3, 
155
  3, 3, 3, 3, 3, 3, 3, 3, 
156
  3, 3, 3, 3, 3, 3, 3, 3, 
157
  3, 3, 38, 3, 1, 0, 0, 0, 
158
  0, 0, 0, 0, 2, 3, 47, 0, 
159
  0, 48, 49, 49, 49, 49, 49, 49, 
160
  49, 49, 49, 0, 0, 4, 5, 0, 
161
  0, 6, 0, 0, 0, 0, 0, 0, 
162
  0, 0, 0, 0, 0, 0, 0, 0, 
163
  0, 0, 0, 0, 0, 0, 0, 0, 
164
  0, 0, 0, 0, 0, 7, 8, 0, 
165
  0, 0, 0, 0, 0, 0, 0, 0, 
166
  0, 0, 0, 0, 0, 0, 0, 0, 
167
  0, 0, 0, 0, 0, 0, 0, 0, 
168
  0, 0, 0, 0, 0, 8, 0, 1, 
169
  0, 0, 0, 0, 0, 0, 0, 2, 
170
  3, 0, 0, 0, 48, 49, 49, 49, 
171
  49, 49, 49, 49, 49, 49, 0, 0, 
172
  4, 5, 0, 0, 6, 0, 0, 0, 
173
  0, 0, 0, 0, 0, 0, 0, 0, 
174
  0, 0, 0, 0, 0, 0, 0, 0, 
175
  0, 0, 0, 0, 0, 0, 0, 0, 
176
  7, 8, 0, 0, 0, 0, 0, 0, 
177
  0, 0, 0, 0, 0, 0, 0, 0, 
178
  0, 0, 0, 0, 0, 0, 0, 0, 
179
  0, 0, 0, 0, 0, 0, 0, 0, 
180
  8, 0, 1, 0, 0, 0, 0, 0, 
181
  0, 0, 2, 16, 0, 0, 0, 0, 
182
  0, 0, 0, 0, 0, 0, 0, 0, 
183
  0, 0, 0, 4, 5, 0, 0, 6, 
184
  0, 0, 0, 0, 0, 0, 0, 0, 
185
  0, 0, 0, 0, 0, 0, 0, 0, 
186
  0, 0, 0, 0, 0, 0, 0, 0, 
187
  0, 0, 0, 7, 8, 0, 0, 0, 
188
  0, 0, 0, 0, 0, 0, 0, 0, 
189
  0, 0, 0, 0, 0, 0, 0, 0, 
190
  0, 0, 0, 0, 0, 0, 0, 0, 
191
  0, 0, 0, 8, 0, 50, 51, 51, 
192
  51, 51, 51, 51, 51, 51, 51, 3, 
193
  52, 3, 3, 3, 3, 3, 3, 3, 
194
  53, 3, 3, 3, 3, 3, 3, 3, 
195
  3, 3, 3, 3, 3, 3, 3, 3, 
196
  3, 54, 3, 3, 3, 55, 3, 3, 
197
  3, 3, 3, 3, 3, 3, 3, 3, 
198
  3, 3, 3, 3, 3, 3, 3, 3, 
199
  3, 3, 3, 3, 3, 3, 3, 3, 
200
  3, 3, 56, 3, 3, 3, 3, 3, 
201
  3, 3, 3, 3, 3, 3, 3, 3, 
202
  3, 3, 3, 3, 3, 3, 3, 3, 
203
  3, 3, 3, 3, 3, 3, 3, 3, 
204
  3, 56, 3, 57, 3, 3, 58, 59, 
205
  59, 59, 59, 59, 59, 59, 59, 59, 
206
  3, 60, 61, 61, 61, 61, 61, 61, 
207
  61, 61, 61, 3, 62, 3, 63, 3, 
208
  3, 64, 65, 65, 65, 65, 65, 65, 
209
  65, 65, 65, 3, 66, 67, 67, 67, 
210
  67, 67, 67, 67, 67, 67, 3, 68, 
211
  3, 3, 3, 3, 3, 3, 3, 69, 
212
  3, 3, 3, 3, 3, 3, 3, 3, 
213
  3, 3, 3, 3, 3, 3, 3, 3, 
214
  70, 3, 3, 3, 3, 3, 3, 3, 
215
  3, 3, 3, 3, 3, 3, 3, 3, 
216
  3, 3, 3, 3, 3, 3, 3, 3, 
217
  3, 3, 3, 3, 3, 3, 3, 3, 
218
  3, 71, 3, 3, 3, 3, 3, 3, 
219
  3, 3, 3, 3, 3, 3, 3, 3, 
220
  3, 3, 3, 3, 3, 3, 3, 3, 
221
  3, 3, 3, 3, 3, 3, 3, 3, 
222
  71, 3, 68, 3, 3, 3, 3, 3, 
223
  3, 3, 69, 3, 3, 3, 3, 67, 
224
  67, 67, 67, 67, 67, 67, 67, 67, 
225
  67, 3, 3, 70, 3, 3, 3, 3, 
226
  3, 3, 3, 3, 3, 3, 3, 3, 
227
  3, 3, 3, 3, 3, 3, 3, 3, 
228
  3, 3, 3, 3, 3, 3, 3, 3, 
229
  3, 3, 3, 3, 71, 3, 3, 3, 
230
  3, 3, 3, 3, 3, 3, 3, 3, 
231
  3, 3, 3, 3, 3, 3, 3, 3, 
232
  3, 3, 3, 3, 3, 3, 3, 3, 
233
  3, 3, 3, 71, 3, 62, 3, 3, 
234
  3, 61, 61, 61, 61, 61, 61, 61, 
235
  61, 61, 61, 3, 52, 3, 3, 3, 
236
  3, 3, 3, 3, 53, 3, 3, 3, 
237
  3, 72, 72, 72, 72, 72, 72, 72, 
238
  72, 72, 72, 3, 3, 54, 3, 3, 
239
  3, 55, 3, 3, 3, 3, 3, 3, 
240
  3, 3, 3, 3, 3, 3, 3, 3, 
241
  3, 3, 3, 3, 3, 3, 3, 3, 
242
  3, 3, 3, 3, 3, 3, 56, 3, 
243
  3, 3, 3, 3, 3, 3, 3, 3, 
244
  3, 3, 3, 3, 3, 3, 3, 3, 
245
  3, 3, 3, 3, 3, 3, 3, 3, 
246
  3, 3, 3, 3, 3, 56, 3, 0, 
247
  0, 3, 3, 3, 3, 3, 3, 3, 
248
  3, 3, 3, 3, 3, 3, 3, 3, 
249
  3, 0, 3, 3, 0, 3, 3, 3, 
250
  3, 3, 3, 3, 3, 3, 3, 3, 
251
  3, 3, 3, 3, 3, 3, 3, 3, 
252
  3, 3, 3, 3, 3, 3, 3, 3, 
253
  0, 0, 3, 3, 3, 3, 3, 3, 
254
  3, 3, 3, 3, 3, 3, 3, 3, 
255
  3, 3, 3, 3, 3, 3, 3, 3, 
256
  3, 3, 3, 3, 3, 3, 3, 3, 
257
  0, 3, 1, 0, 0, 0, 0, 0, 
258
  0, 0, 2, 16, 0, 0, 0, 49, 
259
  49, 49, 49, 49, 49, 49, 49, 49, 
260
  49, 0, 0, 4, 5, 0, 0, 6, 
261
  0, 0, 0, 0, 0, 0, 0, 0, 
262
  0, 0, 0, 0, 0, 0, 0, 0, 
263
  0, 0, 0, 0, 0, 0, 0, 0, 
264
  0, 0, 0, 7, 8, 0, 0, 0, 
265
  0, 0, 0, 0, 0, 0, 0, 0, 
266
  0, 0, 0, 0, 0, 0, 0, 0, 
267
  0, 0, 0, 0, 0, 0, 0, 0, 
268
  0, 0, 0, 8, 0, 27, 27, 27, 
269
  27, 27, 27, 27, 27, 27, 27, 3, 
270
  3, 3, 3, 28, 3, 24, 3, 3, 
271
  3, 23, 23, 23, 23, 23, 23, 23, 
272
  23, 23, 23, 3, 20, 3, 3, 3, 
273
  19, 19, 19, 19, 19, 19, 19, 19, 
274
  19, 19, 3, 16, 3, 3, 3, 15, 
275
  15, 15, 15, 15, 15, 15, 15, 15, 
276
  15, 3, 73, 73, 73, 73, 73, 73, 
277
  73, 73, 73, 73, 3, 3, 11, 3, 
278
  3, 3, 3, 3, 3, 3, 3, 3, 
279
  3, 3, 3, 3, 3, 3, 3, 3, 
280
  3, 3, 3, 3, 3, 3, 3, 3, 
281
  3, 3, 3, 3, 3, 3, 3, 12, 
282
  3, 3, 3, 3, 3, 3, 3, 3, 
283
  3, 3, 3, 3, 3, 3, 3, 3, 
284
  3, 3, 3, 3, 3, 3, 3, 3, 
285
  3, 3, 3, 3, 3, 3, 12, 3, 
286
  75, 74, 74, 74, 74, 74, 74, 74, 
287
  76, 3, 74, 74, 74, 74, 74, 74, 
288
  74, 74, 74, 74, 74, 74, 74, 74, 
289
  74, 77, 78, 74, 74, 79, 74, 74, 
290
  74, 74, 74, 74, 74, 74, 74, 74, 
291
  74, 74, 74, 74, 74, 74, 74, 74, 
292
  74, 74, 74, 74, 74, 74, 74, 74, 
293
  80, 81, 82, 74, 74, 74, 74, 74, 
294
  74, 74, 74, 74, 74, 74, 74, 74, 
295
  74, 74, 74, 74, 74, 74, 74, 74, 
296
  74, 74, 74, 74, 74, 74, 74, 74, 
297
  74, 82, 74, 84, 83, 83, 83, 83, 
298
  83, 83, 83, 85, 3, 83, 83, 83, 
299
  83, 83, 83, 83, 83, 83, 83, 83, 
300
  83, 83, 83, 83, 86, 87, 83, 83, 
301
  88, 83, 83, 83, 83, 83, 83, 83, 
302
  83, 83, 83, 83, 83, 83, 83, 83, 
303
  83, 83, 83, 83, 83, 83, 83, 83, 
304
  83, 83, 83, 83, 89, 90, 83, 83, 
305
  83, 83, 83, 83, 83, 83, 83, 83, 
306
  83, 83, 83, 83, 83, 83, 83, 83, 
307
  83, 83, 83, 83, 83, 83, 83, 83, 
308
  83, 83, 83, 83, 90, 83, 91, 74, 
309
  74, 74, 74, 74, 74, 74, 92, 3, 
310
  74, 74, 74, 74, 74, 74, 74, 74, 
311
  74, 74, 74, 74, 74, 74, 74, 93, 
312
  94, 74, 74, 95, 74, 74, 74, 74, 
313
  74, 74, 74, 74, 74, 74, 74, 74, 
314
  74, 74, 74, 74, 74, 74, 74, 74, 
315
  74, 74, 74, 74, 74, 74, 74, 81, 
316
  96, 74, 74, 74, 74, 74, 74, 74, 
317
  74, 74, 74, 74, 74, 74, 74, 74, 
318
  74, 74, 74, 74, 74, 74, 74, 74, 
319
  74, 74, 74, 74, 74, 74, 74, 96, 
320
  74, 0
321
};
322
323
static const char _deserialize_text_glyphs_trans_targs[] = {
324
  1, 2, 17, 0, 25, 28, 30, 39, 
325
  47, 3, 45, 4, 47, 5, 6, 44, 
326
  7, 8, 9, 43, 10, 11, 12, 42, 
327
  13, 14, 15, 41, 16, 47, 18, 19, 
328
  24, 19, 24, 2, 20, 4, 47, 21, 
329
  22, 23, 22, 23, 2, 4, 47, 26, 
330
  27, 40, 29, 38, 2, 17, 4, 30, 
331
  47, 31, 32, 37, 32, 37, 33, 34, 
332
  35, 36, 35, 36, 2, 17, 4, 47, 
333
  38, 45, 1, 2, 17, 25, 28, 30, 
334
  48, 39, 47, 1, 2, 17, 25, 28, 
335
  30, 39, 47, 2, 17, 25, 28, 30, 
336
  47
337
};
338
339
static const char _deserialize_text_glyphs_trans_actions[] = {
340
  0, 1, 1, 0, 1, 1, 1, 0, 
341
  1, 2, 2, 3, 3, 0, 0, 0, 
342
  0, 0, 0, 0, 0, 0, 0, 0, 
343
  0, 0, 0, 0, 0, 0, 2, 2, 
344
  2, 0, 0, 4, 4, 4, 4, 2, 
345
  2, 2, 0, 0, 5, 5, 5, 0, 
346
  0, 0, 2, 2, 6, 6, 6, 6, 
347
  6, 2, 2, 2, 0, 0, 7, 2, 
348
  2, 2, 0, 0, 8, 8, 8, 8, 
349
  0, 0, 9, 10, 10, 10, 10, 10, 
350
  9, 9, 10, 12, 13, 13, 13, 13, 
351
  13, 12, 13, 14, 14, 14, 14, 14, 
352
  14
353
};
354
355
static const char _deserialize_text_glyphs_eof_actions[] = {
356
  0, 0, 0, 0, 0, 0, 0, 0, 
357
  0, 0, 0, 0, 0, 0, 0, 0, 
358
  0, 0, 0, 0, 0, 0, 0, 0, 
359
  0, 0, 0, 0, 0, 0, 0, 0, 
360
  0, 0, 0, 0, 0, 0, 0, 0, 
361
  0, 0, 0, 0, 0, 0, 0, 11, 
362
  0
363
};
364
365
static const int deserialize_text_glyphs_start = 46;
366
static const int deserialize_text_glyphs_first_final = 46;
367
static const int deserialize_text_glyphs_error = 0;
368
369
static const int deserialize_text_glyphs_en_main = 46;
370
371
372
#line 101 "hb-buffer-deserialize-text-glyphs.rl"
373
374
375
static hb_bool_t
376
_hb_buffer_deserialize_text_glyphs (hb_buffer_t *buffer,
377
            const char *buf,
378
            unsigned int buf_len,
379
            const char **end_ptr,
380
            hb_font_t *font)
381
0
{
382
0
  const char *p = buf, *pe = buf + buf_len, *eof = pe;
383
384
  /* Ensure we have positions. */
385
0
  (void) hb_buffer_get_glyph_positions (buffer, nullptr);
386
387
0
  const char *tok = nullptr;
388
0
  int cs;
389
0
  hb_glyph_info_t info = {0};
390
0
  hb_glyph_position_t pos = {0};
391
  
392
0
#line 386 "hb-buffer-deserialize-text-glyphs.hh"
393
0
  {
394
0
  cs = deserialize_text_glyphs_start;
395
0
  }
396
397
0
#line 389 "hb-buffer-deserialize-text-glyphs.hh"
398
0
  {
399
0
  int _slen;
400
0
  int _trans;
401
0
  const unsigned char *_keys;
402
0
  const char *_inds;
403
0
  if ( p == pe )
404
0
    goto _test_eof;
405
0
  if ( cs == 0 )
406
0
    goto _out;
407
0
_resume:
408
0
  _keys = _deserialize_text_glyphs_trans_keys + (cs<<1);
409
0
  _inds = _deserialize_text_glyphs_indicies + _deserialize_text_glyphs_index_offsets[cs];
410
411
0
  _slen = _deserialize_text_glyphs_key_spans[cs];
412
0
  _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
413
0
    (*p) <= _keys[1] ?
414
0
    (*p) - _keys[0] : _slen ];
415
416
0
  cs = _deserialize_text_glyphs_trans_targs[_trans];
417
418
0
  if ( _deserialize_text_glyphs_trans_actions[_trans] == 0 )
419
0
    goto _again;
420
421
0
  switch ( _deserialize_text_glyphs_trans_actions[_trans] ) {
422
0
  case 2:
423
0
#line 50 "hb-buffer-deserialize-text-glyphs.rl"
424
0
  {
425
0
  tok = p;
426
0
}
427
0
  break;
428
0
  case 1:
429
0
#line 54 "hb-buffer-deserialize-text-glyphs.rl"
430
0
  {
431
  /* TODO Unescape delimiters. */
432
0
  if (!hb_font_glyph_from_string (font,
433
0
          tok, p - tok,
434
0
          &info.codepoint))
435
0
    return false;
436
0
}
437
0
  break;
438
0
  case 6:
439
0
#line 62 "hb-buffer-deserialize-text-glyphs.rl"
440
0
  { if (!parse_uint (tok, p, &info.cluster )) return false; }
441
0
  break;
442
0
  case 7:
443
0
#line 63 "hb-buffer-deserialize-text-glyphs.rl"
444
0
  { if (!parse_int  (tok, p, &pos.x_offset )) return false; }
445
0
  break;
446
0
  case 8:
447
0
#line 64 "hb-buffer-deserialize-text-glyphs.rl"
448
0
  { if (!parse_int  (tok, p, &pos.y_offset )) return false; }
449
0
  break;
450
0
  case 4:
451
0
#line 65 "hb-buffer-deserialize-text-glyphs.rl"
452
0
  { if (!parse_int  (tok, p, &pos.x_advance)) return false; }
453
0
  break;
454
0
  case 5:
455
0
#line 66 "hb-buffer-deserialize-text-glyphs.rl"
456
0
  { if (!parse_int  (tok, p, &pos.y_advance)) return false; }
457
0
  break;
458
0
  case 3:
459
0
#line 67 "hb-buffer-deserialize-text-glyphs.rl"
460
0
  { if (!parse_uint (tok, p, &info.mask    )) return false; }
461
0
  break;
462
0
  case 9:
463
0
#line 38 "hb-buffer-deserialize-text-glyphs.rl"
464
0
  {
465
0
  hb_memset (&info, 0, sizeof (info));
466
0
  hb_memset (&pos , 0, sizeof (pos ));
467
0
}
468
0
#line 50 "hb-buffer-deserialize-text-glyphs.rl"
469
0
  {
470
0
  tok = p;
471
0
}
472
0
  break;
473
0
  case 10:
474
0
#line 38 "hb-buffer-deserialize-text-glyphs.rl"
475
0
  {
476
0
  hb_memset (&info, 0, sizeof (info));
477
0
  hb_memset (&pos , 0, sizeof (pos ));
478
0
}
479
0
#line 50 "hb-buffer-deserialize-text-glyphs.rl"
480
0
  {
481
0
  tok = p;
482
0
}
483
0
#line 54 "hb-buffer-deserialize-text-glyphs.rl"
484
0
  {
485
  /* TODO Unescape delimiters. */
486
0
  if (!hb_font_glyph_from_string (font,
487
0
          tok, p - tok,
488
0
          &info.codepoint))
489
0
    return false;
490
0
}
491
0
  break;
492
0
  case 12:
493
0
#line 43 "hb-buffer-deserialize-text-glyphs.rl"
494
0
  {
495
0
  buffer->add_info_and_pos (info, pos);
496
0
  if (unlikely (!buffer->successful))
497
0
    return false;
498
0
  *end_ptr = p;
499
0
}
500
0
#line 38 "hb-buffer-deserialize-text-glyphs.rl"
501
0
  {
502
0
  hb_memset (&info, 0, sizeof (info));
503
0
  hb_memset (&pos , 0, sizeof (pos ));
504
0
}
505
0
#line 50 "hb-buffer-deserialize-text-glyphs.rl"
506
0
  {
507
0
  tok = p;
508
0
}
509
0
  break;
510
0
  case 14:
511
0
#line 54 "hb-buffer-deserialize-text-glyphs.rl"
512
0
  {
513
  /* TODO Unescape delimiters. */
514
0
  if (!hb_font_glyph_from_string (font,
515
0
          tok, p - tok,
516
0
          &info.codepoint))
517
0
    return false;
518
0
}
519
0
#line 38 "hb-buffer-deserialize-text-glyphs.rl"
520
0
  {
521
0
  hb_memset (&info, 0, sizeof (info));
522
0
  hb_memset (&pos , 0, sizeof (pos ));
523
0
}
524
0
#line 50 "hb-buffer-deserialize-text-glyphs.rl"
525
0
  {
526
0
  tok = p;
527
0
}
528
0
  break;
529
0
  case 13:
530
0
#line 43 "hb-buffer-deserialize-text-glyphs.rl"
531
0
  {
532
0
  buffer->add_info_and_pos (info, pos);
533
0
  if (unlikely (!buffer->successful))
534
0
    return false;
535
0
  *end_ptr = p;
536
0
}
537
0
#line 38 "hb-buffer-deserialize-text-glyphs.rl"
538
0
  {
539
0
  hb_memset (&info, 0, sizeof (info));
540
0
  hb_memset (&pos , 0, sizeof (pos ));
541
0
}
542
0
#line 50 "hb-buffer-deserialize-text-glyphs.rl"
543
0
  {
544
0
  tok = p;
545
0
}
546
0
#line 54 "hb-buffer-deserialize-text-glyphs.rl"
547
0
  {
548
  /* TODO Unescape delimiters. */
549
0
  if (!hb_font_glyph_from_string (font,
550
0
          tok, p - tok,
551
0
          &info.codepoint))
552
0
    return false;
553
0
}
554
0
  break;
555
0
#line 523 "hb-buffer-deserialize-text-glyphs.hh"
556
0
  }
557
558
0
_again:
559
0
  if ( cs == 0 )
560
0
    goto _out;
561
0
  if ( ++p != pe )
562
0
    goto _resume;
563
0
  _test_eof: {}
564
0
  if ( p == eof )
565
0
  {
566
0
  switch ( _deserialize_text_glyphs_eof_actions[cs] ) {
567
0
  case 11:
568
0
#line 43 "hb-buffer-deserialize-text-glyphs.rl"
569
0
  {
570
0
  buffer->add_info_and_pos (info, pos);
571
0
  if (unlikely (!buffer->successful))
572
0
    return false;
573
0
  *end_ptr = p;
574
0
}
575
0
  break;
576
0
#line 542 "hb-buffer-deserialize-text-glyphs.hh"
577
0
  }
578
0
  }
579
580
0
  _out: {}
581
0
  }
582
583
0
#line 122 "hb-buffer-deserialize-text-glyphs.rl"
584
585
586
0
  *end_ptr = p;
587
588
0
  return p == pe;
589
0
}
590
591
#endif /* HB_BUFFER_DESERIALIZE_TEXT_GLYPHS_HH */