[indic/khmer/myanmar] Add Khmer/Myanmar categories to indic_category_t

This commit is contained in:
Behdad Esfahbod 2022-06-09 13:30:00 -06:00
parent 25793075e2
commit 40aa4e8320
5 changed files with 474 additions and 390 deletions

View File

@ -57,19 +57,35 @@ enum indic_category_t {
OT_PLACEHOLDER = 10, OT_PLACEHOLDER = 10,
OT_DOTTEDCIRCLE = 11, OT_DOTTEDCIRCLE = 11,
OT_RS = 12, /* Register Shifter, used in Khmer OT spec. */ OT_RS = 12, /* Register Shifter, used in Khmer OT spec. */
OT_Coeng = 13, /* Khmer-style Virama. */
OT_Repha = 14, /* Atomically-encoded logical or visual repha. */ OT_Repha = 14, /* Atomically-encoded logical or visual repha. */
OT_Ra = 15, OT_Ra = 15,
OT_CM = 16, /* Consonant-Medial. */ OT_CM = 16, /* Consonant-Medial. */
OT_Symbol = 17, /* Avagraha, etc that take marks (SM,A,VD). */ OT_Symbol = 17, /* Avagraha, etc that take marks (SM,A,VD). */
OT_CS = 18, OT_CS = 18,
/* The following are used by Khmer & Myanmar shapers. Defined /* Khmer & Myanmar shapers. */
* here for them to share. */ OT_VAbv = 20,
OT_VAbv = 26, OT_VBlw = 21,
OT_VBlw = 27, OT_VPre = 22,
OT_VPre = 28, OT_VPst = 23,
OT_VPst = 29,
/* Khmer. */
OT_Coeng = 24,
OT_Robatic = 25,
OT_Xgroup = 26,
OT_Ygroup = 27,
/* Myanmar */
OT_As = 32, // Asat
OT_D0 = 33, // Digit zero
OT_MH = 34, // Medial
OT_MR = 35, // Medial
OT_MW = 36, // Medial
OT_MY = 37, // Medial
OT_PT = 38, // Pwo and other tones
OT_VS = 39, // Variation selectors
OT_P = 40, // Punctuation
OT_ML = 41, // Consonant medials
}; };
#define MEDIAL_FLAGS (FLAG (OT_CM)) #define MEDIAL_FLAGS (FLAG (OT_CM))

View File

