1b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 2b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#line 1 "hb-ot-shape-complex-use-machine.rl" 3b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat/* 4b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Copyright © 2015 Mozilla Foundation. 5b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Copyright © 2015 Google, Inc. 6b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * 7b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * This is part of HarfBuzz, a text shaping library. 8cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * 9cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * Permission is hereby granted, without written agreement and without 10b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * license or royalty fees, to use, copy, modify, and distribute this 11b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * software and its documentation for any purpose, provided that the 12b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * above copyright notice and the following two paragraphs appear in 13b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * all copies of this software. 14cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * 15b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 16b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 17b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 18b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 19b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * DAMAGE. 20cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * 21b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 22cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 23b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 24b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 25b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 26b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * 27b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Mozilla Author(s): Jonathan Kew 28b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat * Google Author(s): Behdad Esfahbod 29b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat */ 30b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 31b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH 32b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH 33b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 34b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "hb-private.hh" 35b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 36b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 37b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#line 38 "hb-ot-shape-complex-use-machine.hh" 38b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const unsigned char _use_syllable_machine_trans_keys[] = { 39b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 0u, 0u, 4u, 4u, 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u, 40b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 41b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 42b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 43b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 44b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 39u, 12u, 21u, 12u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 45b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 46b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u, 47b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 42u, 42u, 0 48b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}; 49b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 50b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const char _use_syllable_machine_key_spans[] = { 51b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 0, 1, 1, 40, 1, 32, 32, 1, 52b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 32, 32, 32, 19, 19, 19, 32, 32, 53b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 32, 32, 32, 32, 32, 32, 32, 32, 54b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 32, 32, 32, 1, 32, 32, 19, 19, 55b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 19, 32, 32, 32, 32, 32, 32, 32, 56b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 32, 10, 2, 32, 32, 32, 32, 19, 57b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 19, 19, 32, 32, 32, 32, 32, 32, 58b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 32, 32, 32, 32, 39, 32, 22, 2, 59b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 1 60b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}; 61b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 62b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const short _use_syllable_machine_index_offsets[] = { 63b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 0, 0, 2, 4, 45, 47, 80, 113, 64b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 115, 148, 181, 214, 234, 254, 274, 307, 65b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 340, 373, 406, 439, 472, 505, 538, 571, 66b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 604, 637, 670, 703, 705, 738, 771, 791, 67b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 811, 831, 864, 897, 930, 963, 996, 1029, 68b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 1062, 1095, 1106, 1109, 1142, 1175, 1208, 1241, 69b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 1261, 1281, 1301, 1334, 1367, 1400, 1433, 1466, 70b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 1499, 1532, 1565, 1598, 1631, 1671, 1704, 1727, 71b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 1730 72b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}; 73b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 74b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratstatic const char _use_syllable_machine_indicies[] = { 75b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 1, 0, 3, 2, 4, 5, 6, 76b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 4, 1, 5, 8, 8, 7, 8, 8, 77b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 3, 9, 8, 8, 8, 4, 4, 10, 78b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 11, 8, 8, 12, 13, 14, 15, 16, 79b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 17, 18, 12, 19, 20, 21, 22, 23, 80b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 24, 8, 25, 26, 27, 8, 29, 28, 81b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 31, 30, 30, 32, 33, 30, 30, 30, 82b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 34, 35, 36, 83b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 37, 38, 39, 40, 41, 35, 42, 34, 84b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 43, 44, 45, 46, 30, 47, 48, 49, 85b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 31, 30, 30, 32, 33, 30, 30, 86b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 50, 35, 87b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 36, 37, 38, 39, 40, 41, 35, 42, 88b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 43, 43, 44, 45, 46, 30, 47, 48, 89b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 49, 30, 32, 51, 31, 30, 30, 32, 90b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 33, 30, 30, 30, 30, 30, 30, 30, 91b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 35, 36, 37, 38, 39, 40, 92b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 41, 35, 42, 43, 43, 44, 45, 46, 93cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 30, 47, 48, 49, 30, 31, 30, 30, 94b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 95b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 35, 36, 37, 38, 39, 96b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 44, 45, 97b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 46, 30, 47, 48, 49, 30, 31, 30, 98b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 99b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 36, 37, 38, 100b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 39, 30, 30, 30, 30, 30, 30, 30, 101b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 47, 48, 49, 30, 31, 102b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 103b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 37, 104b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 38, 39, 30, 31, 30, 30, 30, 30, 105b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 106b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 38, 39, 30, 31, 107b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 108b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 109b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 39, 30, 31, 30, 30, 30, 30, 110b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 111b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 37, 38, 39, 30, 30, 112b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 113b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 47, 48, 49, 30, 31, 30, 30, 30, 114b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 115b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 37, 38, 39, 30, 116b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 117b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 48, 49, 30, 31, 30, 30, 118b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 119b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 37, 38, 39, 120b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 121b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 49, 30, 31, 30, 122b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 123b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 36, 37, 38, 124b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 39, 30, 30, 30, 30, 30, 30, 44, 125cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 45, 46, 30, 47, 48, 49, 30, 31, 126b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 127b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 36, 37, 128b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 38, 39, 30, 30, 30, 30, 30, 30, 129b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 45, 46, 30, 47, 48, 49, 30, 130b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 31, 30, 30, 30, 30, 30, 30, 30, 131b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 36, 132b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 37, 38, 39, 30, 30, 30, 30, 30, 133b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 46, 30, 47, 48, 49, 134b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 31, 30, 30, 30, 30, 30, 30, 135b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 35, 136b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 36, 37, 38, 39, 30, 41, 35, 30, 137b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 44, 45, 46, 30, 47, 48, 138b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 49, 30, 31, 30, 30, 30, 30, 30, 139b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 140b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 35, 36, 37, 38, 39, 30, 30, 35, 141b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 44, 45, 46, 30, 47, 142b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 48, 49, 30, 31, 30, 30, 30, 30, 143b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 30, 30, 30, 30, 30, 144b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 35, 36, 37, 38, 39, 40, 41, 145b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 35, 30, 30, 30, 44, 45, 46, 30, 146b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 47, 48, 49, 30, 31, 30, 30, 32, 147b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 33, 30, 30, 30, 30, 30, 30, 30, 148b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 35, 36, 37, 38, 39, 40, 149b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 41, 35, 42, 30, 43, 44, 45, 46, 150b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 47, 48, 49, 30, 31, 30, 30, 151b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 32, 33, 30, 30, 30, 30, 30, 30, 152b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 30, 30, 30, 35, 36, 37, 38, 39, 153b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 40, 41, 35, 42, 34, 43, 44, 45, 154b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 46, 30, 47, 48, 49, 30, 53, 52, 155cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 52, 54, 55, 52, 52, 52, 52, 52, 156b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 56, 52, 57, 58, 59, 157b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 60, 61, 62, 57, 63, 56, 64, 52, 158b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 65, 66, 67, 52, 53, 159b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 54, 55, 52, 52, 52, 52, 160b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 68, 52, 57, 58, 161b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 59, 60, 61, 62, 57, 63, 64, 64, 162b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 65, 66, 67, 52, 163cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 54, 51, 53, 52, 52, 54, 55, 52, 164b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 165b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 57, 58, 59, 60, 61, 62, 57, 166b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 63, 64, 64, 52, 52, 52, 52, 65, 167b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 66, 67, 52, 53, 52, 52, 52, 52, 168b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 169b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 57, 58, 59, 60, 52, 52, 170b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 171b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 65, 66, 67, 52, 53, 52, 52, 52, 172b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 173b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 58, 59, 60, 52, 174b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 53, 52, 52, 52, 52, 52, 52, 52, 175b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 176b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 59, 60, 52, 53, 52, 52, 52, 177cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 52, 52, 52, 52, 52, 52, 52, 52, 178cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 52, 52, 52, 52, 52, 52, 60, 52, 179cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 53, 52, 52, 52, 52, 52, 52, 52, 180cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 52, 52, 52, 52, 52, 52, 52, 52, 181cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 58, 59, 60, 52, 52, 52, 52, 52, 182cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 52, 52, 52, 52, 52, 65, 66, 67, 183cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 52, 53, 52, 52, 52, 52, 52, 52, 184b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 185b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 58, 59, 60, 52, 52, 52, 52, 186b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 66, 187b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 67, 52, 53, 52, 52, 52, 52, 52, 188b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 189b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 58, 59, 60, 52, 52, 52, 190b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 191b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 67, 52, 53, 52, 52, 52, 52, 192b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 193b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 57, 58, 59, 60, 52, 62, 194b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 57, 52, 52, 52, 52, 52, 52, 52, 195b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 65, 66, 67, 52, 53, 52, 52, 52, 196b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 197b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 57, 58, 59, 60, 52, 198b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 57, 52, 52, 52, 52, 52, 52, 199b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 65, 66, 67, 52, 53, 52, 52, 200b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 52, 52, 201b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 57, 58, 59, 60, 202b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 61, 62, 57, 52, 52, 52, 52, 52, 203b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 65, 66, 67, 52, 53, 52, 204b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 54, 55, 52, 52, 52, 52, 52, 205b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 57, 58, 59, 206b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 60, 61, 62, 57, 63, 52, 64, 52, 207b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 65, 66, 67, 52, 53, 208b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 54, 55, 52, 52, 52, 52, 209b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 52, 52, 57, 58, 210b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 59, 60, 61, 62, 57, 63, 56, 64, 211b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52, 52, 52, 52, 65, 66, 67, 52, 212b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 70, 71, 69, 69, 69, 69, 69, 69, 213b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 69, 72, 69, 70, 71, 69, 7, 73, 214b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 3, 9, 73, 73, 73, 73, 73, 215b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 74, 12, 13, 14, 15, 216b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 16, 17, 18, 12, 19, 21, 21, 22, 217b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 23, 24, 73, 25, 26, 27, 73, 7, 218b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 3, 9, 73, 73, 73, 73, 219b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 12, 13, 14, 220b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 15, 16, 17, 18, 12, 19, 21, 21, 221b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 22, 23, 24, 73, 25, 26, 27, 73, 222b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 7, 73, 73, 73, 73, 73, 73, 73, 223cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 73, 73, 73, 73, 73, 12, 13, 224cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 14, 15, 16, 73, 73, 73, 73, 73, 225cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 22, 23, 24, 73, 25, 26, 27, 226b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 7, 73, 73, 73, 73, 73, 73, 227b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 228b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 13, 14, 15, 16, 73, 73, 73, 73, 229b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 25, 26, 230cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 27, 73, 7, 73, 73, 73, 73, 73, 231b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 232b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 14, 15, 16, 73, 7, 73, 233b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 234cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 73, 73, 73, 73, 73, 73, 15, 235cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 16, 73, 7, 73, 73, 73, 73, 73, 236cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 73, 73, 73, 73, 73, 73, 73, 237cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 73, 73, 73, 16, 73, 7, 73, 238cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 73, 73, 73, 73, 73, 73, 73, 239b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 14, 15, 240b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 16, 73, 73, 73, 73, 73, 73, 73, 241b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 25, 26, 27, 73, 7, 242b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 243b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 14, 244b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 15, 16, 73, 73, 73, 73, 73, 73, 245b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 26, 27, 73, 246b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 7, 73, 73, 73, 73, 73, 73, 73, 247b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 248b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 14, 15, 16, 73, 73, 73, 73, 73, 249b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 27, 250b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 7, 73, 73, 73, 73, 73, 73, 251cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 73, 73, 73, 73, 73, 73, 73, 73, 252cce46a0c214b37e8da48c522c83037e8ffa4f9fdAlex Vakulenko 13, 14, 15, 16, 73, 73, 73, 73, 253b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 22, 23, 24, 73, 25, 26, 254b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 27, 73, 7, 73, 73, 73, 73, 73, 255b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 256b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 13, 14, 15, 16, 73, 73, 73, 257b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 23, 24, 73, 25, 258b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 26, 27, 73, 7, 73, 73, 73, 73, 259b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 73, 73, 260b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 13, 14, 15, 16, 73, 73, 261b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 73, 73, 73, 73, 73, 73, 24, 73, 262 25, 26, 27, 73, 7, 73, 73, 73, 263 73, 73, 73, 73, 73, 73, 73, 73, 264 73, 73, 12, 13, 14, 15, 16, 73, 265 18, 12, 73, 73, 73, 22, 23, 24, 266 73, 25, 26, 27, 73, 7, 73, 73, 267 73, 73, 73, 73, 73, 73, 73, 73, 268 73, 73, 73, 12, 13, 14, 15, 16, 269 73, 73, 12, 73, 73, 73, 22, 23, 270 24, 73, 25, 26, 27, 73, 7, 73, 271 73, 73, 73, 73, 73, 73, 73, 73, 272 73, 73, 73, 73, 12, 13, 14, 15, 273 16, 17, 18, 12, 73, 73, 73, 22, 274 23, 24, 73, 25, 26, 27, 73, 7, 275 73, 73, 3, 9, 73, 73, 73, 73, 276 73, 73, 73, 73, 73, 12, 13, 14, 277 15, 16, 17, 18, 12, 19, 73, 21, 278 22, 23, 24, 73, 25, 26, 27, 73, 279 5, 6, 73, 73, 5, 73, 73, 7, 280 73, 73, 3, 9, 73, 73, 73, 73, 281 73, 73, 73, 73, 73, 12, 13, 14, 282 15, 16, 17, 18, 12, 19, 20, 21, 283 22, 23, 24, 73, 25, 26, 27, 73, 284 7, 73, 73, 3, 9, 73, 73, 73, 285 73, 73, 73, 73, 73, 73, 12, 13, 286 14, 15, 16, 17, 18, 12, 19, 20, 287 21, 22, 23, 24, 73, 25, 26, 27, 288 73, 76, 75, 75, 75, 75, 75, 75, 289 75, 75, 75, 75, 75, 75, 75, 75, 290 75, 75, 75, 75, 75, 76, 77, 75, 291 76, 77, 75, 77, 75, 0 292}; 293 294static const char _use_syllable_machine_trans_targs[] = { 295 3, 41, 3, 43, 4, 5, 25, 3, 296 0, 2, 60, 62, 45, 46, 47, 48, 297 49, 56, 57, 58, 61, 59, 53, 54, 298 55, 50, 51, 52, 3, 3, 3, 3, 299 6, 7, 24, 9, 10, 11, 12, 13, 300 20, 21, 22, 23, 17, 18, 19, 14, 301 15, 16, 8, 3, 3, 3, 26, 27, 302 40, 29, 30, 31, 32, 36, 37, 38, 303 39, 33, 34, 35, 28, 3, 3, 1, 304 42, 3, 44, 3, 63, 64 305}; 306 307static const char _use_syllable_machine_trans_actions[] = { 308 1, 2, 3, 4, 0, 0, 0, 7, 309 0, 0, 4, 0, 0, 0, 0, 0, 310 0, 0, 0, 0, 4, 4, 0, 0, 311 0, 0, 0, 0, 8, 9, 10, 11, 312 0, 0, 0, 0, 0, 0, 0, 0, 313 0, 0, 0, 0, 0, 0, 0, 0, 314 0, 0, 0, 12, 13, 14, 0, 0, 315 0, 0, 0, 0, 0, 0, 0, 0, 316 0, 0, 0, 0, 0, 15, 16, 0, 317 2, 17, 4, 18, 0, 0 318}; 319 320static const char _use_syllable_machine_to_state_actions[] = { 321 0, 0, 0, 5, 0, 0, 0, 0, 322 0, 0, 0, 0, 0, 0, 0, 0, 323 0, 0, 0, 0, 0, 0, 0, 0, 324 0, 0, 0, 0, 0, 0, 0, 0, 325 0, 0, 0, 0, 0, 0, 0, 0, 326 0, 0, 0, 0, 0, 0, 0, 0, 327 0, 0, 0, 0, 0, 0, 0, 0, 328 0, 0, 0, 0, 0, 0, 0, 0, 329 0 330}; 331 332static const char _use_syllable_machine_from_state_actions[] = { 333 0, 0, 0, 6, 0, 0, 0, 0, 334 0, 0, 0, 0, 0, 0, 0, 0, 335 0, 0, 0, 0, 0, 0, 0, 0, 336 0, 0, 0, 0, 0, 0, 0, 0, 337 0, 0, 0, 0, 0, 0, 0, 0, 338 0, 0, 0, 0, 0, 0, 0, 0, 339 0, 0, 0, 0, 0, 0, 0, 0, 340 0, 0, 0, 0, 0, 0, 0, 0, 341 0 342}; 343 344static const short _use_syllable_machine_eof_trans[] = { 345 0, 1, 3, 0, 29, 31, 31, 52, 346 31, 31, 31, 31, 31, 31, 31, 31, 347 31, 31, 31, 31, 31, 31, 31, 31, 348 31, 53, 53, 52, 53, 53, 53, 53, 349 53, 53, 53, 53, 53, 53, 53, 53, 350 53, 70, 70, 74, 74, 74, 74, 74, 351 74, 74, 74, 74, 74, 74, 74, 74, 352 74, 74, 74, 74, 74, 74, 76, 76, 353 76 354}; 355 356static const int use_syllable_machine_start = 3; 357static const int use_syllable_machine_first_final = 3; 358static const int use_syllable_machine_error = 0; 359 360static const int use_syllable_machine_en_main = 3; 361 362 363#line 38 "hb-ot-shape-complex-use-machine.rl" 364 365 366 367#line 145 "hb-ot-shape-complex-use-machine.rl" 368 369 370#define found_syllable(syllable_type) \ 371 HB_STMT_START { \ 372 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \ 373 for (unsigned int i = last; i < p+1; i++) \ 374 info[i].syllable() = (syllable_serial << 4) | syllable_type; \ 375 last = p+1; \ 376 syllable_serial++; \ 377 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ 378 } HB_STMT_END 379 380static void 381find_syllables (hb_buffer_t *buffer) 382{ 383 unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED; 384 int cs; 385 hb_glyph_info_t *info = buffer->info; 386 387#line 388 "hb-ot-shape-complex-use-machine.hh" 388 { 389 cs = use_syllable_machine_start; 390 ts = 0; 391 te = 0; 392 act = 0; 393 } 394 395#line 166 "hb-ot-shape-complex-use-machine.rl" 396 397 398 p = 0; 399 pe = eof = buffer->len; 400 401 unsigned int last = 0; 402 unsigned int syllable_serial = 1; 403 404#line 405 "hb-ot-shape-complex-use-machine.hh" 405 { 406 int _slen; 407 int _trans; 408 const unsigned char *_keys; 409 const char *_inds; 410 if ( p == pe ) 411 goto _test_eof; 412 if ( cs == 0 ) 413 goto _out; 414_resume: 415 switch ( _use_syllable_machine_from_state_actions[cs] ) { 416 case 6: 417#line 1 "NONE" 418 {ts = p;} 419 break; 420#line 421 "hb-ot-shape-complex-use-machine.hh" 421 } 422 423 _keys = _use_syllable_machine_trans_keys + (cs<<1); 424 _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs]; 425 426 _slen = _use_syllable_machine_key_spans[cs]; 427 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) && 428 ( info[p].use_category()) <= _keys[1] ? 429 ( info[p].use_category()) - _keys[0] : _slen ]; 430 431_eof_trans: 432 cs = _use_syllable_machine_trans_targs[_trans]; 433 434 if ( _use_syllable_machine_trans_actions[_trans] == 0 ) 435 goto _again; 436 437 switch ( _use_syllable_machine_trans_actions[_trans] ) { 438 case 2: 439#line 1 "NONE" 440 {te = p+1;} 441 break; 442 case 9: 443#line 134 "hb-ot-shape-complex-use-machine.rl" 444 {te = p+1;{ found_syllable (independent_cluster); }} 445 break; 446 case 11: 447#line 136 "hb-ot-shape-complex-use-machine.rl" 448 {te = p+1;{ found_syllable (consonant_cluster); }} 449 break; 450 case 14: 451#line 137 "hb-ot-shape-complex-use-machine.rl" 452 {te = p+1;{ found_syllable (vowel_cluster); }} 453 break; 454 case 16: 455#line 138 "hb-ot-shape-complex-use-machine.rl" 456 {te = p+1;{ found_syllable (number_joiner_terminated_cluster); }} 457 break; 458 case 7: 459#line 141 "hb-ot-shape-complex-use-machine.rl" 460 {te = p+1;{ found_syllable (broken_cluster); }} 461 break; 462 case 8: 463#line 134 "hb-ot-shape-complex-use-machine.rl" 464 {te = p;p--;{ found_syllable (independent_cluster); }} 465 break; 466 case 12: 467#line 135 "hb-ot-shape-complex-use-machine.rl" 468 {te = p;p--;{ found_syllable (virama_terminated_cluster); }} 469 break; 470 case 10: 471#line 136 "hb-ot-shape-complex-use-machine.rl" 472 {te = p;p--;{ found_syllable (consonant_cluster); }} 473 break; 474 case 13: 475#line 137 "hb-ot-shape-complex-use-machine.rl" 476 {te = p;p--;{ found_syllable (vowel_cluster); }} 477 break; 478 case 15: 479#line 139 "hb-ot-shape-complex-use-machine.rl" 480 {te = p;p--;{ found_syllable (numeral_cluster); }} 481 break; 482 case 18: 483#line 140 "hb-ot-shape-complex-use-machine.rl" 484 {te = p;p--;{ found_syllable (symbol_cluster); }} 485 break; 486 case 17: 487#line 141 "hb-ot-shape-complex-use-machine.rl" 488 {te = p;p--;{ found_syllable (broken_cluster); }} 489 break; 490 case 1: 491#line 139 "hb-ot-shape-complex-use-machine.rl" 492 {{p = ((te))-1;}{ found_syllable (numeral_cluster); }} 493 break; 494 case 3: 495#line 1 "NONE" 496 { switch( act ) { 497 case 0: 498 {{cs = 0; goto _again;}} 499 break; 500 case 8: 501 {{p = ((te))-1;} found_syllable (broken_cluster); } 502 break; 503 } 504 } 505 break; 506 case 4: 507#line 1 "NONE" 508 {te = p+1;} 509#line 141 "hb-ot-shape-complex-use-machine.rl" 510 {act = 8;} 511 break; 512#line 513 "hb-ot-shape-complex-use-machine.hh" 513 } 514 515_again: 516 switch ( _use_syllable_machine_to_state_actions[cs] ) { 517 case 5: 518#line 1 "NONE" 519 {ts = 0;} 520#line 1 "NONE" 521 {act = 0;} 522 break; 523#line 524 "hb-ot-shape-complex-use-machine.hh" 524 } 525 526 if ( cs == 0 ) 527 goto _out; 528 if ( ++p != pe ) 529 goto _resume; 530 _test_eof: {} 531 if ( p == eof ) 532 { 533 if ( _use_syllable_machine_eof_trans[cs] > 0 ) { 534 _trans = _use_syllable_machine_eof_trans[cs] - 1; 535 goto _eof_trans; 536 } 537 } 538 539 _out: {} 540 } 541 542#line 175 "hb-ot-shape-complex-use-machine.rl" 543 544} 545 546#undef found_syllable 547 548#endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */ 549