[indic] Spell out INDIC_TABLE_ELEMENT_TYPE

This commit is contained in:
Behdad Esfahbod 2021-01-29 19:53:39 -07:00
parent 769c2b19a3
commit 676d1e6adf
5 changed files with 958 additions and 763 deletions

View File

@ -200,7 +200,7 @@ num = 0
offset = 0
starts = []
ends = []
print ("static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {")
print ("static const uint16_t indic_table[] = {")
for u in uu:
if u <= last:
continue
@ -234,7 +234,7 @@ occupancy = used * 100. / total
page_bits = 12
print ("}; /* Table items: %d; occupancy: %d%% */" % (offset, occupancy))
print ()
print ("INDIC_TABLE_ELEMENT_TYPE")
print ("uint16_t")
print ("hb_indic_get_categories (hb_codepoint_t u)")
print ("{")
print (" switch (u >> %d)" % page_bits)

View File

@ -82,7 +82,7 @@
#define _(S,M) INDIC_COMBINE_CATEGORIES (ISC_##S, IMC_##M)
static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
static const uint16_t indic_table[] = {
#define indic_offset_0x0028u 0
@ -404,7 +404,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
}; /* Table items: 1792; occupancy: 70% */
INDIC_TABLE_ELEMENT_TYPE
uint16_t
hb_indic_get_categories (hb_codepoint_t u)
{
switch (u >> 12)

View File

@ -37,8 +37,6 @@
#define indic_position() complex_var_u8_auxiliary() /* indic_position_t */
#define INDIC_TABLE_ELEMENT_TYPE uint16_t
/* Cateories used in the OpenType spec:
* https://docs.microsoft.com/en-us/typography/script-development/devanagari
*/
@ -194,7 +192,7 @@ enum indic_matra_category_t {
) \
)
HB_INTERNAL INDIC_TABLE_ELEMENT_TYPE
HB_INTERNAL uint16_t
hb_indic_get_categories (hb_codepoint_t u);

View File