@ -50,169 +50,173 @@ enum khmer_syllable_type_t {
#line 52 "hb-ot-shaper-khmer-machine.hh" #line 52 "hb-ot-shaper-khmer-machine.hh"
#define khmer_syllable_machine_ex_C 1u #define khmer_syllable_machine_ex_C 1u
#define khmer_syllable_machine_ex_Coeng 13u #define khmer_syllable_machine_ex_Coeng 24u
#define khmer_syllable_machine_ex_DOTTEDCIRCLE 11u #define khmer_syllable_machine_ex_DOTTEDCIRCLE 11u
#define khmer_syllable_machine_ex_PLACEHOLDER 10u #define khmer_syllable_machine_ex_PLACEHOLDER 10u
#define khmer_syllable_machine_ex_Ra 15u #define khmer_syllable_machine_ex_Ra 15u
#define khmer_syllable_machine_ex_Robatic 20u #define khmer_syllable_machine_ex_Robatic 25u
#define khmer_syllable_machine_ex_V 2u #define khmer_syllable_machine_ex_V 2u
#define khmer_syllable_machine_ex_VAbv 26u #define khmer_syllable_machine_ex_VAbv 20u
#define khmer_syllable_machine_ex_VBlw 27u #define khmer_syllable_machine_ex_VBlw 21u
#define khmer_syllable_machine_ex_VPre 28u #define khmer_syllable_machine_ex_VPre 22u
#define khmer_syllable_machine_ex_VPst 29u #define khmer_syllable_machine_ex_VPst 23u
#define khmer_syllable_machine_ex_Xgroup 21u #define khmer_syllable_machine_ex_Xgroup 26u
#define khmer_syllable_machine_ex_Ygroup 22u #define khmer_syllable_machine_ex_Ygroup 27u
#define khmer_syllable_machine_ex_ZWJ 6u #define khmer_syllable_machine_ex_ZWJ 6u
#define khmer_syllable_machine_ex_ZWNJ 5u #define khmer_syllable_machine_ex_ZWNJ 5u
#line 70 "hb-ot-shaper-khmer-machine.hh" #line 70 "hb-ot-shaper-khmer-machine.hh"
static const unsigned char _khmer_syllable_machine_trans_keys[] = { static const unsigned char _khmer_syllable_machine_trans_keys[] = {
5u, 26u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 15u, 5u, 21u, 5u, 26u, 5u, 21u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 1u, 15u, 5u, 26u, 5u, 26u,
5u, 26u, 5u, 21u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 15u, 5u, 21u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 1u, 15u, 5u, 26u,
5u, 21u, 5u, 26u, 5u, 21u, 5u, 26u, 1u, 29u, 5u, 29u, 5u, 29u, 5u, 29u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 1u, 27u, 5u, 27u, 5u, 27u, 5u, 27u,
22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 5u, 29u, 1u, 15u, 5u, 26u, 5u, 29u, 5u, 27u, 27u, 27u, 5u, 27u, 5u, 27u, 5u, 27u, 1u, 15u, 5u, 26u, 5u, 27u,
5u, 29u, 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 1u, 15u, 5u, 29u, 5u, 29u, 5u, 27u, 5u, 27u, 27u, 27u, 5u, 27u, 5u, 27u, 1u, 15u, 5u, 27u, 5u, 27u,
0 0
}; };
static const char _khmer_syllable_machine_key_spans[] = { static const char _khmer_syllable_machine_key_spans[] = {
22, 17, 22, 17, 15, 17, 22, 17, 22, 22, 22, 22, 22, 15, 22, 22,
22, 17, 17, 22, 17, 15, 17, 22, 22, 22, 22, 22, 22, 22, 15, 22,
17, 22, 17, 22, 29, 25, 25, 25, 22, 22, 22, 22, 27, 23, 23, 23,
1, 18, 25, 25, 25, 15, 22, 25, 23, 1, 23, 23, 23, 15, 22, 23,
25, 1, 18, 25, 25, 15, 25, 25 23, 23, 1, 23, 23, 15, 23, 23
}; };
static const short _khmer_syllable_machine_index_offsets[] = { static const short _khmer_syllable_machine_index_offsets[] = {
0, 23, 41, 64, 82, 98, 116, 139, 0, 23, 46, 69, 92, 115, 131, 154,
157, 180, 198, 216, 239, 257, 273, 291, 177, 200, 223, 246, 269, 292, 315, 331,
314, 332, 355, 373, 396, 426, 452, 478, 354, 377, 400, 423, 446, 474, 498, 522,
504, 506, 525, 551, 577, 603, 619, 642, 546, 570, 572, 596, 620, 644, 660, 683,
668, 694, 696, 715, 741, 767, 783, 809 707, 731, 755, 757, 781, 805, 821, 845
}; };
static const char _khmer_syllable_machine_indicies[] = { static const char _khmer_syllable_machine_indicies[] = {
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2,
3, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 3, 4, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 1, 1,
5, 5, 0, 0, 0, 0, 0, 0,
0, 0, 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, 2, 0, 0,
0, 0, 0, 4, 0, 5, 5, 0,
0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
0, 0, 8, 0, 9, 9, 0, 0, 0, 0, 2, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,
0, 0, 0, 10, 0, 11, 11, 0, 0, 7, 0, 8, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 12, 0, 0, 0, 8, 0, 9, 9, 0, 0, 0,
0, 0, 4, 0, 11, 11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 12, 0, 14, 14, 0, 0, 2, 0, 0, 0, 0, 0,
10, 0, 9, 9, 0, 0, 0, 0,
0, 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,
2, 0, 0, 0, 0, 0, 12, 0,
11, 11, 0, 0, 0, 0, 0, 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, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 15, 13, 13, 13, 13, 13, 15, 13, 14, 14,
14, 14, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
15, 16, 16, 16, 16, 17, 16, 18, 16, 16, 16, 16, 16, 17, 16, 16,
18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 16, 18, 18, 16,
16, 16, 16, 16, 16, 16, 16, 17, 16, 16, 16, 16, 16, 16, 16, 16,
16, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 19, 16, 16, 17, 16, 19, 19, 16, 16,
16, 20, 20, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 20, 16, 21, 21, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 21, 16, 22, 22, 16, 16, 16, 16, 21, 16, 22, 22, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 23, 16, 16, 16, 16, 16, 16, 17, 16, 16, 16, 16, 16,
17, 16, 22, 22, 16, 16, 16, 16, 23, 16, 22, 22, 16, 16, 16, 16,
16, 16, 16, 16, 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, 23,
16, 24, 24, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 25, 16, 16, 16, 17, 16, 16, 16, 16, 16, 25, 16,
16, 17, 16, 24, 24, 16, 16, 16, 24, 24, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 25, 16, 14, 14, 16, 16, 16, 16, 16, 16, 25, 16, 14,
16, 16, 16, 16, 16, 16, 16, 16, 14, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 26, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 16,
16, 16, 17, 16, 28, 28, 27, 27, 16, 16, 16, 26, 15, 16, 28, 28,
29, 29, 27, 27, 27, 2, 2, 27, 27, 27, 29, 29, 27, 27, 27, 3,
30, 27, 28, 27, 27, 27, 27, 27, 3, 27, 27, 27, 28, 27, 27, 27,
15, 19, 27, 27, 27, 17, 23, 25, 27, 17, 23, 25, 20, 30, 27, 15,
21, 27, 32, 32, 31, 31, 31, 31, 21, 27, 32, 32, 31, 31, 31, 31,
31, 31, 33, 31, 31, 31, 31, 31,
31, 2, 3, 6, 31, 31, 31, 4,
10, 12, 8, 31, 34, 34, 31, 31,
31, 31, 31, 31, 35, 31, 31, 31,
31, 31, 31, 31, 3, 6, 31, 31,
31, 4, 10, 12, 8, 31, 5, 5,
31, 31, 31, 31, 31, 31, 35, 31,
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, 35, 31, 31, 31, 31, 31,
31, 31, 8, 6, 31, 36, 36, 31,
31, 31, 31, 31, 31, 35, 31, 31,
31, 31, 31, 31, 31, 10, 6, 31,
31, 31, 4, 31, 31, 8, 31, 37,
37, 31, 31, 31, 31, 31, 31, 35,
31, 31, 31, 31, 31, 31, 31, 12,
6, 31, 31, 31, 4, 10, 31, 8,
31, 34, 34, 31, 31, 31, 31, 31,
31, 33, 31, 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, 31, 31, 31, 31, 31, 31,
31, 28, 31, 14, 14, 38, 38, 38, 31, 2, 10, 12, 7, 33, 3, 4,
8, 31, 34, 34, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 2, 10, 12, 7, 35, 31, 4,
8, 31, 5, 5, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 7, 35, 31, 2,
8, 31, 6, 6, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 35, 31, 7,
8, 31, 8, 31, 36, 36, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 2, 31, 31, 7, 35,
31, 10, 8, 31, 37, 37, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 2, 10, 31, 7, 35,
31, 12, 8, 31, 34, 34, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 2, 10, 12, 7, 33,
31, 4, 8, 31, 28, 28, 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, 38, 38, 38, 38,
38, 38, 38, 15, 38, 38, 38, 38, 38, 38, 38, 17, 38, 38, 38, 38,
17, 38, 40, 40, 39, 39, 39, 39, 38, 15, 38, 40, 40, 39, 39, 39,
39, 39, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 15, 19, 39, 39, 39, 17, 39, 39, 17, 23, 25, 20, 41, 39,
23, 25, 21, 39, 18, 18, 39, 39, 15, 21, 39, 18, 18, 39, 39, 39,
39, 39, 39, 39, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 17, 19, 39, 39, 39, 39, 39, 39, 39, 20, 41, 39,
39, 39, 39, 39, 21, 39, 19, 39, 17, 21, 39, 19, 19, 39, 39, 39,
20, 20, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 39,
21, 19, 39, 42, 42, 39, 39, 39, 20, 21, 39, 21, 39, 42, 42, 39,
39, 39, 39, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 23, 19, 39, 39, 39, 39, 39, 39, 39, 17, 39, 39, 20,
17, 39, 39, 21, 39, 43, 43, 39, 41, 39, 23, 21, 39, 43, 43, 39,
39, 39, 39, 39, 39, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 25, 19, 39, 39, 39, 39, 39, 17, 23, 39, 20,
39, 39, 17, 23, 39, 21, 39, 44, 41, 39, 25, 21, 39, 44, 44, 39,
44, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 44, 39, 45, 39, 39, 39, 44, 39, 45, 45, 39,
45, 39, 39, 39, 39, 39, 39, 30, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 26, 15, 39, 39, 39, 39, 17, 23, 25, 20,
19, 39, 39, 39, 17, 23, 25, 21, 30, 26, 15, 21, 39, 40, 40, 39,
39, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 30, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 23, 25, 20,
39, 15, 19, 39, 39, 39, 17, 23, 30, 39, 15, 21, 39, 0
25, 21, 39, 0
}; };
static const char _khmer_syllable_machine_trans_targs[] = { static const char _khmer_syllable_machine_trans_targs[] = {
20, 1, 28, 22, 23, 3, 24, 5, 20, 1, 23, 28, 22, 3, 4, 24,
25, 7, 26, 9, 27, 20, 10, 31, 25, 7, 26, 9, 27, 20, 10, 31,
20, 32, 12, 33, 14, 34, 16, 35, 20, 32, 12, 13, 33, 34, 16, 35,
18, 36, 39, 20, 21, 30, 37, 20, 18, 36, 39, 20, 21, 30, 37, 20,
0, 29, 2, 4, 6, 8, 20, 20, 0, 29, 2, 5, 6, 8, 20, 20,
11, 13, 15, 17, 38, 19 11, 14, 15, 17, 38, 19
}; };
static const char _khmer_syllable_machine_trans_actions[] = { static const char _khmer_syllable_machine_trans_actions[] = {
1, 0, 2, 2, 2, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 2,
2, 0, 2, 0, 2, 3, 0, 4, 0, 0, 2, 0, 2, 3, 0, 4,
5, 2, 0, 0, 0, 2, 0, 2, 5, 2, 0, 0, 2, 0, 0, 2,
0, 2, 4, 8, 2, 9, 0, 10, 0, 2, 4, 8, 2, 9, 0, 10,
0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 11, 12,
0, 0, 0, 0, 4, 0 0, 0, 0, 0, 4, 0
@ -253,7 +257,7 @@ static const int khmer_syllable_machine_en_main = 20;
#line 96 "hb-ot-shaper-khmer-machine.rl" #line 98 "hb-ot-shaper-khmer-machine.rl"
#define found_syllable(syllable_type) \ #define found_syllable(syllable_type) \
@ -272,7 +276,7 @@ find_syllables_khmer (hb_buffer_t *buffer)
int cs; int cs;
hb_glyph_info_t *info = buffer->info; hb_glyph_info_t *info = buffer->info;
#line 276 "hb-ot-shaper-khmer-machine.hh" #line 280 "hb-ot-shaper-khmer-machine.hh"
{ {
cs = khmer_syllable_machine_start; cs = khmer_syllable_machine_start;
ts = 0; ts = 0;
@ -280,7 +284,7 @@ find_syllables_khmer (hb_buffer_t *buffer)
act = 0; act = 0;
} }
#line 116 "hb-ot-shaper-khmer-machine.rl" #line 118 "hb-ot-shaper-khmer-machine.rl"
p = 0; p = 0;
@ -288,7 +292,7 @@ find_syllables_khmer (hb_buffer_t *buffer)
unsigned int syllable_serial = 1; unsigned int syllable_serial = 1;
#line 292 "hb-ot-shaper-khmer-machine.hh" #line 296 "hb-ot-shaper-khmer-machine.hh"
{ {
int _slen; int _slen;
int _trans; int _trans;
@ -302,7 +306,7 @@ _resume:
#line 1 "NONE" #line 1 "NONE"
{ts = p;} {ts = p;}
break; break;
#line 306 "hb-ot-shaper-khmer-machine.hh" #line 310 "hb-ot-shaper-khmer-machine.hh"
} }
_keys = _khmer_syllable_machine_trans_keys + (cs<<1); _keys = _khmer_syllable_machine_trans_keys + (cs<<1);
@ -325,27 +329,27 @@ _eof_trans:
{te = p+1;} {te = p+1;}
break; break;
case 8: case 8:
#line 92 "hb-ot-shaper-khmer-machine.rl" #line 94 "hb-ot-shaper-khmer-machine.rl"
{te = p+1;{ found_syllable (khmer_non_khmer_cluster); }} {te = p+1;{ found_syllable (khmer_non_khmer_cluster); }}
break; break;
case 10: case 10:
#line 90 "hb-ot-shaper-khmer-machine.rl" #line 92 "hb-ot-shaper-khmer-machine.rl"
{te = p;p--;{ found_syllable (khmer_consonant_syllable); }} {te = p;p--;{ found_syllable (khmer_consonant_syllable); }}
break; break;
case 12: case 12:
#line 91 "hb-ot-shaper-khmer-machine.rl" #line 93 "hb-ot-shaper-khmer-machine.rl"
{te = p;p--;{ found_syllable (khmer_broken_cluster); }} {te = p;p--;{ found_syllable (khmer_broken_cluster); }}
break; break;
case 11: case 11:
#line 92 "hb-ot-shaper-khmer-machine.rl" #line 94 "hb-ot-shaper-khmer-machine.rl"
{te = p;p--;{ found_syllable (khmer_non_khmer_cluster); }} {te = p;p--;{ found_syllable (khmer_non_khmer_cluster); }}
break; break;
case 1: case 1:
#line 90 "hb-ot-shaper-khmer-machine.rl" #line 92 "hb-ot-shaper-khmer-machine.rl"
{{p = ((te))-1;}{ found_syllable (khmer_consonant_syllable); }} {{p = ((te))-1;}{ found_syllable (khmer_consonant_syllable); }}
break; break;
case 5: case 5:
#line 91 "hb-ot-shaper-khmer-machine.rl" #line 93 "hb-ot-shaper-khmer-machine.rl"
{{p = ((te))-1;}{ found_syllable (khmer_broken_cluster); }} {{p = ((te))-1;}{ found_syllable (khmer_broken_cluster); }}
break; break;
case 3: case 3:
@ -363,16 +367,16 @@ _eof_trans:
case 4: case 4:
#line 1 "NONE" #line 1 "NONE"
{te = p+1;} {te = p+1;}
#line 91 "hb-ot-shaper-khmer-machine.rl" #line 93 "hb-ot-shaper-khmer-machine.rl"
{act = 2;} {act = 2;}
break; break;
case 9: case 9:
#line 1 "NONE" #line 1 "NONE"
{te = p+1;} {te = p+1;}
#line 92 "hb-ot-shaper-khmer-machine.rl" #line 94 "hb-ot-shaper-khmer-machine.rl"
{act = 3;} {act = 3;}
break; break;
#line 376 "hb-ot-shaper-khmer-machine.hh" #line 380 "hb-ot-shaper-khmer-machine.hh"
} }
_again: _again:
@ -381,7 +385,7 @@ _again:
#line 1 "NONE" #line 1 "NONE"
{ts = 0;} {ts = 0;}
break; break;
#line 385 "hb-ot-shaper-khmer-machine.hh" #line 389 "hb-ot-shaper-khmer-machine.hh"
} }
if ( ++p != pe ) if ( ++p != pe )
@ -397,7 +401,7 @@ _again:
} }
#line 124 "hb-ot-shaper-khmer-machine.rl" #line 126 "hb-ot-shaper-khmer-machine.rl"
} }

