1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * 4 * This code is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU General Public License version 2 only, as 6 * published by the Free Software Foundation. Oracle designates this 7 * particular file as subject to the "Classpath" exception as provided 8 * by Oracle in the LICENSE file that accompanied this code. 9 * 10 * This code is distributed in the hope that it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 * version 2 for more details (a copy is included in the LICENSE file that 14 * accompanied this code). 15 * 16 * You should have received a copy of the GNU General Public License version 17 * 2 along with this work; if not, write to the Free Software Foundation, 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 * 20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 * or visit www.oracle.com if you need additional information or have any 22 * questions. 23 */ 24 25 // This file is available under and governed by the GNU General Public 26 // License version 2 only, as published by the Free Software Foundation. 27 // However, the following notice accompanied the original version of this 28 // file: 29 // 30 31 #line 1 "hb-buffer-deserialize-json.rl" 32 /* 33 * Copyright © 2013 Google, Inc. 34 * 35 * This is part of HarfBuzz, a text shaping library. 36 * 37 * Permission is hereby granted, without written agreement and without 38 * license or royalty fees, to use, copy, modify, and distribute this 39 * software and its documentation for any purpose, provided that the 40 * above copyright notice and the following two paragraphs appear in 41 * all copies of this software. 42 * 43 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 44 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 45 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 46 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 47 * DAMAGE. 48 * 49 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 50 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 51 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 52 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 53 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 54 * 55 * Google Author(s): Behdad Esfahbod 56 */ 57 58 #ifndef HB_BUFFER_DESERIALIZE_JSON_HH 59 #define HB_BUFFER_DESERIALIZE_JSON_HH 60 61 #include "hb-private.hh" 62 63 64 #line 36 "hb-buffer-deserialize-json.hh" 65 static const unsigned char _deserialize_json_trans_keys[] = { 66 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 67 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 68 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, 69 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 70 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 71 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 72 }; 73 74 static const char _deserialize_json_key_spans[] = { 75 0, 115, 26, 7, 2, 1, 50, 49, 76 10, 117, 117, 117, 1, 50, 49, 10, 77 117, 117, 1, 1, 50, 49, 117, 117, 78 2, 1, 50, 49, 10, 117, 117, 1, 79 50, 49, 10, 117, 117, 1, 50, 49, 80 58, 89, 117, 117, 85, 115, 0 81 }; 82 83 static const short _deserialize_json_index_offsets[] = { 84 0, 0, 116, 143, 151, 154, 156, 207, 85 257, 268, 386, 504, 622, 624, 675, 725, 86 736, 854, 972, 974, 976, 1027, 1077, 1195, 87 1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666, 88 1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069, 89 2119, 2178, 2268, 2386, 2504, 2590, 2706 90 }; 91 92 static const char _deserialize_json_indicies[] = { 93 0, 0, 0, 0, 0, 1, 1, 94 1, 1, 1, 1, 1, 1, 1, 1, 95 1, 1, 1, 1, 1, 1, 1, 1, 96 0, 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 1, 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, 1, 103 1, 1, 1, 1, 1, 1, 1, 1, 104 1, 1, 1, 1, 1, 1, 1, 1, 105 1, 1, 1, 1, 1, 1, 1, 1, 106 1, 1, 1, 1, 1, 1, 1, 1, 107 1, 1, 1, 2, 1, 3, 3, 3, 108 3, 3, 1, 1, 1, 1, 1, 1, 109 1, 1, 1, 1, 1, 1, 1, 1, 110 1, 1, 1, 1, 3, 1, 4, 1, 111 5, 1, 6, 7, 1, 1, 8, 1, 112 9, 10, 1, 11, 1, 11, 11, 11, 113 11, 11, 1, 1, 1, 1, 1, 1, 114 1, 1, 1, 1, 1, 1, 1, 1, 115 1, 1, 1, 1, 11, 1, 1, 1, 116 1, 1, 1, 1, 1, 1, 1, 1, 117 1, 1, 1, 1, 1, 1, 1, 1, 118 1, 1, 1, 1, 1, 1, 12, 1, 119 12, 12, 12, 12, 12, 1, 1, 1, 120 1, 1, 1, 1, 1, 1, 1, 1, 121 1, 1, 1, 1, 1, 1, 1, 12, 122 1, 1, 1, 1, 1, 1, 1, 1, 123 1, 1, 1, 1, 13, 1, 1, 14, 124 15, 15, 15, 15, 15, 15, 15, 15, 125 15, 1, 16, 17, 17, 17, 17, 17, 126 17, 17, 17, 17, 1, 18, 18, 18, 127 18, 18, 1, 1, 1, 1, 1, 1, 128 1, 1, 1, 1, 1, 1, 1, 1, 129 1, 1, 1, 1, 18, 1, 1, 1, 130 1, 1, 1, 1, 1, 1, 1, 1, 131 19, 1, 1, 1, 1, 1, 1, 1, 132 1, 1, 1, 1, 1, 1, 1, 1, 133 1, 1, 1, 1, 1, 1, 1, 1, 134 1, 1, 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, 1, 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, 20, 1, 21, 21, 21, 21, 21, 142 1, 1, 1, 1, 1, 1, 1, 1, 143 1, 1, 1, 1, 1, 1, 1, 1, 144 1, 1, 21, 1, 1, 1, 1, 1, 145 1, 1, 1, 1, 1, 1, 3, 1, 146 1, 1, 1, 1, 1, 1, 1, 1, 147 1, 1, 1, 1, 1, 1, 1, 1, 148 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 22, 156 1, 18, 18, 18, 18, 18, 1, 1, 157 1, 1, 1, 1, 1, 1, 1, 1, 158 1, 1, 1, 1, 1, 1, 1, 1, 159 18, 1, 1, 1, 1, 1, 1, 1, 160 1, 1, 1, 1, 19, 1, 1, 1, 161 17, 17, 17, 17, 17, 17, 17, 17, 162 17, 17, 1, 1, 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, 1, 1, 1, 1, 20, 1, 23, 171 1, 23, 23, 23, 23, 23, 1, 1, 172 1, 1, 1, 1, 1, 1, 1, 1, 173 1, 1, 1, 1, 1, 1, 1, 1, 174 23, 1, 1, 1, 1, 1, 1, 1, 175 1, 1, 1, 1, 1, 1, 1, 1, 176 1, 1, 1, 1, 1, 1, 1, 1, 177 1, 1, 24, 1, 24, 24, 24, 24, 178 24, 1, 1, 1, 1, 1, 1, 1, 179 1, 1, 1, 1, 1, 1, 1, 1, 180 1, 1, 1, 24, 1, 1, 1, 1, 181 1, 1, 1, 1, 1, 1, 1, 1, 182 25, 1, 1, 26, 27, 27, 27, 27, 183 27, 27, 27, 27, 27, 1, 28, 29, 184 29, 29, 29, 29, 29, 29, 29, 29, 185 1, 30, 30, 30, 30, 30, 1, 1, 186 1, 1, 1, 1, 1, 1, 1, 1, 187 1, 1, 1, 1, 1, 1, 1, 1, 188 30, 1, 1, 1, 1, 1, 1, 1, 189 1, 1, 1, 1, 31, 1, 1, 1, 190 1, 1, 1, 1, 1, 1, 1, 1, 191 1, 1, 1, 1, 1, 1, 1, 1, 192 1, 1, 1, 1, 1, 1, 1, 1, 193 1, 1, 1, 1, 1, 1, 1, 1, 194 1, 1, 1, 1, 1, 1, 1, 1, 195 1, 1, 1, 1, 1, 1, 1, 1, 196 1, 1, 1, 1, 1, 1, 1, 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, 32, 1, 30, 200 30, 30, 30, 30, 1, 1, 1, 1, 201 1, 1, 1, 1, 1, 1, 1, 1, 202 1, 1, 1, 1, 1, 1, 30, 1, 203 1, 1, 1, 1, 1, 1, 1, 1, 204 1, 1, 31, 1, 1, 1, 29, 29, 205 29, 29, 29, 29, 29, 29, 29, 29, 206 1, 1, 1, 1, 1, 1, 1, 1, 207 1, 1, 1, 1, 1, 1, 1, 1, 208 1, 1, 1, 1, 1, 1, 1, 1, 209 1, 1, 1, 1, 1, 1, 1, 1, 210 1, 1, 1, 1, 1, 1, 1, 1, 211 1, 1, 1, 1, 1, 1, 1, 1, 212 1, 1, 1, 1, 1, 1, 1, 1, 213 1, 1, 1, 1, 1, 1, 1, 1, 214 1, 1, 1, 32, 1, 33, 1, 34, 215 1, 34, 34, 34, 34, 34, 1, 1, 216 1, 1, 1, 1, 1, 1, 1, 1, 217 1, 1, 1, 1, 1, 1, 1, 1, 218 34, 1, 1, 1, 1, 1, 1, 1, 219 1, 1, 1, 1, 1, 1, 1, 1, 220 1, 1, 1, 1, 1, 1, 1, 1, 221 1, 1, 35, 1, 35, 35, 35, 35, 222 35, 1, 1, 1, 1, 1, 1, 1, 223 1, 1, 1, 1, 1, 1, 1, 1, 224 1, 1, 1, 35, 1, 1, 1, 1, 225 1, 1, 1, 1, 1, 1, 1, 1, 226 1, 1, 1, 36, 37, 37, 37, 37, 227 37, 37, 37, 37, 37, 1, 38, 38, 228 38, 38, 38, 1, 1, 1, 1, 1, 229 1, 1, 1, 1, 1, 1, 1, 1, 230 1, 1, 1, 1, 1, 38, 1, 1, 231 1, 1, 1, 1, 1, 1, 1, 1, 232 1, 39, 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, 1, 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, 40, 1, 38, 38, 38, 38, 243 38, 1, 1, 1, 1, 1, 1, 1, 244 1, 1, 1, 1, 1, 1, 1, 1, 245 1, 1, 1, 38, 1, 1, 1, 1, 246 1, 1, 1, 1, 1, 1, 1, 39, 247 1, 1, 1, 41, 41, 41, 41, 41, 248 41, 41, 41, 41, 41, 1, 1, 1, 249 1, 1, 1, 1, 1, 1, 1, 1, 250 1, 1, 1, 1, 1, 1, 1, 1, 251 1, 1, 1, 1, 1, 1, 1, 1, 252 1, 1, 1, 1, 1, 1, 1, 1, 253 1, 1, 1, 1, 1, 1, 1, 1, 254 1, 1, 1, 1, 1, 1, 1, 1, 255 1, 1, 1, 1, 1, 1, 1, 1, 256 1, 1, 1, 1, 1, 1, 1, 1, 257 40, 1, 42, 43, 1, 44, 1, 44, 258 44, 44, 44, 44, 1, 1, 1, 1, 259 1, 1, 1, 1, 1, 1, 1, 1, 260 1, 1, 1, 1, 1, 1, 44, 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, 1, 1, 1, 264 45, 1, 45, 45, 45, 45, 45, 1, 265 1, 1, 1, 1, 1, 1, 1, 1, 266 1, 1, 1, 1, 1, 1, 1, 1, 267 1, 45, 1, 1, 1, 1, 1, 1, 268 1, 1, 1, 1, 1, 1, 46, 1, 269 1, 47, 48, 48, 48, 48, 48, 48, 270 48, 48, 48, 1, 49, 50, 50, 50, 271 50, 50, 50, 50, 50, 50, 1, 51, 272 51, 51, 51, 51, 1, 1, 1, 1, 273 1, 1, 1, 1, 1, 1, 1, 1, 274 1, 1, 1, 1, 1, 1, 51, 1, 275 1, 1, 1, 1, 1, 1, 1, 1, 276 1, 1, 52, 1, 1, 1, 1, 1, 277 1, 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, 1, 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, 53, 1, 51, 51, 51, 287 51, 51, 1, 1, 1, 1, 1, 1, 288 1, 1, 1, 1, 1, 1, 1, 1, 289 1, 1, 1, 1, 51, 1, 1, 1, 290 1, 1, 1, 1, 1, 1, 1, 1, 291 52, 1, 1, 1, 50, 50, 50, 50, 292 50, 50, 50, 50, 50, 50, 1, 1, 293 1, 1, 1, 1, 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, 1, 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, 53, 1, 54, 1, 54, 54, 54, 302 54, 54, 1, 1, 1, 1, 1, 1, 303 1, 1, 1, 1, 1, 1, 1, 1, 304 1, 1, 1, 1, 54, 1, 1, 1, 305 1, 1, 1, 1, 1, 1, 1, 1, 306 1, 1, 1, 1, 1, 1, 1, 1, 307 1, 1, 1, 1, 1, 1, 55, 1, 308 55, 55, 55, 55, 55, 1, 1, 1, 309 1, 1, 1, 1, 1, 1, 1, 1, 310 1, 1, 1, 1, 1, 1, 1, 55, 311 1, 1, 1, 1, 1, 1, 1, 1, 312 1, 1, 1, 1, 56, 1, 1, 57, 313 58, 58, 58, 58, 58, 58, 58, 58, 314 58, 1, 59, 60, 60, 60, 60, 60, 315 60, 60, 60, 60, 1, 61, 61, 61, 316 61, 61, 1, 1, 1, 1, 1, 1, 317 1, 1, 1, 1, 1, 1, 1, 1, 318 1, 1, 1, 1, 61, 1, 1, 1, 319 1, 1, 1, 1, 1, 1, 1, 1, 320 62, 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, 1, 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, 63, 1, 61, 61, 61, 61, 61, 331 1, 1, 1, 1, 1, 1, 1, 1, 332 1, 1, 1, 1, 1, 1, 1, 1, 333 1, 1, 61, 1, 1, 1, 1, 1, 334 1, 1, 1, 1, 1, 1, 62, 1, 335 1, 1, 60, 60, 60, 60, 60, 60, 336 60, 60, 60, 60, 1, 1, 1, 1, 337 1, 1, 1, 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, 1, 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, 63, 345 1, 64, 1, 64, 64, 64, 64, 64, 346 1, 1, 1, 1, 1, 1, 1, 1, 347 1, 1, 1, 1, 1, 1, 1, 1, 348 1, 1, 64, 1, 1, 1, 1, 1, 349 1, 1, 1, 1, 1, 1, 1, 1, 350 1, 1, 1, 1, 1, 1, 1, 1, 351 1, 1, 1, 1, 65, 1, 65, 65, 352 65, 65, 65, 1, 1, 1, 1, 1, 353 1, 1, 1, 1, 1, 1, 1, 1, 354 1, 1, 1, 1, 1, 65, 1, 66, 355 1, 1, 1, 1, 1, 1, 1, 1, 356 1, 1, 1, 1, 1, 67, 68, 68, 357 68, 68, 68, 68, 68, 68, 68, 1, 358 69, 69, 69, 69, 69, 69, 69, 69, 359 69, 69, 69, 69, 69, 69, 69, 69, 360 69, 69, 69, 69, 69, 69, 69, 69, 361 69, 69, 1, 1, 1, 1, 1, 1, 362 69, 69, 69, 69, 69, 69, 69, 69, 363 69, 69, 69, 69, 69, 69, 69, 69, 364 69, 69, 69, 69, 69, 69, 69, 69, 365 69, 69, 1, 70, 1, 1, 1, 1, 366 1, 1, 1, 1, 1, 1, 71, 71, 367 1, 71, 71, 71, 71, 71, 71, 71, 368 71, 71, 71, 1, 1, 1, 1, 1, 369 1, 1, 71, 71, 71, 71, 71, 71, 370 71, 71, 71, 71, 71, 71, 71, 71, 371 71, 71, 71, 71, 71, 71, 71, 71, 372 71, 71, 71, 71, 1, 1, 1, 1, 373 71, 1, 71, 71, 71, 71, 71, 71, 374 71, 71, 71, 71, 71, 71, 71, 71, 375 71, 71, 71, 71, 71, 71, 71, 71, 376 71, 71, 71, 71, 1, 72, 72, 72, 377 72, 72, 1, 1, 1, 1, 1, 1, 378 1, 1, 1, 1, 1, 1, 1, 1, 379 1, 1, 1, 1, 72, 1, 1, 1, 380 1, 1, 1, 1, 1, 1, 1, 1, 381 73, 1, 1, 1, 1, 1, 1, 1, 382 1, 1, 1, 1, 1, 1, 1, 1, 383 1, 1, 1, 1, 1, 1, 1, 1, 384 1, 1, 1, 1, 1, 1, 1, 1, 385 1, 1, 1, 1, 1, 1, 1, 1, 386 1, 1, 1, 1, 1, 1, 1, 1, 387 1, 1, 1, 1, 1, 1, 1, 1, 388 1, 1, 1, 1, 1, 1, 1, 1, 389 1, 1, 1, 1, 1, 1, 1, 1, 390 1, 1, 1, 1, 1, 1, 1, 1, 391 1, 74, 1, 72, 72, 72, 72, 72, 392 1, 1, 1, 1, 1, 1, 1, 1, 393 1, 1, 1, 1, 1, 1, 1, 1, 394 1, 1, 72, 1, 1, 1, 1, 1, 395 1, 1, 1, 1, 1, 1, 73, 1, 396 1, 1, 75, 75, 75, 75, 75, 75, 397 75, 75, 75, 75, 1, 1, 1, 1, 398 1, 1, 1, 1, 1, 1, 1, 1, 399 1, 1, 1, 1, 1, 1, 1, 1, 400 1, 1, 1, 1, 1, 1, 1, 1, 401 1, 1, 1, 1, 1, 1, 1, 1, 402 1, 1, 1, 1, 1, 1, 1, 1, 403 1, 1, 1, 1, 1, 1, 1, 1, 404 1, 1, 1, 1, 1, 1, 1, 1, 405 1, 1, 1, 1, 1, 1, 1, 74, 406 1, 76, 76, 76, 76, 76, 1, 1, 407 1, 1, 1, 1, 1, 1, 1, 1, 408 1, 1, 1, 1, 1, 1, 1, 1, 409 76, 1, 1, 1, 1, 1, 1, 1, 410 1, 1, 1, 1, 77, 1, 1, 1, 411 1, 1, 1, 1, 1, 1, 1, 1, 412 1, 1, 1, 1, 1, 1, 1, 1, 413 1, 1, 1, 1, 1, 1, 1, 1, 414 1, 1, 1, 1, 1, 1, 1, 1, 415 1, 1, 1, 1, 1, 1, 1, 1, 416 1, 1, 1, 1, 1, 78, 1, 0, 417 0, 0, 0, 0, 1, 1, 1, 1, 418 1, 1, 1, 1, 1, 1, 1, 1, 419 1, 1, 1, 1, 1, 1, 0, 1, 420 1, 1, 1, 1, 1, 1, 1, 1, 421 1, 1, 1, 1, 1, 1, 1, 1, 422 1, 1, 1, 1, 1, 1, 1, 1, 423 1, 1, 1, 1, 1, 1, 1, 1, 424 1, 1, 1, 1, 1, 1, 1, 1, 425 1, 1, 1, 1, 1, 1, 1, 1, 426 1, 1, 1, 1, 1, 1, 1, 1, 427 1, 1, 1, 1, 1, 1, 1, 1, 428 1, 1, 1, 1, 1, 1, 1, 1, 429 1, 1, 1, 1, 1, 1, 1, 1, 430 1, 1, 1, 1, 1, 1, 1, 1, 431 1, 2, 1, 1, 0 432 }; 433 434 static const char _deserialize_json_trans_targs[] = { 435 1, 0, 2, 2, 3, 4, 18, 24, 436 37, 5, 12, 6, 7, 8, 9, 11, 437 9, 11, 10, 2, 44, 10, 44, 13, 438 14, 15, 16, 17, 16, 17, 10, 2, 439 44, 19, 20, 21, 22, 23, 10, 2, 440 44, 23, 25, 31, 26, 27, 28, 29, 441 30, 29, 30, 10, 2, 44, 32, 33, 442 34, 35, 36, 35, 36, 10, 2, 44, 443 38, 39, 40, 42, 43, 41, 10, 41, 444 10, 2, 44, 43, 44, 45, 46 445 }; 446 447 static const char _deserialize_json_trans_actions[] = { 448 0, 0, 1, 0, 0, 0, 0, 0, 449 0, 0, 0, 0, 0, 2, 2, 2, 450 0, 0, 3, 3, 4, 0, 5, 0, 451 0, 2, 2, 2, 0, 0, 6, 6, 452 7, 0, 0, 0, 2, 2, 8, 8, 453 9, 0, 0, 0, 0, 0, 2, 2, 454 2, 0, 0, 10, 10, 11, 0, 0, 455 2, 2, 2, 0, 0, 12, 12, 13, 456 0, 0, 0, 2, 2, 2, 14, 0, 457 15, 15, 16, 0, 0, 0, 0 458 }; 459 460 static const int deserialize_json_start = 1; 461 static const int deserialize_json_first_final = 44; 462 static const int deserialize_json_error = 0; 463 464 static const int deserialize_json_en_main = 1; 465 466 467 #line 97 "hb-buffer-deserialize-json.rl" 468 469 470 static hb_bool_t 471 _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, 472 const char *buf, 473 unsigned int buf_len, 474 const char **end_ptr, 475 hb_font_t *font) 476 { 477 const char *p = buf, *pe = buf + buf_len; 478 479 /* Ensure we have positions. */ 480 (void) hb_buffer_get_glyph_positions (buffer, NULL); 481 482 while (p < pe && ISSPACE (*p)) 483 p++; 484 if (p < pe && *p == (buffer->len ? ',' : '[')) 485 { 486 *end_ptr = ++p; 487 } 488 489 const char *tok = NULL; 490 int cs; 491 hb_glyph_info_t info = {0}; 492 hb_glyph_position_t pos = {0}; 493 494 #line 466 "hb-buffer-deserialize-json.hh" 495 { 496 cs = deserialize_json_start; 497 } 498 499 #line 471 "hb-buffer-deserialize-json.hh" 500 { 501 int _slen; 502 int _trans; 503 const unsigned char *_keys; 504 const char *_inds; 505 if ( p == pe ) 506 goto _test_eof; 507 if ( cs == 0 ) 508 goto _out; 509 _resume: 510 _keys = _deserialize_json_trans_keys + (cs<<1); 511 _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs]; 512 513 _slen = _deserialize_json_key_spans[cs]; 514 _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && 515 (*p) <= _keys[1] ? 516 (*p) - _keys[0] : _slen ]; 517 518 cs = _deserialize_json_trans_targs[_trans]; 519 520 if ( _deserialize_json_trans_actions[_trans] == 0 ) 521 goto _again; 522 523 switch ( _deserialize_json_trans_actions[_trans] ) { 524 case 1: 525 #line 38 "hb-buffer-deserialize-json.rl" 526 { 527 memset (&info, 0, sizeof (info)); 528 memset (&pos , 0, sizeof (pos )); 529 } 530 break; 531 case 5: 532 #line 43 "hb-buffer-deserialize-json.rl" 533 { 534 buffer->add_info (info); 535 if (buffer->in_error) 536 return false; 537 buffer->pos[buffer->len - 1] = pos; 538 *end_ptr = p; 539 } 540 break; 541 case 2: 542 #line 51 "hb-buffer-deserialize-json.rl" 543 { 544 tok = p; 545 } 546 break; 547 case 14: 548 #line 55 "hb-buffer-deserialize-json.rl" 549 { 550 if (!hb_font_glyph_from_string (font, 551 tok, p - tok, 552 &info.codepoint)) 553 return false; 554 } 555 break; 556 case 15: 557 #line 62 "hb-buffer-deserialize-json.rl" 558 { if (!parse_uint (tok, p, &info.codepoint)) return false; } 559 break; 560 case 8: 561 #line 63 "hb-buffer-deserialize-json.rl" 562 { if (!parse_uint (tok, p, &info.cluster )) return false; } 563 break; 564 case 10: 565 #line 64 "hb-buffer-deserialize-json.rl" 566 { if (!parse_int (tok, p, &pos.x_offset )) return false; } 567 break; 568 case 12: 569 #line 65 "hb-buffer-deserialize-json.rl" 570 { if (!parse_int (tok, p, &pos.y_offset )) return false; } 571 break; 572 case 3: 573 #line 66 "hb-buffer-deserialize-json.rl" 574 { if (!parse_int (tok, p, &pos.x_advance)) return false; } 575 break; 576 case 6: 577 #line 67 "hb-buffer-deserialize-json.rl" 578 { if (!parse_int (tok, p, &pos.y_advance)) return false; } 579 break; 580 case 16: 581 #line 62 "hb-buffer-deserialize-json.rl" 582 { if (!parse_uint (tok, p, &info.codepoint)) return false; } 583 #line 43 "hb-buffer-deserialize-json.rl" 584 { 585 buffer->add_info (info); 586 if (buffer->in_error) 587 return false; 588 buffer->pos[buffer->len - 1] = pos; 589 *end_ptr = p; 590 } 591 break; 592 case 9: 593 #line 63 "hb-buffer-deserialize-json.rl" 594 { if (!parse_uint (tok, p, &info.cluster )) return false; } 595 #line 43 "hb-buffer-deserialize-json.rl" 596 { 597 buffer->add_info (info); 598 if (buffer->in_error) 599 return false; 600 buffer->pos[buffer->len - 1] = pos; 601 *end_ptr = p; 602 } 603 break; 604 case 11: 605 #line 64 "hb-buffer-deserialize-json.rl" 606 { if (!parse_int (tok, p, &pos.x_offset )) return false; } 607 #line 43 "hb-buffer-deserialize-json.rl" 608 { 609 buffer->add_info (info); 610 if (buffer->in_error) 611 return false; 612 buffer->pos[buffer->len - 1] = pos; 613 *end_ptr = p; 614 } 615 break; 616 case 13: 617 #line 65 "hb-buffer-deserialize-json.rl" 618 { if (!parse_int (tok, p, &pos.y_offset )) return false; } 619 #line 43 "hb-buffer-deserialize-json.rl" 620 { 621 buffer->add_info (info); 622 if (buffer->in_error) 623 return false; 624 buffer->pos[buffer->len - 1] = pos; 625 *end_ptr = p; 626 } 627 break; 628 case 4: 629 #line 66 "hb-buffer-deserialize-json.rl" 630 { if (!parse_int (tok, p, &pos.x_advance)) return false; } 631 #line 43 "hb-buffer-deserialize-json.rl" 632 { 633 buffer->add_info (info); 634 if (buffer->in_error) 635 return false; 636 buffer->pos[buffer->len - 1] = pos; 637 *end_ptr = p; 638 } 639 break; 640 case 7: 641 #line 67 "hb-buffer-deserialize-json.rl" 642 { if (!parse_int (tok, p, &pos.y_advance)) return false; } 643 #line 43 "hb-buffer-deserialize-json.rl" 644 { 645 buffer->add_info (info); 646 if (buffer->in_error) 647 return false; 648 buffer->pos[buffer->len - 1] = pos; 649 *end_ptr = p; 650 } 651 break; 652 #line 624 "hb-buffer-deserialize-json.hh" 653 } 654 655 _again: 656 if ( cs == 0 ) 657 goto _out; 658 if ( ++p != pe ) 659 goto _resume; 660 _test_eof: {} 661 _out: {} 662 } 663 664 #line 125 "hb-buffer-deserialize-json.rl" 665 666 667 *end_ptr = p; 668 669 return p == pe && *(p-1) != ']'; 670 } 671 672 #endif /* HB_BUFFER_DESERIALIZE_JSON_HH */