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