View File

@ -60,15 +60,17 @@ export ZWNJ = 5;
export ZWJ = 6; export ZWJ = 6;
export PLACEHOLDER = 10; export PLACEHOLDER = 10;
export DOTTEDCIRCLE = 11; export DOTTEDCIRCLE = 11;
export Coeng= 13;
export Ra = 15; export Ra = 15;
export Robatic = 20;
export Xgroup = 21; export VAbv = 20;
export Ygroup = 22; export VBlw = 21;
export VAbv = 26; export VPre = 22;
export VBlw = 27; export VPst = 23;
export VPre = 28;
export VPst = 29; export Coeng = 24;
export Robatic = 25;
export Xgroup = 26;
export Ygroup = 27;
c = (C | Ra | V); c = (C | Ra | V);
cn = c.((ZWJ|ZWNJ)?.Robatic)?; cn = c.((ZWJ|ZWNJ)?.Robatic)?;

View File

@ -53,265 +53,324 @@ enum myanmar_syllable_type_t {
#line 55 "hb-ot-shaper-myanmar-machine.hh" #line 55 "hb-ot-shaper-myanmar-machine.hh"
#define myanmar_syllable_machine_ex_A 9u #define myanmar_syllable_machine_ex_A 9u
#define myanmar_syllable_machine_ex_As 18u #define myanmar_syllable_machine_ex_As 32u
#define myanmar_syllable_machine_ex_C 1u #define myanmar_syllable_machine_ex_C 1u
#define myanmar_syllable_machine_ex_CS 19u #define myanmar_syllable_machine_ex_CS 18u
#define myanmar_syllable_machine_ex_D 10u #define myanmar_syllable_machine_ex_D 10u
#define myanmar_syllable_machine_ex_D0 20u #define myanmar_syllable_machine_ex_D0 33u
#define myanmar_syllable_machine_ex_DB 3u #define myanmar_syllable_machine_ex_DB 3u
#define myanmar_syllable_machine_ex_GB 10u #define myanmar_syllable_machine_ex_GB 10u
#define myanmar_syllable_machine_ex_H 4u #define myanmar_syllable_machine_ex_H 4u
#define myanmar_syllable_machine_ex_IV 2u #define myanmar_syllable_machine_ex_IV 2u
#define myanmar_syllable_machine_ex_MH 21u #define myanmar_syllable_machine_ex_MH 34u
#define myanmar_syllable_machine_ex_ML 32u #define myanmar_syllable_machine_ex_ML 41u
#define myanmar_syllable_machine_ex_MR 22u #define myanmar_syllable_machine_ex_MR 35u
#define myanmar_syllable_machine_ex_MW 23u #define myanmar_syllable_machine_ex_MW 36u
#define myanmar_syllable_machine_ex_MY 24u #define myanmar_syllable_machine_ex_MY 37u
#define myanmar_syllable_machine_ex_P 31u #define myanmar_syllable_machine_ex_P 40u
#define myanmar_syllable_machine_ex_PT 25u #define myanmar_syllable_machine_ex_PT 38u
#define myanmar_syllable_machine_ex_Ra 15u #define myanmar_syllable_machine_ex_Ra 15u
#define myanmar_syllable_machine_ex_V 8u #define myanmar_syllable_machine_ex_V 8u
#define myanmar_syllable_machine_ex_VAbv 26u #define myanmar_syllable_machine_ex_VAbv 20u
#define myanmar_syllable_machine_ex_VBlw 27u #define myanmar_syllable_machine_ex_VBlw 21u
#define myanmar_syllable_machine_ex_VPre 28u #define myanmar_syllable_machine_ex_VPre 22u
#define myanmar_syllable_machine_ex_VPst 29u #define myanmar_syllable_machine_ex_VPst 23u
#define myanmar_syllable_machine_ex_VS 30u #define myanmar_syllable_machine_ex_VS 39u
#define myanmar_syllable_machine_ex_ZWJ 6u #define myanmar_syllable_machine_ex_ZWJ 6u
#define myanmar_syllable_machine_ex_ZWNJ 5u #define myanmar_syllable_machine_ex_ZWNJ 5u
#line 84 "hb-ot-shaper-myanmar-machine.hh" #line 84 "hb-ot-shaper-myanmar-machine.hh"
static const unsigned char _myanmar_syllable_machine_trans_keys[] = { static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
1u, 32u, 3u, 32u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 1u, 41u, 3u, 41u, 5u, 38u, 5u, 8u, 3u, 41u, 3u, 38u, 3u, 38u, 5u, 38u,
3u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 32u, 1u, 15u, 3u, 32u, 3u, 32u, 5u, 38u, 3u, 38u, 3u, 38u, 3u, 41u, 5u, 38u, 1u, 15u, 3u, 38u, 3u, 38u,
3u, 29u, 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 32u, 3u, 32u, 3u, 32u, 3u, 39u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 41u,
3u, 32u, 3u, 32u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 41u, 3u, 41u, 5u, 38u, 5u, 8u, 3u, 41u, 3u, 38u, 3u, 38u, 5u, 38u,
3u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 32u, 1u, 15u, 3u, 32u, 3u, 32u, 5u, 38u, 3u, 38u, 3u, 38u, 3u, 41u, 5u, 38u, 1u, 15u, 3u, 41u, 3u, 38u,
3u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 32u, 3u, 32u, 3u, 38u, 3u, 39u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 38u, 3u, 41u, 3u, 41u,
3u, 32u, 3u, 32u, 3u, 32u, 3u, 32u, 3u, 32u, 1u, 32u, 1u, 15u, 8u, 8u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 1u, 41u, 1u, 15u, 8u, 8u,
0 0
}; };
static const char _myanmar_syllable_machine_key_spans[] = { static const char _myanmar_syllable_machine_key_spans[] = {
32, 30, 25, 4, 25, 23, 21, 21, 41, 39, 34, 4, 39, 36, 36, 34,
30, 27, 27, 27, 30, 15, 30, 30, 34, 36, 36, 39, 34, 15, 36, 36,
27, 27, 27, 28, 27, 30, 30, 30, 37, 36, 39, 39, 36, 39, 39, 39,
30, 30, 25, 4, 25, 23, 21, 21, 39, 39, 34, 4, 39, 36, 36, 34,
30, 27, 27, 27, 30, 15, 30, 30, 34, 36, 36, 39, 34, 15, 39, 36,
30, 27, 27, 27, 28, 27, 30, 30, 36, 37, 36, 39, 39, 36, 39, 39,
30, 30, 30, 30, 30, 32, 15, 1 39, 39, 39, 39, 39, 41, 15, 1
}; };
static const short _myanmar_syllable_machine_index_offsets[] = { static const short _myanmar_syllable_machine_index_offsets[] = {
0, 33, 64, 90, 95, 121, 145, 167, 0, 42, 82, 117, 122, 162, 199, 236,
189, 220, 248, 276, 304, 335, 351, 382, 271, 306, 343, 380, 420, 455, 471, 508,
413, 441, 469, 497, 526, 554, 585, 616, 545, 583, 620, 660, 700, 737, 777, 817,
647, 678, 709, 735, 740, 766, 790, 812, 857, 897, 937, 972, 977, 1017, 1054, 1091,
834, 865, 893, 921, 949, 980, 996, 1027, 1126, 1161, 1198, 1235, 1275, 1310, 1326, 1366,
1058, 1089, 1117, 1145, 1173, 1202, 1230, 1261, 1403, 1440, 1478, 1515, 1555, 1595, 1632, 1672,
1292, 1323, 1354, 1385, 1416, 1447, 1480, 1496 1712, 1752, 1792, 1832, 1872, 1912, 1954, 1970
}; };
static const char _myanmar_syllable_machine_indicies[] = { static const char _myanmar_syllable_machine_indicies[] = {
1, 1, 2, 3, 4, 4, 0, 5, 1, 1, 2, 3, 4, 4, 0, 5,
6, 1, 0, 0, 0, 0, 7, 0, 6, 1, 0, 0, 0, 0, 7, 0,
0, 8, 9, 0, 10, 11, 12, 13, 0, 8, 0, 9, 10, 11, 12, 0,
14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 13,
0, 23, 24, 25, 25, 22, 26, 27, 0, 14, 15, 16, 17, 18, 19, 20,
21, 0, 23, 24, 25, 25, 22, 26,
27, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 28, 29, 30, 31, 22,
22, 22, 22, 22, 22, 22, 22, 32,
22, 33, 34, 35, 36, 37, 38, 22,
39, 22, 25, 25, 22, 26, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
28, 22, 22, 29, 30, 31, 32, 33, 22, 22, 22, 22, 31, 22, 22, 22,
34, 35, 36, 37, 38, 22, 39, 22,
25, 25, 22, 26, 22, 22, 22, 22,
22, 22, 22, 22, 22, 40, 22, 22, 22, 22, 22, 22, 22, 40, 22, 22,
22, 22, 22, 22, 33, 22, 22, 22, 22, 22, 22, 37, 22, 25, 25, 22,
37, 22, 25, 25, 22, 26, 22, 25, 26, 22, 23, 22, 25, 25, 22, 26,
27, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 41, 22, 22, 31, 22,
22, 22, 22, 22, 22, 22, 22, 42,
22, 43, 22, 22, 22, 37, 22, 22,
42, 22, 23, 22, 25, 25, 22, 26,
27, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 31, 22,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 37, 22, 44,
22, 25, 25, 22, 26, 37, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 45, 22, 22, 22,
22, 22, 37, 22, 25, 25, 22, 26,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 45,
22, 22, 22, 22, 22, 37, 22, 25,
25, 22, 26, 22, 22, 22, 22, 22, 25, 22, 26, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 33, 22, 22, 22, 37,
22, 41, 22, 25, 25, 22, 26, 33,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
42, 22, 22, 22, 22, 22, 22, 33,
22, 25, 25, 22, 26, 22, 22, 22,
22, 22, 22, 22, 22, 22, 42, 22,
22, 22, 22, 22, 22, 33, 22, 25,
25, 22, 26, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 33, 22, 23, 22, 25, 37, 22, 23, 22, 25, 25, 22, 26,
25, 22, 26, 27, 22, 22, 22, 22, 27, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 43, 22, 22, 44, 22, 22, 22, 41, 22, 22, 31, 22,
22, 22, 22, 33, 45, 22, 22, 37,
22, 22, 43, 22, 23, 22, 25, 25,
22, 26, 27, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 33, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 37, 22, 23,
23, 22, 25, 25, 22, 26, 27, 22, 22, 25, 25, 22, 26, 27, 22, 22,
22, 22, 22, 22, 22, 22, 22, 43, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 33, 45, 41, 22, 22, 31, 22, 22, 22, 22,
22, 22, 22, 22, 42, 22, 22, 22,
22, 22, 37, 22, 23, 22, 25, 25, 22, 22, 37, 22, 23, 22, 25, 25,
22, 26, 27, 22, 22, 22, 22, 22, 22, 26, 27, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 41, 22, 22,
31, 22, 22, 22, 22, 22, 22, 22,
22, 42, 22, 22, 22, 22, 22, 37,
22, 22, 42, 22, 25, 25, 22, 26,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 33, 45, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 31, 22,
23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 43, 22, 22, 22, 22, 22, 37, 22, 1,
22, 22, 22, 22, 22, 22, 33, 45,
22, 22, 37, 22, 22, 43, 22, 1,
1, 22, 22, 22, 22, 22, 22, 22, 1, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 1, 22, 23, 22, 22, 22, 22, 22, 1, 22, 23,
22, 25, 25, 22, 26, 27, 22, 22, 22, 25, 25, 22, 26, 27, 22, 22,
22, 22, 22, 22, 22, 22, 28, 22,
22, 29, 30, 31, 32, 33, 34, 35,
36, 37, 22, 22, 39, 22, 23, 22,
25, 25, 22, 26, 27, 22, 22, 22,
22, 22, 22, 22, 22, 46, 22, 22,
22, 22, 22, 22, 33, 34, 35, 36,
37, 22, 22, 39, 22, 23, 22, 25,
25, 22, 26, 27, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 33, 34, 35, 36, 37, 28, 29, 22, 31, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 37, 22, 23, 22, 25, 25,
22, 26, 27, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 29, 22,
31, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 37,
22, 23, 22, 25, 25, 22, 26, 27, 22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 33, 22, 22, 28, 29, 30, 31, 22, 22,
34, 35, 22, 37, 22, 23, 22, 25,
25, 22, 26, 27, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 33, 22, 35, 22, 37, 22, 22, 22, 22, 37, 46, 22, 23,
22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 33,
34, 35, 36, 37, 46, 22, 23, 22,
25, 25, 22, 26, 27, 22, 22, 22,
22, 22, 22, 22, 22, 46, 22, 22,
22, 22, 22, 22, 33, 34, 35, 36,
37, 22, 23, 22, 25, 25, 22, 26,
27, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 29, 22, 31, 22,
33, 34, 35, 36, 37, 22, 22, 39,
22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
46, 22, 22, 29, 22, 22, 22, 33,
34, 35, 36, 37, 22, 22, 39, 22,
23, 22, 25, 25, 22, 26, 27, 22,
22, 22, 22, 22, 22, 22, 22, 47,
22, 22, 29, 30, 31, 22, 33, 34,
35, 36, 37, 22, 22, 39, 22, 23,
22, 25, 25, 22, 26, 27, 22, 22, 22, 25, 25, 22, 26, 27, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 29, 30, 31, 22, 33, 34, 35, 28, 29, 30, 31, 22, 22, 22, 22,
36, 37, 22, 22, 39, 22, 23, 24,
25, 25, 22, 26, 27, 22, 22, 22,
22, 22, 22, 22, 22, 28, 22, 22,
29, 30, 31, 32, 33, 34, 35, 36,
37, 22, 22, 39, 22, 49, 49, 48,
5, 48, 48, 48, 48, 48, 48, 48,
48, 48, 50, 48, 48, 48, 48, 48,
48, 14, 48, 48, 48, 18, 48, 49,
49, 48, 5, 48, 49, 49, 48, 5,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
14, 48, 48, 48, 18, 48, 51, 48,
49, 49, 48, 5, 14, 48, 48, 48,
48, 48, 48, 48, 48, 52, 48, 48,
48, 48, 48, 48, 14, 48, 49, 49,
48, 5, 48, 48, 48, 48, 48, 48,
48, 48, 48, 52, 48, 48, 48, 48,
48, 48, 14, 48, 49, 49, 48, 5,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
14, 48, 2, 48, 49, 49, 48, 5,
6, 48, 48, 48, 48, 48, 48, 48,
48, 53, 48, 48, 54, 48, 48, 48,
14, 55, 48, 48, 18, 48, 48, 53,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 14,
48, 48, 48, 18, 48, 2, 48, 49,
49, 48, 5, 6, 48, 48, 48, 48,
48, 48, 48, 48, 53, 48, 48, 48,
48, 48, 48, 14, 55, 48, 48, 18,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 14,
55, 48, 48, 18, 48, 2, 48, 49,
49, 48, 5, 6, 48, 48, 48, 48,
48, 48, 48, 48, 53, 48, 48, 48,
48, 48, 48, 14, 55, 48, 48, 18,
48, 48, 53, 48, 56, 56, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 56, 48, 2, 3, 49, 49,
48, 5, 6, 48, 48, 48, 48, 48,
48, 48, 48, 8, 48, 48, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19,
48, 21, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 8, 48, 48, 10, 11, 12,
13, 14, 15, 16, 17, 18, 48, 48,
21, 48, 2, 48, 49, 49, 48, 5,
6, 48, 48, 48, 48, 48, 48, 48,
48, 57, 48, 48, 48, 48, 48, 48,
14, 15, 16, 17, 18, 48, 48, 21,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 14,
15, 16, 17, 18, 48, 2, 48, 49,
49, 48, 5, 6, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 14, 15, 16, 48, 18,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 14,
48, 16, 48, 18, 48, 2, 48, 49,
49, 48, 5, 6, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 14, 15, 16, 17, 18,
57, 48, 2, 48, 49, 49, 48, 5,
6, 48, 48, 48, 48, 48, 48, 48,
48, 57, 48, 48, 48, 48, 48, 48,
14, 15, 16, 17, 18, 48, 2, 48,
49, 49, 48, 5, 6, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
10, 48, 12, 48, 14, 15, 16, 17,
18, 48, 48, 21, 48, 2, 48, 49,
49, 48, 5, 6, 48, 48, 48, 48,
48, 48, 48, 48, 57, 48, 48, 10,
48, 48, 48, 14, 15, 16, 17, 18,
48, 48, 21, 48, 2, 48, 49, 49,
48, 5, 6, 48, 48, 48, 48, 48,
48, 48, 48, 58, 48, 48, 10, 11,
12, 48, 14, 15, 16, 17, 18, 48,
48, 21, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 10, 11, 12,
48, 14, 15, 16, 17, 18, 48, 48,
21, 48, 2, 3, 49, 49, 48, 5,
6, 48, 48, 48, 48, 48, 48, 48,
48, 8, 48, 48, 10, 11, 12, 13,
14, 15, 16, 17, 18, 48, 48, 21,
48, 23, 24, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
59, 22, 22, 29, 30, 31, 32, 33, 22, 22, 37, 22, 23, 22, 25, 25,
22, 26, 27, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 28, 29, 30,
31, 22, 22, 22, 22, 22, 22, 22,
22, 32, 22, 33, 34, 35, 36, 37,
22, 22, 39, 22, 23, 22, 25, 25,
22, 26, 27, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 28, 29, 30,
31, 22, 22, 22, 22, 22, 22, 22,
22, 46, 22, 22, 22, 22, 22, 37,
22, 22, 39, 22, 23, 22, 25, 25,
22, 26, 27, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 28, 29, 30,
31, 22, 22, 22, 22, 22, 22, 22,
22, 46, 22, 22, 22, 22, 22, 37,
22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 28, 29, 30, 31, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22,
33, 22, 35, 22, 37, 22, 22, 39,
22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 28, 29, 30, 31, 22, 22,
22, 22, 22, 22, 22, 22, 46, 22,
33, 22, 22, 22, 37, 22, 22, 39,
22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 28, 29, 30, 31, 22, 22,
22, 22, 22, 22, 22, 22, 47, 22,
33, 34, 35, 22, 37, 22, 22, 39,
22, 23, 22, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 28, 29, 30, 31, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22,
33, 34, 35, 22, 37, 22, 22, 39,
22, 23, 24, 25, 25, 22, 26, 27,
22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 28, 29, 30, 31, 22, 22,
22, 22, 22, 22, 22, 22, 32, 22,
33, 34, 35, 36, 37, 22, 22, 39,
22, 49, 49, 48, 5, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 12, 48, 48, 48, 48,
48, 48, 48, 48, 50, 48, 48, 48,
48, 48, 18, 48, 49, 49, 48, 5,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 51, 48, 48, 12, 48, 48,
48, 48, 48, 48, 48, 48, 52, 48,
53, 48, 48, 48, 18, 48, 48, 52,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 12, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 18, 48, 54, 48,
49, 49, 48, 5, 18, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 55, 48, 48, 48, 48,
48, 18, 48, 49, 49, 48, 5, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 55, 48,
48, 48, 48, 48, 18, 48, 49, 49,
48, 5, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 18,
48, 2, 48, 49, 49, 48, 5, 6,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 51, 48, 48, 12, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 18, 48, 2, 48,
49, 49, 48, 5, 6, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 51,
48, 48, 12, 48, 48, 48, 48, 48,
48, 48, 48, 52, 48, 48, 48, 48,
48, 18, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 51, 48, 48, 12,
48, 48, 48, 48, 48, 48, 48, 48,
52, 48, 48, 48, 48, 48, 18, 48,
48, 52, 48, 49, 49, 48, 5, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 12, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 18, 48, 56, 56,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 56, 48, 2, 3,
49, 49, 48, 5, 6, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 9,
10, 11, 12, 48, 48, 48, 48, 48,
48, 48, 48, 13, 48, 14, 15, 16,
17, 18, 19, 48, 21, 48, 2, 48,
49, 49, 48, 5, 6, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 9,
10, 48, 12, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 18, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 10, 48, 12,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 18, 48,
2, 48, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 18, 57, 48, 2, 48,
49, 49, 48, 5, 6, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 9,
10, 11, 12, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 18, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 9, 10, 11, 12,
48, 48, 48, 48, 48, 48, 48, 48,
13, 48, 14, 15, 16, 17, 18, 48,
48, 21, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 9, 10, 11, 12,
48, 48, 48, 48, 48, 48, 48, 48,
57, 48, 48, 48, 48, 48, 18, 48,
48, 21, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 9, 10, 11, 12,
48, 48, 48, 48, 48, 48, 48, 48,
57, 48, 48, 48, 48, 48, 18, 48,
2, 48, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 14,
48, 16, 48, 18, 48, 48, 21, 48,
2, 48, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 57, 48, 14,
48, 48, 48, 18, 48, 48, 21, 48,
2, 48, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 58, 48, 14,
15, 16, 48, 18, 48, 48, 21, 48,
2, 48, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 14,
15, 16, 48, 18, 48, 48, 21, 48,
2, 3, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 13, 48, 14,
15, 16, 17, 18, 48, 48, 21, 48,
23, 24, 25, 25, 22, 26, 27, 22,
22, 22, 22, 22, 22, 22, 22, 22,
22, 28, 29, 30, 31, 22, 22, 22,
22, 22, 22, 22, 22, 59, 22, 33,
34, 35, 36, 37, 38, 22, 39, 22, 34, 35, 36, 37, 38, 22, 39, 22,
23, 60, 25, 25, 22, 26, 27, 22, 23, 60, 25, 25, 22, 26, 27, 22,
22, 22, 22, 22, 22, 22, 22, 28, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 29, 30, 31, 32, 33, 34, 22, 28, 29, 30, 31, 22, 22, 22,
35, 36, 37, 22, 22, 39, 22, 1, 22, 22, 22, 22, 22, 32, 22, 33,
1, 2, 3, 49, 49, 48, 5, 6, 34, 35, 36, 37, 22, 22, 39, 22,
1, 48, 48, 48, 48, 1, 48, 48, 1, 1, 2, 3, 49, 49, 48, 5,
8, 48, 48, 10, 11, 12, 13, 14, 6, 1, 48, 48, 48, 48, 1, 48,
15, 16, 17, 18, 19, 48, 21, 48, 48, 48, 48, 9, 10, 11, 12, 48,
1, 1, 61, 61, 61, 61, 61, 61, 48, 48, 48, 48, 48, 48, 48, 13,
61, 1, 61, 61, 61, 61, 1, 61, 48, 14, 15, 16, 17, 18, 19, 48,
62, 61, 0 21, 48, 1, 1, 61, 61, 61, 61,
61, 61, 61, 1, 61, 61, 61, 61,
1, 61, 62, 61, 0
}; };
static const char _myanmar_syllable_machine_trans_targs[] = { static const char _myanmar_syllable_machine_trans_targs[] = {
0, 1, 26, 37, 0, 27, 33, 51, 0, 1, 26, 37, 0, 27, 29, 51,
39, 54, 40, 46, 47, 48, 29, 42, 54, 39, 40, 41, 28, 43, 44, 46,
43, 44, 32, 50, 55, 45, 0, 2, 47, 48, 30, 50, 55, 45, 0, 2,
13, 0, 3, 9, 14, 15, 21, 22, 13, 0, 3, 5, 14, 15, 16, 4,
23, 5, 17, 18, 19, 8, 25, 20, 18, 19, 21, 22, 23, 6, 25, 20,
4, 6, 7, 10, 12, 11, 16, 24, 12, 9, 10, 11, 7, 8, 17, 24,
0, 0, 28, 30, 31, 34, 36, 35, 0, 0, 36, 33, 34, 35, 31, 32,
38, 41, 49, 52, 53, 0, 0 38, 42, 49, 52, 53, 0, 0
}; };
static const char _myanmar_syllable_machine_trans_actions[] = { static const char _myanmar_syllable_machine_trans_actions[] = {
@ -366,7 +425,7 @@ static const int myanmar_syllable_machine_en_main = 0;
#line 114 "hb-ot-shaper-myanmar-machine.rl" #line 117 "hb-ot-shaper-myanmar-machine.rl"
#define found_syllable(syllable_type) \ #define found_syllable(syllable_type) \
@ -385,7 +444,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
int cs; int cs;
hb_glyph_info_t *info = buffer->info; hb_glyph_info_t *info = buffer->info;
#line 389 "hb-ot-shaper-myanmar-machine.hh" #line 448 "hb-ot-shaper-myanmar-machine.hh"
{ {
cs = myanmar_syllable_machine_start; cs = myanmar_syllable_machine_start;
ts = 0; ts = 0;
@ -393,7 +452,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
act = 0; act = 0;
} }
#line 134 "hb-ot-shaper-myanmar-machine.rl" #line 137 "hb-ot-shaper-myanmar-machine.rl"
p = 0; p = 0;
@ -401,7 +460,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
unsigned int syllable_serial = 1; unsigned int syllable_serial = 1;
#line 405 "hb-ot-shaper-myanmar-machine.hh" #line 464 "hb-ot-shaper-myanmar-machine.hh"
{ {
int _slen; int _slen;
int _trans; int _trans;
@ -415,7 +474,7 @@ _resume:
#line 1 "NONE" #line 1 "NONE"
{ts = p;} {ts = p;}
break; break;
#line 419 "hb-ot-shaper-myanmar-machine.hh" #line 478 "hb-ot-shaper-myanmar-machine.hh"
} }
_keys = _myanmar_syllable_machine_trans_keys + (cs<<1); _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
@ -434,38 +493,38 @@ _eof_trans:
switch ( _myanmar_syllable_machine_trans_actions[_trans] ) { switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
case 6: case 6:
#line 106 "hb-ot-shaper-myanmar-machine.rl" #line 109 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_consonant_syllable); }} {te = p+1;{ found_syllable (myanmar_consonant_syllable); }}
break; break;
case 4: case 4:
#line 107 "hb-ot-shaper-myanmar-machine.rl" #line 110 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }} {te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }}
break; break;
case 10: case 10:
#line 108 "hb-ot-shaper-myanmar-machine.rl" #line 111 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_punctuation_cluster); }} {te = p+1;{ found_syllable (myanmar_punctuation_cluster); }}
break; break;
case 8: case 8:
#line 109 "hb-ot-shaper-myanmar-machine.rl" #line 112 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_broken_cluster); }} {te = p+1;{ found_syllable (myanmar_broken_cluster); }}
break; break;
case 3: case 3:
#line 110 "hb-ot-shaper-myanmar-machine.rl" #line 113 "hb-ot-shaper-myanmar-machine.rl"
{te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }} {te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }}
break; break;
case 5: case 5:
#line 106 "hb-ot-shaper-myanmar-machine.rl" #line 109 "hb-ot-shaper-myanmar-machine.rl"
{te = p;p--;{ found_syllable (myanmar_consonant_syllable); }} {te = p;p--;{ found_syllable (myanmar_consonant_syllable); }}
break; break;
case 7: case 7:
#line 109 "hb-ot-shaper-myanmar-machine.rl" #line 112 "hb-ot-shaper-myanmar-machine.rl"
{te = p;p--;{ found_syllable (myanmar_broken_cluster); }} {te = p;p--;{ found_syllable (myanmar_broken_cluster); }}
break; break;
case 9: case 9:
#line 110 "hb-ot-shaper-myanmar-machine.rl" #line 113 "hb-ot-shaper-myanmar-machine.rl"
{te = p;p--;{ found_syllable (myanmar_non_myanmar_cluster); }} {te = p;p--;{ found_syllable (myanmar_non_myanmar_cluster); }}
break; break;
#line 469 "hb-ot-shaper-myanmar-machine.hh" #line 528 "hb-ot-shaper-myanmar-machine.hh"
} }
_again: _again:
@ -474,7 +533,7 @@ _again:
#line 1 "NONE" #line 1 "NONE"
{ts = 0;} {ts = 0;}
break; break;
#line 478 "hb-ot-shaper-myanmar-machine.hh" #line 537 "hb-ot-shaper-myanmar-machine.hh"
} }
if ( ++p != pe ) if ( ++p != pe )
@ -490,7 +549,7 @@ _again:
} }
#line 142 "hb-ot-shaper-myanmar-machine.rl" #line 145 "hb-ot-shaper-myanmar-machine.rl"
} }