@ -1,30 +1,29 @@
#line 1 "hb-ot-shape-complex-khmer-machine.rl"
/*
* Copyright © 2011,2012 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Google Author(s): Behdad Esfahbod
*/
* Copyright © 2011,2012 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Google Author(s): Behdad Esfahbod
*/
#ifndef HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH
#define HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH
@ -38,7 +37,7 @@ enum khmer_syllable_type_t {
};
#line 42 "hb-ot-shape-complex-khmer-machine.hh"
#line 41 "hb-ot-shape-complex-khmer-machine.hh"
#define khmer_syllable_machine_ex_C 1u
#define khmer_syllable_machine_ex_Coeng 14u
#define khmer_syllable_machine_ex_DOTTEDCIRCLE 12u
@ -56,180 +55,125 @@ enum khmer_syllable_type_t {
#define khmer_syllable_machine_ex_ZWNJ 5u
#line 60 "hb-ot-shape-complex-khmer-machine.hh"
#line 59 "hb-ot-shape-complex-khmer-machine.hh"
static const unsigned char _khmer_syllable_machine_trans_keys[] = {
5u, 26u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 16u, 5u, 21u, 5u, 26u, 5u, 21u,
5u, 26u, 5u, 21u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 16u, 5u, 21u, 5u, 26u,
5u, 21u, 5u, 26u, 5u, 21u, 5u, 26u, 1u, 29u, 5u, 29u, 5u, 29u, 5u, 29u,
22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 5u, 29u, 1u, 16u, 5u, 26u, 5u, 29u,
5u, 29u, 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 1u, 16u, 5u, 29u, 5u, 29u,
0
2u, 8u, 2u, 6u, 2u, 8u, 2u, 6u,
0u, 0u, 2u, 6u, 2u, 8u, 2u, 6u,
2u, 8u, 2u, 6u, 2u, 6u, 2u, 8u,
2u, 6u, 0u, 0u, 2u, 6u, 2u, 8u,
2u, 6u, 2u, 8u, 2u, 6u, 2u, 8u,
0u, 11u, 2u, 11u, 2u, 11u, 2u, 11u,
7u, 7u, 2u, 7u, 2u, 11u, 2u, 11u,
2u, 11u, 0u, 0u, 2u, 8u, 2u, 11u,
2u, 11u, 7u, 7u, 2u, 7u, 2u, 11u,
2u, 11u, 0u, 0u, 2u, 11u, 2u, 11u,
0u
};
static const char _khmer_syllable_machine_key_spans[] = {
22, 17, 22, 17, 16, 17, 22, 17,
22, 17, 17, 22, 17, 16, 17, 22,
17, 22, 17, 22, 29, 25, 25, 25,
1, 18, 25, 25, 25, 16, 22, 25,
25, 1, 18, 25, 25, 16, 25, 25
static const signed char _khmer_syllable_machine_char_class[] = {
0, 0, 1, 1, 2, 2, 1, 1,
1, 1, 3, 3, 1, 4, 1, 0,
1, 1, 1, 5, 6, 7, 1, 1,
1, 8, 9, 10, 11, 0
};
static const short _khmer_syllable_machine_index_offsets[] = {
0, 23, 41, 64, 82, 99, 117, 140,
158, 181, 199, 217, 240, 258, 275, 293,
316, 334, 357, 375, 398, 428, 454, 480,
506, 508, 527, 553, 579, 605, 622, 645,
671, 697, 699, 718, 744, 770, 787, 813
0, 7, 12, 19, 24, 25, 30, 37,
42, 49, 54, 59, 66, 71, 72, 77,
84, 89, 96, 101, 108, 120, 130, 140,
150, 151, 157, 167, 177, 187, 188, 195,
205, 215, 216, 222, 232, 242, 243, 253,
0
};
static const char _khmer_syllable_machine_indicies[] = {
1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2,
3, 0, 0, 0, 0, 4, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 3,
0, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 3, 0, 0, 0, 0, 4, 0,
5, 5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
4, 0, 6, 6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 6, 0, 7, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 8, 0, 9, 9, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 10, 0, 0,
0, 0, 4, 0, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 0, 11, 11,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 12, 0,
0, 0, 0, 4, 0, 11, 11, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 12, 0, 14,
14, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 15,
13, 14, 14, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 15, 16, 16, 16, 16, 17, 16,
18, 18, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
17, 16, 19, 19, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 19, 16, 20, 20, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 21, 16, 22, 22, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 23, 16, 16,
16, 16, 17, 16, 22, 22, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 23, 16, 24, 24,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 25, 16,
16, 16, 16, 17, 16, 24, 24, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 25, 16, 14,
14, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 26, 15,
16, 16, 16, 16, 17, 16, 28, 28,
27, 27, 29, 29, 27, 27, 27, 27,
2, 2, 27, 30, 27, 28, 27, 27,
27, 27, 15, 19, 27, 27, 27, 17,
23, 25, 21, 27, 32, 32, 31, 31,
31, 31, 31, 31, 31, 33, 31, 31,
31, 31, 31, 2, 3, 6, 31, 31,
31, 4, 10, 12, 8, 31, 34, 34,
31, 31, 31, 31, 31, 31, 31, 35,
31, 31, 31, 31, 31, 31, 3, 6,
31, 31, 31, 4, 10, 12, 8, 31,
5, 5, 31, 31, 31, 31, 31, 31,
31, 35, 31, 31, 31, 31, 31, 31,
4, 6, 31, 31, 31, 31, 31, 31,
8, 31, 6, 31, 7, 7, 31, 31,
31, 31, 31, 31, 31, 35, 31, 31,
31, 31, 31, 31, 8, 6, 31, 36,
36, 31, 31, 31, 31, 31, 31, 31,
35, 31, 31, 31, 31, 31, 31, 10,
6, 31, 31, 31, 4, 31, 31, 8,
31, 37, 37, 31, 31, 31, 31, 31,
31, 31, 35, 31, 31, 31, 31, 31,
31, 12, 6, 31, 31, 31, 4, 10,
31, 8, 31, 34, 34, 31, 31, 31,
31, 31, 31, 31, 33, 31, 31, 31,
31, 31, 31, 3, 6, 31, 31, 31,
4, 10, 12, 8, 31, 28, 28, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 28, 31, 14, 14,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 15, 38,
38, 38, 38, 17, 38, 40, 40, 39,
39, 39, 39, 39, 39, 39, 41, 39,
39, 39, 39, 39, 39, 15, 19, 39,
39, 39, 17, 23, 25, 21, 39, 18,
18, 39, 39, 39, 39, 39, 39, 39,
41, 39, 39, 39, 39, 39, 39, 17,
19, 39, 39, 39, 39, 39, 39, 21,
39, 19, 39, 20, 20, 39, 39, 39,
39, 39, 39, 39, 41, 39, 39, 39,
39, 39, 39, 21, 19, 39, 42, 42,
39, 39, 39, 39, 39, 39, 39, 41,
39, 39, 39, 39, 39, 39, 23, 19,
39, 39, 39, 17, 39, 39, 21, 39,
43, 43, 39, 39, 39, 39, 39, 39,
39, 41, 39, 39, 39, 39, 39, 39,
25, 19, 39, 39, 39, 17, 23, 39,
21, 39, 44, 44, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39,
39, 44, 39, 45, 45, 39, 39, 39,
39, 39, 39, 39, 30, 39, 39, 39,
39, 39, 26, 15, 19, 39, 39, 39,
17, 23, 25, 21, 39, 40, 40, 39,
39, 39, 39, 39, 39, 39, 30, 39,
39, 39, 39, 39, 39, 15, 19, 39,
39, 39, 17, 23, 25, 21, 39, 0
static const signed char _khmer_syllable_machine_indicies[] = {
1, 0, 0, 2, 3, 0, 4, 1,
0, 0, 0, 3, 1, 0, 0, 0,
3, 0, 4, 5, 0, 0, 0, 4,
6, 7, 0, 0, 0, 8, 9, 0,
0, 0, 10, 0, 4, 9, 0, 0,
0, 10, 11, 0, 0, 0, 12, 0,
4, 11, 0, 0, 0, 12, 14, 13,
13, 13, 15, 14, 16, 16, 16, 15,
16, 17, 18, 16, 16, 16, 17, 19,
20, 16, 16, 16, 21, 22, 16, 16,
16, 23, 16, 17, 22, 16, 16, 16,
23, 24, 16, 16, 16, 25, 16, 17,
24, 16, 16, 16, 25, 14, 16, 16,
26, 15, 16, 17, 29, 28, 30, 2,
31, 28, 15, 19, 17, 23, 25, 21,
33, 32, 34, 2, 3, 6, 4, 10,
12, 8, 35, 32, 36, 32, 3, 6,
4, 10, 12, 8, 5, 32, 36, 32,
4, 6, 32, 32, 32, 8, 6, 7,
32, 36, 32, 8, 6, 37, 32, 36,
32, 10, 6, 4, 32, 32, 8, 38,
32, 36, 32, 12, 6, 4, 10, 32,
8, 35, 32, 34, 32, 3, 6, 4,
10, 12, 8, 29, 14, 39, 39, 39,
15, 39, 17, 41, 40, 42, 40, 15,
19, 17, 23, 25, 21, 18, 40, 42,
40, 17, 19, 40, 40, 40, 21, 19,
20, 40, 42, 40, 21, 19, 43, 40,
42, 40, 23, 19, 17, 40, 40, 21,
44, 40, 42, 40, 25, 19, 17, 23,
40, 21, 45, 46, 40, 31, 26, 15,
19, 17, 23, 25, 21, 41, 40, 31,
40, 15, 19, 17, 23, 25, 21, 0
};
static const char _khmer_syllable_machine_trans_targs[] = {
static const signed char _khmer_syllable_machine_index_defaults[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 13, 16, 16, 16, 16, 16,
16, 16, 16, 16, 28, 32, 32, 32,
32, 32, 32, 32, 32, 32, 39, 40,
40, 40, 40, 40, 40, 40, 40, 40,
0
};
static const signed char _khmer_syllable_machine_cond_targs[] = {
20, 1, 28, 22, 23, 3, 24, 5,
25, 7, 26, 9, 27, 20, 10, 31,
20, 32, 12, 33, 14, 34, 16, 35,
18, 36, 39, 20, 21, 30, 37, 20,
0, 29, 2, 4, 6, 8, 20, 20,
11, 13, 15, 17, 38, 19
18, 36, 39, 20, 20, 21, 30, 37,
20, 0, 29, 2, 4, 6, 8, 20,
20, 11, 13, 15, 17, 38, 19, 0
};
static const char _khmer_syllable_machine_trans_actions[] = {
static const signed char _khmer_syllable_machine_cond_actions[] = {
1, 0, 2, 2, 2, 0, 0, 0,
2, 0, 2, 0, 2, 3, 0, 4,
5, 2, 0, 0, 0, 2, 0, 2,
0, 2, 4, 8, 2, 9, 0, 10,
0, 0, 0, 0, 0, 0, 11, 12,
0, 0, 0, 0, 4, 0
0, 2, 4, 0, 8, 2, 9, 0,
10, 0, 0, 0, 0, 0, 0, 11,
12, 0, 0, 0, 0, 4, 0, 0
};
static const char _khmer_syllable_machine_to_state_actions[] = {
static const signed char _khmer_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0
};
static const char _khmer_syllable_machine_from_state_actions[] = {
static const signed char _khmer_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0
};
static const unsigned char _khmer_syllable_machine_eof_trans[] = {
static const signed char _khmer_syllable_machine_eof_trans[] = {
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 14, 17, 17, 17, 17, 17,
17, 17, 17, 17, 0, 32, 32, 32,
32, 32, 32, 32, 32, 32, 39, 40,
40, 40, 40, 40, 40, 40, 40, 40
17, 17, 17, 17, 28, 33, 33, 33,
33, 33, 33, 33, 33, 33, 40, 41,
41, 41, 41, 41, 41, 41, 41, 41,
0
};
static const int khmer_syllable_machine_start = 20;
@ -247,7 +191,7 @@ static const int khmer_syllable_machine_en_main = 20;
#define found_syllable(syllable_type) \
HB_STMT_START { \
HB_STMT_START { \
if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
for (unsigned int i = ts; i < te; i++) \
info[i].syllable() = (syllable_serial << 4) | syllable_type; \
@ -262,9 +206,9 @@ find_syllables_khmer (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
#line 266 "hb-ot-shape-complex-khmer-machine.hh"
#line 210 "hb-ot-shape-complex-khmer-machine.hh"
{
cs = khmer_syllable_machine_start;
cs = (int)khmer_syllable_machine_start;
ts = 0;
te = 0;
act = 0;
@ -278,113 +222,228 @@ find_syllables_khmer (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
#line 282 "hb-ot-shape-complex-khmer-machine.hh"
#line 226 "hb-ot-shape-complex-khmer-machine.hh"
{
int _slen;
int _trans;
const unsigned char *_keys;
const char *_inds;
if ( p == pe )
goto _test_eof;
_resume:
unsigned int _trans = 0;
const unsigned char * _keys;
const signed char * _inds;
int _ic;
_resume: {}
if ( p == pe && p != eof )
goto _out;
switch ( _khmer_syllable_machine_from_state_actions[cs] ) {
case 7:
#line 1 "NONE"
{ts = p;}
break;
#line 296 "hb-ot-shape-complex-khmer-machine.hh"
}
_keys = _khmer_syllable_machine_trans_keys + (cs<<1);
_inds = _khmer_syllable_machine_indicies + _khmer_syllable_machine_index_offsets[cs];
_slen = _khmer_syllable_machine_key_spans[cs];
_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].khmer_category()) &&
( info[p].khmer_category()) <= _keys[1] ?
( info[p].khmer_category()) - _keys[0] : _slen ];
_eof_trans:
cs = _khmer_syllable_machine_trans_targs[_trans];
if ( _khmer_syllable_machine_trans_actions[_trans] == 0 )
goto _again;
switch ( _khmer_syllable_machine_trans_actions[_trans] ) {
case 2:
#line 1 "NONE"
{te = p+1;}
break;
case 8:
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
{te = p+1;{ found_syllable (khmer_non_khmer_cluster); }}
break;
case 10:
#line 80 "hb-ot-shape-complex-khmer-machine.rl"
{te = p;p--;{ found_syllable (khmer_consonant_syllable); }}
break;
case 12:
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
{te = p;p--;{ found_syllable (khmer_broken_cluster); }}
break;
case 11:
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
{te = p;p--;{ found_syllable (khmer_non_khmer_cluster); }}
break;
case 1:
#line 80 "hb-ot-shape-complex-khmer-machine.rl"
{{p = ((te))-1;}{ found_syllable (khmer_consonant_syllable); }}
break;
case 5:
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
{{p = ((te))-1;}{ found_syllable (khmer_broken_cluster); }}
break;
case 3:
#line 1 "NONE"
{ switch( act ) {
case 2:
{{p = ((te))-1;} found_syllable (khmer_broken_cluster); }
break;
case 3:
{{p = ((te))-1;} found_syllable (khmer_non_khmer_cluster); }
break;
}
}
break;
case 4:
#line 1 "NONE"
{te = p+1;}
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
{act = 2;}
break;
case 9:
#line 1 "NONE"
{te = p+1;}
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
{act = 3;}
break;
#line 366 "hb-ot-shape-complex-khmer-machine.hh"
}
_again:
switch ( _khmer_syllable_machine_to_state_actions[cs] ) {
case 6:
#line 1 "NONE"
{ts = 0;}
break;
#line 375 "hb-ot-shape-complex-khmer-machine.hh"
}
if ( ++p != pe )
goto _resume;
_test_eof: {}
if ( p == eof )
case 7: {
{
if ( _khmer_syllable_machine_eof_trans[cs] > 0 ) {
_trans = _khmer_syllable_machine_eof_trans[cs] - 1;
goto _eof_trans;
#line 1 "NONE"
{ts = p;}}
#line 241 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
}
if ( p == eof ) {
if ( _khmer_syllable_machine_eof_trans[cs] > 0 ) {
_trans = (unsigned int)_khmer_syllable_machine_eof_trans[cs] - 1;
}
}
else {
_keys = ( _khmer_syllable_machine_trans_keys + ((cs<<1)));
_inds = ( _khmer_syllable_machine_indicies + (_khmer_syllable_machine_index_offsets[cs]));
if ( (info[p].khmer_category()) <= 29 && (info[p].khmer_category()) >= 1 ) {
_ic = (int)_khmer_syllable_machine_char_class[(int)(info[p].khmer_category()) - 1];
if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) )
_trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) ));
else
_trans = (unsigned int)_khmer_syllable_machine_index_defaults[cs];
}
else {
_trans = (unsigned int)_khmer_syllable_machine_index_defaults[cs];
}
}
cs = (int)_khmer_syllable_machine_cond_targs[_trans];
if ( _khmer_syllable_machine_cond_actions[_trans] != 0 ) {
switch ( _khmer_syllable_machine_cond_actions[_trans] ) {
case 2: {
{
#line 1 "NONE"
{te = p+1;}}
#line 279 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 8: {
{
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
{te = p+1;{
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_non_khmer_cluster); }
}}
#line 292 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 10: {
{
#line 80 "hb-ot-shape-complex-khmer-machine.rl"
{te = p;p = p - 1;{
#line 80 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_consonant_syllable); }
}}
#line 305 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 12: {
{
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
{te = p;p = p - 1;{
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_broken_cluster); }
}}
#line 318 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 11: {
{
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
{te = p;p = p - 1;{
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_non_khmer_cluster); }
}}
#line 331 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 1: {
{
#line 80 "hb-ot-shape-complex-khmer-machine.rl"
{p = ((te))-1;
{
#line 80 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_consonant_syllable); }
}}
#line 345 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 5: {
{
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
{p = ((te))-1;
{
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_broken_cluster); }
}}
#line 359 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 3: {
{
#line 1 "NONE"
{switch( act ) {
case 2: {
p = ((te))-1;
{
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_broken_cluster); }
break;
}
case 3: {
p = ((te))-1;
{
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
found_syllable (khmer_non_khmer_cluster); }
break;
}
}}
}
#line 385 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 4: {
{
#line 1 "NONE"
{te = p+1;}}
#line 395 "hb-ot-shape-complex-khmer-machine.hh"
{
#line 81 "hb-ot-shape-complex-khmer-machine.rl"
{act = 2;}}
#line 401 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
case 9: {
{
#line 1 "NONE"
{te = p+1;}}
#line 411 "hb-ot-shape-complex-khmer-machine.hh"
{
#line 82 "hb-ot-shape-complex-khmer-machine.rl"
{act = 3;}}
#line 417 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
}
}
if ( p == eof ) {
if ( cs >= 20 )
goto _out;
}
else {
switch ( _khmer_syllable_machine_to_state_actions[cs] ) {
case 6: {
{
#line 1 "NONE"
{ts = 0;}}
#line 437 "hb-ot-shape-complex-khmer-machine.hh"
break;
}
}
p += 1;
goto _resume;
}
_out: {}
}
#line 114 "hb-ot-shape-complex-khmer-machine.rl"

View File

@ -1,32 +1,31 @@
#line 1 "hb-ot-shape-complex-use-machine.rl"
/*
* Copyright © 2015 Mozilla Foundation.
* Copyright © 2015 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Mozilla Author(s): Jonathan Kew
* Google Author(s): Behdad Esfahbod
*/
* Copyright © 2015 Mozilla Foundation.
* Copyright © 2015 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Mozilla Author(s): Jonathan Kew
* Google Author(s): Behdad Esfahbod
*/
#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
@ -54,7 +53,7 @@ enum use_syllable_type_t {
};
#line 58 "hb-ot-shape-complex-use-machine.hh"
#line 57 "hb-ot-shape-complex-use-machine.hh"
#define use_syllable_machine_ex_B 1u
#define use_syllable_machine_ex_CMAbv 31u
#define use_syllable_machine_ex_CMBlw 32u
@ -96,236 +95,224 @@ enum use_syllable_type_t {
#define use_syllable_machine_ex_ZWNJ 14u
#line 100 "hb-ot-shape-complex-use-machine.hh"
#line 99 "hb-ot-shape-complex-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
1u, 1u, 1u, 1u, 0u, 51u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u,
22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u,
24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
22u, 48u, 11u, 48u, 1u, 48u, 1u, 1u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u,
41u, 42u, 42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
1u, 1u, 1u, 1u, 0u, 37u, 5u, 34u,
5u, 34u, 1u, 1u, 10u, 34u, 11u, 34u,
12u, 33u, 13u, 33u, 14u, 33u, 31u, 32u,
32u, 32u, 12u, 34u, 12u, 34u, 12u, 34u,
1u, 1u, 12u, 34u, 11u, 34u, 11u, 34u,
11u, 34u, 10u, 34u, 10u, 34u, 10u, 34u,
5u, 34u, 1u, 34u, 7u, 7u, 3u, 3u,
5u, 34u, 27u, 28u, 28u, 28u, 5u, 34u,
10u, 34u, 11u, 34u, 12u, 33u, 13u, 33u,
14u, 33u, 31u, 32u, 32u, 32u, 12u, 34u,
12u, 34u, 12u, 34u, 12u, 34u, 11u, 34u,
11u, 34u, 11u, 34u, 10u, 34u, 10u, 34u,
10u, 34u, 5u, 34u, 1u, 34u, 1u, 1u,
3u, 3u, 7u, 7u, 1u, 34u, 5u, 34u,
27u, 28u, 28u, 28u, 1u, 4u, 36u, 38u,
35u, 38u, 35u, 37u, 0u
};
static const char _use_syllable_machine_key_spans[] = {
1, 1, 52, 38, 38, 1, 27, 26,
24, 23, 22, 2, 1, 25, 25, 25,
1, 25, 26, 26, 26, 27, 27, 27,
38, 48, 1, 1, 38, 2, 1, 38,
27, 26, 24, 23, 22, 2, 1, 25,
25, 25, 25, 26, 26, 26, 27, 27,
27, 38, 48, 1, 1, 1, 48, 38,
2, 1, 5, 3, 4, 3
static const signed char _use_syllable_machine_char_class[] = {
0, 1, 2, 2, 3, 4, 2, 2,
2, 2, 2, 5, 6, 7, 2, 2,
2, 2, 8, 9, 2, 2, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 2, 24, 25, 26,
2, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 0
};
static const short _use_syllable_machine_index_offsets[] = {
0, 2, 4, 57, 96, 135, 137, 165,
192, 217, 241, 264, 267, 269, 295, 321,
347, 349, 375, 402, 429, 456, 484, 512,
540, 579, 628, 630, 632, 671, 674, 676,
715, 743, 770, 795, 819, 842, 845, 847,
873, 899, 925, 951, 978, 1005, 1032, 1060,
1088, 1116, 1155, 1204, 1206, 1208, 1210, 1259,
1298, 1301, 1303, 1309, 1313, 1318
0, 1, 2, 40, 70, 100, 101, 126,
150, 172, 193, 213, 215, 216, 239, 262,
285, 286, 309, 333, 357, 381, 406, 431,
456, 486, 520, 521, 522, 552, 554, 555,
585, 610, 634, 656, 677, 697, 699, 700,
723, 746, 769, 792, 816, 840, 864, 889,
914, 939, 969, 1003, 1004, 1005, 1006, 1040,
1070, 1072, 1073, 1077, 1080, 1084, 0
};
static const char _use_syllable_machine_indicies[] = {
1, 0, 2, 0, 3, 4, 5, 5,
6, 7, 5, 5, 5, 5, 5, 1,
8, 9, 5, 5, 5, 5, 10, 11,
5, 5, 12, 13, 14, 15, 16, 17,
18, 12, 19, 20, 21, 22, 23, 24,
5, 25, 26, 27, 5, 28, 29, 30,
31, 32, 33, 34, 8, 35, 5, 36,
5, 38, 39, 37, 37, 37, 37, 37,
37, 37, 37, 37, 40, 41, 42, 43,
44, 45, 46, 40, 47, 4, 48, 49,
50, 51, 37, 52, 53, 54, 37, 37,
37, 37, 55, 56, 57, 58, 39, 37,
38, 39, 37, 37, 37, 37, 37, 37,
37, 37, 37, 40, 41, 42, 43, 44,
45, 46, 40, 47, 48, 48, 49, 50,
51, 37, 52, 53, 54, 37, 37, 37,
37, 55, 56, 57, 58, 39, 37, 38,
59, 40, 41, 42, 43, 44, 37, 37,
37, 37, 37, 37, 49, 50, 51, 37,
52, 53, 54, 37, 37, 37, 37, 41,
56, 57, 58, 60, 37, 41, 42, 43,
44, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 52, 53, 54, 37, 37,
37, 37, 37, 56, 57, 58, 60, 37,
42, 43, 44, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 56, 57, 58,
37, 43, 44, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 56, 57, 58,
37, 44, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 56, 57, 58, 37,
56, 57, 37, 57, 37, 42, 43, 44,
37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 52, 53, 54, 37, 37, 37,
37, 37, 56, 57, 58, 60, 37, 42,
43, 44, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 53, 54, 37,
37, 37, 37, 37, 56, 57, 58, 60,
37, 42, 43, 44, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37,
54, 37, 37, 37, 37, 37, 56, 57,
58, 60, 37, 62, 61, 42, 43, 44,
37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 56, 57, 58, 60, 37, 41,
42, 43, 44, 37, 37, 37, 37, 37,
37, 49, 50, 51, 37, 52, 53, 54,
37, 37, 37, 37, 41, 56, 57, 58,
60, 37, 41, 42, 43, 44, 37, 37,
37, 37, 37, 37, 37, 50, 51, 37,
52, 53, 54, 37, 37, 37, 37, 41,
56, 57, 58, 60, 37, 41, 42, 43,
44, 37, 37, 37, 37, 37, 37, 37,
37, 51, 37, 52, 53, 54, 37, 37,
37, 37, 41, 56, 57, 58, 60, 37,
40, 41, 42, 43, 44, 37, 46, 40,
37, 37, 37, 49, 50, 51, 37, 52,
53, 54, 37, 37, 37, 37, 41, 56,
57, 58, 60, 37, 40, 41, 42, 43,
44, 37, 37, 40, 37, 37, 37, 49,
50, 51, 37, 52, 53, 54, 37, 37,
37, 37, 41, 56, 57, 58, 60, 37,
40, 41, 42, 43, 44, 45, 46, 40,
37, 37, 37, 49, 50, 51, 37, 52,
53, 54, 37, 37, 37, 37, 41, 56,
57, 58, 60, 37, 38, 39, 37, 37,
37, 37, 37, 37, 37, 37, 37, 40,
41, 42, 43, 44, 45, 46, 40, 47,
37, 48, 49, 50, 51, 37, 52, 53,
54, 37, 37, 37, 37, 55, 56, 57,
58, 39, 37, 38, 59, 59, 59, 59,
59, 59, 59, 59, 59, 59, 59, 59,
59, 59, 59, 59, 59, 59, 59, 59,
59, 41, 42, 43, 44, 59, 59, 59,
59, 59, 59, 59, 59, 59, 59, 52,
53, 54, 59, 59, 59, 59, 59, 56,
57, 58, 60, 59, 64, 63, 6, 65,
38, 39, 37, 37, 37, 37, 37, 37,
37, 37, 37, 40, 41, 42, 43, 44,
45, 46, 40, 47, 4, 48, 49, 50,
51, 37, 52, 53, 54, 37, 11, 66,
37, 55, 56, 57, 58, 39, 37, 11,
66, 67, 66, 67, 1, 69, 68, 68,
68, 68, 68, 68, 68, 68, 68, 12,
13, 14, 15, 16, 17, 18, 12, 19,
21, 21, 22, 23, 24, 68, 25, 26,
27, 68, 68, 68, 68, 31, 32, 33,
34, 69, 68, 12, 13, 14, 15, 16,
68, 68, 68, 68, 68, 68, 22, 23,
24, 68, 25, 26, 27, 68, 68, 68,
68, 13, 32, 33, 34, 70, 68, 13,
14, 15, 16, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 25, 26, 27,
68, 68, 68, 68, 68, 32, 33, 34,
70, 68, 14, 15, 16, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 32,
33, 34, 68, 15, 16, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 32,
33, 34, 68, 16, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 32, 33,
34, 68, 32, 33, 68, 33, 68, 14,
15, 16, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 25, 26, 27, 68,
68, 68, 68, 68, 32, 33, 34, 70,
68, 14, 15, 16, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 26,
27, 68, 68, 68, 68, 68, 32, 33,
34, 70, 68, 14, 15, 16, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 27, 68, 68, 68, 68, 68,
32, 33, 34, 70, 68, 14, 15, 16,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 32, 33, 34, 70, 68, 13,
14, 15, 16, 68, 68, 68, 68, 68,
68, 22, 23, 24, 68, 25, 26, 27,
68, 68, 68, 68, 13, 32, 33, 34,
70, 68, 13, 14, 15, 16, 68, 68,
68, 68, 68, 68, 68, 23, 24, 68,
25, 26, 27, 68, 68, 68, 68, 13,
32, 33, 34, 70, 68, 13, 14, 15,
16, 68, 68, 68, 68, 68, 68, 68,
68, 24, 68, 25, 26, 27, 68, 68,
68, 68, 13, 32, 33, 34, 70, 68,
12, 13, 14, 15, 16, 68, 18, 12,
68, 68, 68, 22, 23, 24, 68, 25,
26, 27, 68, 68, 68, 68, 13, 32,
33, 34, 70, 68, 12, 13, 14, 15,
16, 68, 68, 12, 68, 68, 68, 22,
23, 24, 68, 25, 26, 27, 68, 68,
68, 68, 13, 32, 33, 34, 70, 68,
12, 13, 14, 15, 16, 17, 18, 12,
68, 68, 68, 22, 23, 24, 68, 25,
26, 27, 68, 68, 68, 68, 13, 32,
33, 34, 70, 68, 1, 69, 68, 68,
68, 68, 68, 68, 68, 68, 68, 12,
13, 14, 15, 16, 17, 18, 12, 19,
68, 21, 22, 23, 24, 68, 25, 26,
27, 68, 68, 68, 68, 31, 32, 33,
34, 69, 68, 1, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 13, 14, 15, 16, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 25,
26, 27, 68, 68, 68, 68, 68, 32,
33, 34, 70, 68, 1, 71, 72, 68,
9, 68, 4, 68, 68, 68, 4, 68,
68, 68, 68, 68, 1, 69, 9, 68,
68, 68, 68, 68, 68, 68, 68, 12,
13, 14, 15, 16, 17, 18, 12, 19,
20, 21, 22, 23, 24, 68, 25, 26,
27, 68, 28, 29, 68, 31, 32, 33,
34, 69, 68, 1, 69, 68, 68, 68,
68, 68, 68, 68, 68, 68, 12, 13,
14, 15, 16, 17, 18, 12, 19, 20,
21, 22, 23, 24, 68, 25, 26, 27,
68, 68, 68, 68, 31, 32, 33, 34,
69, 68, 28, 29, 68, 29, 68, 4,
71, 71, 71, 4, 71, 74, 73, 35,
73, 35, 74, 73, 74, 73, 35, 73,
36, 73, 0
static const signed char _use_syllable_machine_indicies[] = {
1, 2, 4, 5, 6, 7, 8, 1,
9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 13, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 9, 36, 6, 37,
39, 40, 38, 38, 38, 41, 42, 43,
44, 45, 46, 47, 41, 48, 5, 49,
50, 51, 52, 53, 54, 55, 38, 38,
38, 56, 57, 58, 59, 40, 39, 40,
38, 38, 38, 41, 42, 43, 44, 45,
46, 47, 41, 48, 49, 49, 50, 51,
52, 53, 54, 55, 38, 38, 38, 56,
57, 58, 59, 40, 39, 41, 42, 43,
44, 45, 38, 38, 38, 38, 38, 38,
50, 51, 52, 53, 54, 55, 38, 38,
38, 42, 57, 58, 59, 61, 42, 43,
44, 45, 38, 38, 38, 38, 38, 38,
38, 38, 38, 53, 54, 55, 38, 38,
38, 38, 57, 58, 59, 61, 43, 44,
45, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 57, 58, 59, 44, 45, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 57, 58,
59, 45, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 57, 58, 59, 57, 58, 58,
43, 44, 45, 38, 38, 38, 38, 38,
38, 38, 38, 38, 53, 54, 55, 38,
38, 38, 38, 57, 58, 59, 61, 43,
44, 45, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 54, 55, 38, 38,
38, 38, 57, 58, 59, 61, 43, 44,
45, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 55, 38, 38, 38,
38, 57, 58, 59, 61, 63, 43, 44,
45, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 57, 58, 59, 61, 42, 43, 44,
45, 38, 38, 38, 38, 38, 38, 50,
51, 52, 53, 54, 55, 38, 38, 38,
42, 57, 58, 59, 61, 42, 43, 44,
45, 38, 38, 38, 38, 38, 38, 38,
51, 52, 53, 54, 55, 38, 38, 38,
42, 57, 58, 59, 61, 42, 43, 44,
45, 38, 38, 38, 38, 38, 38, 38,
38, 52, 53, 54, 55, 38, 38, 38,
42, 57, 58, 59, 61, 41, 42, 43,
44, 45, 38, 47, 41, 38, 38, 38,
50, 51, 52, 53, 54, 55, 38, 38,
38, 42, 57, 58, 59, 61, 41, 42,
43, 44, 45, 38, 38, 41, 38, 38,
38, 50, 51, 52, 53, 54, 55, 38,
38, 38, 42, 57, 58, 59, 61, 41,
42, 43, 44, 45, 46, 47, 41, 38,
38, 38, 50, 51, 52, 53, 54, 55,
38, 38, 38, 42, 57, 58, 59, 61,
39, 40, 38, 38, 38, 41, 42, 43,
44, 45, 46, 47, 41, 48, 38, 49,
50, 51, 52, 53, 54, 55, 38, 38,
38, 56, 57, 58, 59, 40, 39, 60,
60, 60, 60, 60, 60, 60, 60, 60,
42, 43, 44, 45, 60, 60, 60, 60,
60, 60, 60, 60, 60, 53, 54, 55,
60, 60, 60, 60, 57, 58, 59, 61,
65, 7, 39, 40, 38, 38, 38, 41,
42, 43, 44, 45, 46, 47, 41, 48,
5, 49, 50, 51, 52, 53, 54, 55,
12, 67, 38, 56, 57, 58, 59, 40,
12, 67, 67, 1, 70, 69, 69, 69,
13, 14, 15, 16, 17, 18, 19, 13,
20, 22, 22, 23, 24, 25, 26, 27,
28, 69, 69, 69, 32, 33, 34, 35,
70, 13, 14, 15, 16, 17, 69, 69,
69, 69, 69, 69, 23, 24, 25, 26,
27, 28, 69, 69, 69, 14, 33, 34,
35, 71, 14, 15, 16, 17, 69, 69,
69, 69, 69, 69, 69, 69, 69, 26,
27, 28, 69, 69, 69, 69, 33, 34,
35, 71, 15, 16, 17, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 33, 34, 35,
16, 17, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 33, 34, 35, 17, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 33, 34,
35, 33, 34, 34, 15, 16, 17, 69,
69, 69, 69, 69, 69, 69, 69, 69,
26, 27, 28, 69, 69, 69, 69, 33,
34, 35, 71, 15, 16, 17, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
27, 28, 69, 69, 69, 69, 33, 34,
35, 71, 15, 16, 17, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
28, 69, 69, 69, 69, 33, 34, 35,
71, 15, 16, 17, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 33, 34, 35, 71,
14, 15, 16, 17, 69, 69, 69, 69,
69, 69, 23, 24, 25, 26, 27, 28,
69, 69, 69, 14, 33, 34, 35, 71,
14, 15, 16, 17, 69, 69, 69, 69,
69, 69, 69, 24, 25, 26, 27, 28,
69, 69, 69, 14, 33, 34, 35, 71,
14, 15, 16, 17, 69, 69, 69, 69,
69, 69, 69, 69, 25, 26, 27, 28,
69, 69, 69, 14, 33, 34, 35, 71,
13, 14, 15, 16, 17, 69, 19, 13,
69, 69, 69, 23, 24, 25, 26, 27,
28, 69, 69, 69, 14, 33, 34, 35,
71, 13, 14, 15, 16, 17, 69, 69,
13, 69, 69, 69, 23, 24, 25, 26,
27, 28, 69, 69, 69, 14, 33, 34,
35, 71, 13, 14, 15, 16, 17, 18,
19, 13, 69, 69, 69, 23, 24, 25,
26, 27, 28, 69, 69, 69, 14, 33,
34, 35, 71, 1, 70, 69, 69, 69,
13, 14, 15, 16, 17, 18, 19, 13,
20, 69, 22, 23, 24, 25, 26, 27,
28, 69, 69, 69, 32, 33, 34, 35,
70, 1, 69, 69, 69, 69, 69, 69,
69, 69, 69, 14, 15, 16, 17, 69,
69, 69, 69, 69, 69, 69, 69, 69,
26, 27, 28, 69, 69, 69, 69, 33,
34, 35, 71, 1, 73, 10, 5, 69,
69, 5, 1, 70, 10, 69, 69, 13,
14, 15, 16, 17, 18, 19, 13, 20,
21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 69, 32, 33, 34, 35, 70,
1, 70, 69, 69, 69, 13, 14, 15,
16, 17, 18, 19, 13, 20, 21, 22,
23, 24, 25, 26, 27, 28, 69, 69,
69, 32, 33, 34, 35, 70, 29, 30,
30, 5, 72, 72, 5, 75, 74, 36,
36, 75, 74, 75, 36, 74, 37, 0
};
static const char _use_syllable_machine_trans_targs[] = {
2, 31, 42, 2, 3, 2, 26, 28,
51, 52, 54, 29, 32, 33, 34, 35,
36, 46, 47, 48, 55, 49, 43, 44,
45, 39, 40, 41, 56, 57, 58, 50,
37, 38, 2, 59, 61, 2, 4, 5,
6, 7, 8, 9, 10, 21, 22, 23,
24, 18, 19, 20, 13, 14, 15, 25,
11, 12, 2, 2, 16, 2, 17, 2,
27, 2, 30, 2, 2, 0, 1, 2,
53, 2, 60
static const signed char _use_syllable_machine_index_defaults[] = {
0, 0, 6, 38, 38, 60, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
62, 38, 38, 38, 38, 38, 38, 38,
38, 60, 64, 66, 38, 68, 68, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 72, 69, 69, 69, 69,
69, 69, 72, 74, 74, 74, 0
};
static const char _use_syllable_machine_trans_actions[] = {
1, 2, 2, 5, 0, 6, 0, 0,
0, 0, 2, 0, 2, 2, 0, 0,
0, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 0, 0, 0, 2,
0, 0, 7, 0, 0, 8, 0, 0,
static const signed char _use_syllable_machine_cond_targs[] = {
2, 31, 42, 2, 2, 3, 2, 26,
28, 51, 52, 54, 29, 32, 33, 34,
35, 36, 46, 47, 48, 55, 49, 43,
44, 45, 39, 40, 41, 56, 57, 58,
50, 37, 38, 2, 59, 61, 2, 4,
5, 6, 7, 8, 9, 10, 21, 22,
23, 24, 18, 19, 20, 13, 14, 15,
25, 11, 12, 2, 2, 16, 2, 17,
2, 27, 2, 30, 2, 2, 0, 1,
2, 53, 2, 60, 0
};
static const signed char _use_syllable_machine_cond_actions[] = {
1, 2, 2, 0, 5, 0, 6, 0,
0, 0, 0, 2, 0, 2, 2, 0,
0, 0, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 0, 0, 0,
2, 0, 0, 7, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 9, 10, 0, 11, 0, 12,
0, 13, 0, 14, 15, 0, 0, 16,
0, 17, 0
0, 0, 0, 9, 10, 0, 11, 0,
12, 0, 13, 0, 14, 15, 0, 0,
16, 0, 17, 0, 0
};
static const char _use_syllable_machine_to_state_actions[] = {
static const signed char _use_syllable_machine_to_state_actions[] = {
0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@ -333,10 +320,10 @@ static const char _use_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
};
static const char _use_syllable_machine_from_state_actions[] = {
static const signed char _use_syllable_machine_from_state_actions[] = {
0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@ -344,18 +331,18 @@ static const char _use_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
};
static const short _use_syllable_machine_eof_trans[] = {
1, 1, 0, 38, 38, 60, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
62, 38, 38, 38, 38, 38, 38, 38,
38, 60, 64, 66, 38, 68, 68, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 72, 69, 69, 69, 69,
69, 69, 72, 74, 74, 74
static const signed char _use_syllable_machine_eof_trans[] = {
1, 1, 4, 39, 39, 61, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39,
63, 39, 39, 39, 39, 39, 39, 39,
39, 61, 65, 67, 39, 69, 69, 70,
70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 73, 70, 70, 70, 70,
70, 70, 73, 75, 75, 75, 0
};
static const int use_syllable_machine_start = 2;
@ -373,7 +360,7 @@ static const int use_syllable_machine_en_main = 2;
#define found_syllable(syllable_type) \
HB_STMT_START { \
HB_STMT_START { \
if (0) fprintf (stderr, "syllable %d..%d %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
info[i].syllable() = (syllable_serial << 4) | syllable_type; \
@ -384,8 +371,8 @@ static const int use_syllable_machine_en_main = 2;
template <typename Iter>
struct machine_index_t :
hb_iter_with_fallback_t<machine_index_t<Iter>,
typename Iter::item_t>
hb_iter_with_fallback_t<machine_index_t<Iter>,
typename Iter::item_t>
{
machine_index_t (const Iter& it) : it (it) {}
machine_index_t (const machine_index_t& o) : it (o.it) {}
@ -452,12 +439,11 @@ find_syllables_use (hb_buffer_t *buffer)
unsigned int act HB_UNUSED;
int cs;
#line 456 "hb-ot-shape-complex-use-machine.hh"
#line 443 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
cs = (int)use_syllable_machine_start;
ts = 0;
te = 0;
act = 0;
}
#line 260 "hb-ot-shape-complex-use-machine.rl"
@ -465,121 +451,273 @@ find_syllables_use (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
#line 469 "hb-ot-shape-complex-use-machine.hh"
#line 455 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
const unsigned char *_keys;
const char *_inds;
if ( p == pe )
goto _test_eof;
_resume:
unsigned int _trans = 0;
const unsigned char * _keys;
const signed char * _inds;
int _ic;
_resume: {}
if ( p == pe && p != eof )
goto _out;
switch ( _use_syllable_machine_from_state_actions[cs] ) {
case 4:
#line 1 "NONE"
{ts = p;}
break;
#line 483 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
_inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
_slen = _use_syllable_machine_key_spans[cs];
_trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
( (*p).second.second.use_category()) <= _keys[1] ?
( (*p).second.second.use_category()) - _keys[0] : _slen ];
_eof_trans:
cs = _use_syllable_machine_trans_targs[_trans];
if ( _use_syllable_machine_trans_actions[_trans] == 0 )
goto _again;
switch ( _use_syllable_machine_trans_actions[_trans] ) {
case 2:
#line 1 "NONE"
{te = p+1;}
break;
case 5:
#line 163 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_independent_cluster); }}
break;
case 9:
#line 166 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_standard_cluster); }}
break;
case 7:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_broken_cluster); }}
break;
case 6:
#line 172 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_non_cluster); }}
break;
case 10:
#line 164 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
break;
case 11:
#line 165 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
break;
case 8:
#line 166 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_standard_cluster); }}
break;
case 13:
#line 167 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
case 12:
#line 168 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_numeral_cluster); }}
break;
case 14:
#line 169 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_symbol_cluster); }}
break;
case 17:
#line 170 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
break;
case 15:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_broken_cluster); }}
break;
case 16:
#line 172 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_non_cluster); }}
break;
case 1:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{{p = ((te))-1;}{ found_syllable (use_broken_cluster); }}
break;
#line 561 "hb-ot-shape-complex-use-machine.hh"
}
_again:
switch ( _use_syllable_machine_to_state_actions[cs] ) {
case 3:
#line 1 "NONE"
{ts = 0;}
break;
#line 570 "hb-ot-shape-complex-use-machine.hh"
}
if ( ++p != pe )
goto _resume;
_test_eof: {}
if ( p == eof )
case 4: {
{
if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
_trans = _use_syllable_machine_eof_trans[cs] - 1;
goto _eof_trans;
#line 1 "NONE"
{ts = p;}}
#line 470 "hb-ot-shape-complex-use-machine.hh"
break;
}
}
if ( p == eof ) {
if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
_trans = (unsigned int)_use_syllable_machine_eof_trans[cs] - 1;
}
}
else {
_keys = ( _use_syllable_machine_trans_keys + ((cs<<1)));
_inds = ( _use_syllable_machine_indicies + (_use_syllable_machine_index_offsets[cs]));
if ( ((*p).second.second.use_category()) <= 52 ) {
_ic = (int)_use_syllable_machine_char_class[(int)((*p).second.second.use_category()) - 0];
if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) )
_trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) ));
else
_trans = (unsigned int)_use_syllable_machine_index_defaults[cs];
}
else {
_trans = (unsigned int)_use_syllable_machine_index_defaults[cs];
}
}
cs = (int)_use_syllable_machine_cond_targs[_trans];
if ( _use_syllable_machine_cond_actions[_trans] != 0 ) {
switch ( _use_syllable_machine_cond_actions[_trans] ) {
case 2: {
{
#line 1 "NONE"
{te = p+1;}}
#line 508 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 5: {
{
#line 163 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{
#line 163 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_independent_cluster); }
}}
#line 521 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 9: {
{
#line 166 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{
#line 166 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_standard_cluster); }
}}
#line 534 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 7: {
{
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{
#line 171 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_broken_cluster); }
}}
#line 547 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 6: {
{
#line 172 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{
#line 172 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_non_cluster); }
}}
#line 560 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 10: {
{
#line 164 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 164 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_virama_terminated_cluster); }
}}
#line 573 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 11: {
{
#line 165 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 165 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_sakot_terminated_cluster); }
}}
#line 586 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 8: {
{
#line 166 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 166 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_standard_cluster); }
}}
#line 599 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 13: {
{
#line 167 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 167 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_number_joiner_terminated_cluster); }
}}
#line 612 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 12: {
{
#line 168 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 168 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_numeral_cluster); }
}}
#line 625 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 14: {
{
#line 169 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 169 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_symbol_cluster); }
}}
#line 638 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 17: {
{
#line 170 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 170 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_hieroglyph_cluster); }
}}
#line 651 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 15: {
{
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 171 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_broken_cluster); }
}}
#line 664 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 16: {
{
#line 172 "hb-ot-shape-complex-use-machine.rl"
{te = p;p = p - 1;{
#line 172 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_non_cluster); }
}}
#line 677 "hb-ot-shape-complex-use-machine.hh"
break;
}
case 1: {
{
#line 171 "hb-ot-shape-complex-use-machine.rl"
{p = ((te))-1;
{
#line 171 "hb-ot-shape-complex-use-machine.rl"
found_syllable (use_broken_cluster); }
}}
#line 691 "hb-ot-shape-complex-use-machine.hh"
break;
}
}
}
if ( p == eof ) {
if ( cs >= 2 )
goto _out;
}
else {
switch ( _use_syllable_machine_to_state_actions[cs] ) {
case 3: {
{
#line 1 "NONE"
{ts = 0;}}
#line 711 "hb-ot-shape-complex-use-machine.hh"
break;
}
}
p += 1;
goto _resume;
}
_out: {}
}
#line 265 "hb-ot-shape-complex-use-machine.rl"