View File

@ -57,32 +57,35 @@ enum myanmar_syllable_type_t {
%%{ %%{
export A = 9;
export As = 18; # Asat
export C = 1; export C = 1;
export D = 10; # Digits except zero = GB
export D0 = 20; # Digit zero
export DB = 3; # Dot below = OT_N
export GB = 10; # = OT_PLACEHOLDER
export H = 4;
export IV = 2; export IV = 2;
export MH = 21; # Medial export DB = 3; # Dot below = OT_N
export MR = 22; # Medial export H = 4;
export MW = 23; # Medial
export MY = 24; # Medial
export ML = 32; # Consonant medials
export PT = 25; # Pwo and other tones
export V = 8; # Visarga and Shan tones
export VAbv = 26;
export VBlw = 27;
export VPre = 28;
export VPst = 29;
export VS = 30; # Variation selectors
export ZWJ = 6;
export ZWNJ = 5; export ZWNJ = 5;
export ZWJ = 6;
export V = 8; # Visarga and Shan tones
export GB = 10; # = OT_PLACEHOLDER
export D = 10; # Digits except zero = GB
export A = 9;
export Ra = 15; export Ra = 15;
export P = 31; # Punctuation export CS = 18;
export CS = 19;
export VAbv = 20;
export VBlw = 21;
export VPre = 22;
export VPst = 23;
export As = 32; # Asat
export D0 = 33; # Digit zero
export MH = 34; # Medial
export MR = 35; # Medial
export MW = 36; # Medial
export MY = 37; # Medial
export PT = 38; # Pwo and other tones
export VS = 39; # Variation selectors
export P = 40; # Punctuation
export ML = 41; # Consonant medials
j = ZWJ|ZWNJ; # Joiners j = ZWJ|ZWNJ; # Joiners
k = (Ra As H); # Kinzi k = (Ra As H); # Kinzi