From 40aa4e8320204ec376e9b16f91da9c95ae82e6d9 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 9 Jun 2022 13:30:00 -0600 Subject: [PATCH] [indic/khmer/myanmar] Add Khmer/Myanmar categories to indic_category_t --- src/hb-ot-shaper-indic.hh | 30 +- src/hb-ot-shaper-khmer-machine.hh | 262 +++++++------- src/hb-ot-shaper-khmer-machine.rl | 18 +- src/hb-ot-shaper-myanmar-machine.hh | 507 ++++++++++++++++------------ src/hb-ot-shaper-myanmar-machine.rl | 47 +-- 5 files changed, 474 insertions(+), 390 deletions(-) diff --git a/src/hb-ot-shaper-indic.hh b/src/hb-ot-shaper-indic.hh index c4c58ded5..b280bf2ce 100644 --- a/src/hb-ot-shaper-indic.hh +++ b/src/hb-ot-shaper-indic.hh @@ -57,19 +57,35 @@ enum indic_category_t { OT_PLACEHOLDER = 10, OT_DOTTEDCIRCLE = 11, 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_Ra = 15, OT_CM = 16, /* Consonant-Medial. */ OT_Symbol = 17, /* Avagraha, etc that take marks (SM,A,VD). */ OT_CS = 18, - /* The following are used by Khmer & Myanmar shapers. Defined - * here for them to share. */ - OT_VAbv = 26, - OT_VBlw = 27, - OT_VPre = 28, - OT_VPst = 29, + /* Khmer & Myanmar shapers. */ + OT_VAbv = 20, + OT_VBlw = 21, + OT_VPre = 22, + OT_VPst = 23, + + /* 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)) diff --git a/src/hb-ot-shaper-khmer-machine.hh b/src/hb-ot-shaper-khmer-machine.hh index b099b5122..bcd12c879 100644 --- a/src/hb-ot-shaper-khmer-machine.hh +++ b/src/hb-ot-shaper-khmer-machine.hh @@ -50,169 +50,173 @@ enum khmer_syllable_type_t { #line 52 "hb-ot-shaper-khmer-machine.hh" #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_PLACEHOLDER 10u #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_VAbv 26u -#define khmer_syllable_machine_ex_VBlw 27u -#define khmer_syllable_machine_ex_VPre 28u -#define khmer_syllable_machine_ex_VPst 29u -#define khmer_syllable_machine_ex_Xgroup 21u -#define khmer_syllable_machine_ex_Ygroup 22u +#define khmer_syllable_machine_ex_VAbv 20u +#define khmer_syllable_machine_ex_VBlw 21u +#define khmer_syllable_machine_ex_VPre 22u +#define khmer_syllable_machine_ex_VPst 23u +#define khmer_syllable_machine_ex_Xgroup 26u +#define khmer_syllable_machine_ex_Ygroup 27u #define khmer_syllable_machine_ex_ZWJ 6u #define khmer_syllable_machine_ex_ZWNJ 5u #line 70 "hb-ot-shaper-khmer-machine.hh" 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, 21u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 15u, 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, 15u, 5u, 26u, 5u, 29u, - 5u, 29u, 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 1u, 15u, 5u, 29u, 5u, 29u, + 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 1u, 15u, 5u, 26u, 5u, 26u, + 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 1u, 15u, 5u, 26u, + 5u, 26u, 5u, 26u, 5u, 26u, 5u, 26u, 1u, 27u, 5u, 27u, 5u, 27u, 5u, 27u, + 5u, 27u, 27u, 27u, 5u, 27u, 5u, 27u, 5u, 27u, 1u, 15u, 5u, 26u, 5u, 27u, + 5u, 27u, 5u, 27u, 27u, 27u, 5u, 27u, 5u, 27u, 1u, 15u, 5u, 27u, 5u, 27u, 0 }; static const char _khmer_syllable_machine_key_spans[] = { - 22, 17, 22, 17, 15, 17, 22, 17, - 22, 17, 17, 22, 17, 15, 17, 22, - 17, 22, 17, 22, 29, 25, 25, 25, - 1, 18, 25, 25, 25, 15, 22, 25, - 25, 1, 18, 25, 25, 15, 25, 25 + 22, 22, 22, 22, 22, 15, 22, 22, + 22, 22, 22, 22, 22, 22, 15, 22, + 22, 22, 22, 22, 27, 23, 23, 23, + 23, 1, 23, 23, 23, 15, 22, 23, + 23, 23, 1, 23, 23, 15, 23, 23 }; static const short _khmer_syllable_machine_index_offsets[] = { - 0, 23, 41, 64, 82, 98, 116, 139, - 157, 180, 198, 216, 239, 257, 273, 291, - 314, 332, 355, 373, 396, 426, 452, 478, - 504, 506, 525, 551, 577, 603, 619, 642, - 668, 694, 696, 715, 741, 767, 783, 809 + 0, 23, 46, 69, 92, 115, 131, 154, + 177, 200, 223, 246, 269, 292, 315, 331, + 354, 377, 400, 423, 446, 474, 498, 522, + 546, 570, 572, 596, 620, 644, 660, 683, + 707, 731, 755, 757, 781, 805, 821, 845 }; 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, + 0, 0, 0, 0, 3, 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, 4, 0, 1, 1, 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, - 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, 2, 0, 6, 6, 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, 7, 0, 8, 8, 0, 0, 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, 8, 0, 9, 9, 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, 15, 13, - 14, 14, 16, 16, 16, 16, 16, 16, + 13, 13, 13, 13, 15, 13, 14, 14, 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, 19, - 16, 20, 20, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 17, 16, 16, + 16, 16, 16, 15, 16, 18, 18, 16, + 16, 16, 16, 16, 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, 16, 16, 16, 16, 16, + 16, 20, 16, 21, 21, 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, 17, 16, 16, 16, 16, 16, + 23, 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, 23, + 16, 24, 24, 16, 16, 16, 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, + 17, 16, 16, 16, 16, 16, 25, 16, + 24, 24, 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, 16, 16, 16, - 16, 16, 16, 16, 26, 15, 16, 16, - 16, 16, 17, 16, 28, 28, 27, 27, - 29, 29, 27, 27, 27, 2, 2, 27, - 30, 27, 28, 27, 27, 27, 27, 27, - 15, 19, 27, 27, 27, 17, 23, 25, + 16, 16, 16, 16, 16, 25, 16, 14, + 14, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 17, 16, + 16, 16, 16, 26, 15, 16, 28, 28, + 27, 27, 29, 29, 27, 27, 27, 3, + 3, 27, 27, 27, 28, 27, 27, 27, + 27, 17, 23, 25, 20, 30, 27, 15, 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, 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, 15, 38, 38, 38, 38, - 17, 38, 40, 40, 39, 39, 39, 39, - 39, 39, 41, 39, 39, 39, 39, 39, - 39, 39, 15, 19, 39, 39, 39, 17, - 23, 25, 21, 39, 18, 18, 39, 39, - 39, 39, 39, 39, 41, 39, 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, - 41, 39, 39, 39, 39, 39, 39, 39, - 21, 19, 39, 42, 42, 39, 39, 39, - 39, 39, 39, 41, 39, 39, 39, 39, - 39, 39, 39, 23, 19, 39, 39, 39, - 17, 39, 39, 21, 39, 43, 43, 39, - 39, 39, 39, 39, 39, 41, 39, 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, 44, 39, 45, - 45, 39, 39, 39, 39, 39, 39, 30, - 39, 39, 39, 39, 39, 39, 26, 15, - 19, 39, 39, 39, 17, 23, 25, 21, - 39, 40, 40, 39, 39, 39, 39, 39, - 39, 30, 39, 39, 39, 39, 39, 39, - 39, 15, 19, 39, 39, 39, 17, 23, - 25, 21, 39, 0 + 38, 38, 38, 17, 38, 38, 38, 38, + 38, 15, 38, 40, 40, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 17, 23, 25, 20, 41, 39, + 15, 21, 39, 18, 18, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 20, 41, 39, + 17, 21, 39, 19, 19, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 41, 39, + 20, 21, 39, 21, 39, 42, 42, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 17, 39, 39, 20, + 41, 39, 23, 21, 39, 43, 43, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 17, 23, 39, 20, + 41, 39, 25, 21, 39, 44, 44, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 44, 39, 45, 45, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 17, 23, 25, 20, + 30, 26, 15, 21, 39, 40, 40, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 17, 23, 25, 20, + 30, 39, 15, 21, 39, 0 }; 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, - 20, 32, 12, 33, 14, 34, 16, 35, + 20, 32, 12, 13, 33, 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 + 0, 29, 2, 5, 6, 8, 20, 20, + 11, 14, 15, 17, 38, 19 }; static const char _khmer_syllable_machine_trans_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, + 1, 0, 2, 2, 2, 0, 0, 2, + 0, 0, 2, 0, 2, 3, 0, 4, + 5, 2, 0, 0, 2, 0, 0, 2, 0, 2, 4, 8, 2, 9, 0, 10, 0, 0, 0, 0, 0, 0, 11, 12, 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) \ @@ -272,7 +276,7 @@ find_syllables_khmer (hb_buffer_t *buffer) int cs; 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; ts = 0; @@ -280,7 +284,7 @@ find_syllables_khmer (hb_buffer_t *buffer) act = 0; } -#line 116 "hb-ot-shaper-khmer-machine.rl" +#line 118 "hb-ot-shaper-khmer-machine.rl" p = 0; @@ -288,7 +292,7 @@ find_syllables_khmer (hb_buffer_t *buffer) unsigned int syllable_serial = 1; -#line 292 "hb-ot-shaper-khmer-machine.hh" +#line 296 "hb-ot-shaper-khmer-machine.hh" { int _slen; int _trans; @@ -302,7 +306,7 @@ _resume: #line 1 "NONE" {ts = p;} 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); @@ -325,27 +329,27 @@ _eof_trans: {te = p+1;} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; case 3: @@ -363,16 +367,16 @@ _eof_trans: case 4: #line 1 "NONE" {te = p+1;} -#line 91 "hb-ot-shaper-khmer-machine.rl" +#line 93 "hb-ot-shaper-khmer-machine.rl" {act = 2;} break; case 9: #line 1 "NONE" {te = p+1;} -#line 92 "hb-ot-shaper-khmer-machine.rl" +#line 94 "hb-ot-shaper-khmer-machine.rl" {act = 3;} break; -#line 376 "hb-ot-shaper-khmer-machine.hh" +#line 380 "hb-ot-shaper-khmer-machine.hh" } _again: @@ -381,7 +385,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 385 "hb-ot-shaper-khmer-machine.hh" +#line 389 "hb-ot-shaper-khmer-machine.hh" } if ( ++p != pe ) @@ -397,7 +401,7 @@ _again: } -#line 124 "hb-ot-shaper-khmer-machine.rl" +#line 126 "hb-ot-shaper-khmer-machine.rl" } diff --git a/src/hb-ot-shaper-khmer-machine.rl b/src/hb-ot-shaper-khmer-machine.rl index bb9b92201..f0de340dd 100644 --- a/src/hb-ot-shaper-khmer-machine.rl +++ b/src/hb-ot-shaper-khmer-machine.rl @@ -60,15 +60,17 @@ export ZWNJ = 5; export ZWJ = 6; export PLACEHOLDER = 10; export DOTTEDCIRCLE = 11; -export Coeng= 13; export Ra = 15; -export Robatic = 20; -export Xgroup = 21; -export Ygroup = 22; -export VAbv = 26; -export VBlw = 27; -export VPre = 28; -export VPst = 29; + +export VAbv = 20; +export VBlw = 21; +export VPre = 22; +export VPst = 23; + +export Coeng = 24; +export Robatic = 25; +export Xgroup = 26; +export Ygroup = 27; c = (C | Ra | V); cn = c.((ZWJ|ZWNJ)?.Robatic)?; diff --git a/src/hb-ot-shaper-myanmar-machine.hh b/src/hb-ot-shaper-myanmar-machine.hh index 29b81c1a8..f8fcfc502 100644 --- a/src/hb-ot-shaper-myanmar-machine.hh +++ b/src/hb-ot-shaper-myanmar-machine.hh @@ -53,265 +53,324 @@ enum myanmar_syllable_type_t { #line 55 "hb-ot-shaper-myanmar-machine.hh" #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_CS 19u +#define myanmar_syllable_machine_ex_CS 18u #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_GB 10u #define myanmar_syllable_machine_ex_H 4u #define myanmar_syllable_machine_ex_IV 2u -#define myanmar_syllable_machine_ex_MH 21u -#define myanmar_syllable_machine_ex_ML 32u -#define myanmar_syllable_machine_ex_MR 22u -#define myanmar_syllable_machine_ex_MW 23u -#define myanmar_syllable_machine_ex_MY 24u -#define myanmar_syllable_machine_ex_P 31u -#define myanmar_syllable_machine_ex_PT 25u +#define myanmar_syllable_machine_ex_MH 34u +#define myanmar_syllable_machine_ex_ML 41u +#define myanmar_syllable_machine_ex_MR 35u +#define myanmar_syllable_machine_ex_MW 36u +#define myanmar_syllable_machine_ex_MY 37u +#define myanmar_syllable_machine_ex_P 40u +#define myanmar_syllable_machine_ex_PT 38u #define myanmar_syllable_machine_ex_Ra 15u #define myanmar_syllable_machine_ex_V 8u -#define myanmar_syllable_machine_ex_VAbv 26u -#define myanmar_syllable_machine_ex_VBlw 27u -#define myanmar_syllable_machine_ex_VPre 28u -#define myanmar_syllable_machine_ex_VPst 29u -#define myanmar_syllable_machine_ex_VS 30u +#define myanmar_syllable_machine_ex_VAbv 20u +#define myanmar_syllable_machine_ex_VBlw 21u +#define myanmar_syllable_machine_ex_VPre 22u +#define myanmar_syllable_machine_ex_VPst 23u +#define myanmar_syllable_machine_ex_VS 39u #define myanmar_syllable_machine_ex_ZWJ 6u #define myanmar_syllable_machine_ex_ZWNJ 5u #line 84 "hb-ot-shaper-myanmar-machine.hh" 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, - 3u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 32u, 1u, 15u, 3u, 32u, 3u, 32u, - 3u, 29u, 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 32u, 3u, 32u, 3u, 32u, - 3u, 32u, 3u, 32u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, - 3u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 32u, 1u, 15u, 3u, 32u, 3u, 32u, - 3u, 32u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 32u, 3u, 32u, - 3u, 32u, 3u, 32u, 3u, 32u, 3u, 32u, 3u, 32u, 1u, 32u, 1u, 15u, 8u, 8u, + 1u, 41u, 3u, 41u, 5u, 38u, 5u, 8u, 3u, 41u, 3u, 38u, 3u, 38u, 5u, 38u, + 5u, 38u, 3u, 38u, 3u, 38u, 3u, 41u, 5u, 38u, 1u, 15u, 3u, 38u, 3u, 38u, + 3u, 39u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 41u, + 3u, 41u, 3u, 41u, 5u, 38u, 5u, 8u, 3u, 41u, 3u, 38u, 3u, 38u, 5u, 38u, + 5u, 38u, 3u, 38u, 3u, 38u, 3u, 41u, 5u, 38u, 1u, 15u, 3u, 41u, 3u, 38u, + 3u, 38u, 3u, 39u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 38u, 3u, 41u, 3u, 41u, + 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 1u, 41u, 1u, 15u, 8u, 8u, 0 }; static const char _myanmar_syllable_machine_key_spans[] = { - 32, 30, 25, 4, 25, 23, 21, 21, - 30, 27, 27, 27, 30, 15, 30, 30, - 27, 27, 27, 28, 27, 30, 30, 30, - 30, 30, 25, 4, 25, 23, 21, 21, - 30, 27, 27, 27, 30, 15, 30, 30, - 30, 27, 27, 27, 28, 27, 30, 30, - 30, 30, 30, 30, 30, 32, 15, 1 + 41, 39, 34, 4, 39, 36, 36, 34, + 34, 36, 36, 39, 34, 15, 36, 36, + 37, 36, 39, 39, 36, 39, 39, 39, + 39, 39, 34, 4, 39, 36, 36, 34, + 34, 36, 36, 39, 34, 15, 39, 36, + 36, 37, 36, 39, 39, 36, 39, 39, + 39, 39, 39, 39, 39, 41, 15, 1 }; static const short _myanmar_syllable_machine_index_offsets[] = { - 0, 33, 64, 90, 95, 121, 145, 167, - 189, 220, 248, 276, 304, 335, 351, 382, - 413, 441, 469, 497, 526, 554, 585, 616, - 647, 678, 709, 735, 740, 766, 790, 812, - 834, 865, 893, 921, 949, 980, 996, 1027, - 1058, 1089, 1117, 1145, 1173, 1202, 1230, 1261, - 1292, 1323, 1354, 1385, 1416, 1447, 1480, 1496 + 0, 42, 82, 117, 122, 162, 199, 236, + 271, 306, 343, 380, 420, 455, 471, 508, + 545, 583, 620, 660, 700, 737, 777, 817, + 857, 897, 937, 972, 977, 1017, 1054, 1091, + 1126, 1161, 1198, 1235, 1275, 1310, 1326, 1366, + 1403, 1440, 1478, 1515, 1555, 1595, 1632, 1672, + 1712, 1752, 1792, 1832, 1872, 1912, 1954, 1970 }; static const char _myanmar_syllable_machine_indicies[] = { 1, 1, 2, 3, 4, 4, 0, 5, 6, 1, 0, 0, 0, 0, 7, 0, - 0, 8, 9, 0, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, - 0, 23, 24, 25, 25, 22, 26, 27, + 0, 8, 0, 9, 10, 11, 12, 0, + 0, 0, 0, 0, 0, 0, 0, 13, + 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, - 28, 22, 22, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 22, 39, 22, - 25, 25, 22, 26, 22, 22, 22, 22, + 22, 22, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22, 22, 40, 22, 22, - 22, 22, 22, 22, 33, 22, 22, 22, - 37, 22, 25, 25, 22, 26, 22, 25, + 22, 22, 22, 37, 22, 25, 25, 22, + 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, 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, - 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, 33, 22, 23, 22, 25, - 25, 22, 26, 27, 22, 22, 22, 22, - 22, 22, 22, 22, 43, 22, 22, 44, - 22, 22, 22, 33, 45, 22, 22, 37, - 22, 22, 43, 22, 23, 22, 25, 25, - 22, 26, 27, 22, 22, 22, 22, 22, + 37, 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, 22, - 22, 22, 33, 22, 22, 22, 37, 22, - 23, 22, 25, 25, 22, 26, 27, 22, - 22, 22, 22, 22, 22, 22, 22, 43, - 22, 22, 22, 22, 22, 22, 33, 45, + 22, 22, 22, 22, 22, 37, 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, 22, 22, 22, 22, 37, 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, 22, 22, 22, 22, 37, + 22, 22, 42, 22, 25, 25, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 33, 45, 22, 22, 37, 22, - 23, 22, 25, 25, 22, 26, 27, 22, - 22, 22, 22, 22, 22, 22, 22, 43, - 22, 22, 22, 22, 22, 22, 33, 45, - 22, 22, 37, 22, 22, 43, 22, 1, + 22, 22, 22, 22, 22, 22, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 37, 22, 1, 1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 1, 22, 23, 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, 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, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 33, - 34, 35, 22, 37, 22, 23, 22, 25, - 25, 22, 26, 27, 22, 22, 22, 22, + 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 33, 22, 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, 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, 22, 22, 22, 37, 46, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 29, 30, 31, 22, 33, 34, 35, - 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, + 28, 29, 30, 31, 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, 23, 60, 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, 1, - 1, 2, 3, 49, 49, 48, 5, 6, - 1, 48, 48, 48, 48, 1, 48, 48, - 8, 48, 48, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 48, 21, 48, - 1, 1, 61, 61, 61, 61, 61, 61, - 61, 1, 61, 61, 61, 61, 1, 61, - 62, 61, 0 + 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, + 1, 1, 2, 3, 49, 49, 48, 5, + 6, 1, 48, 48, 48, 48, 1, 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, 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[] = { - 0, 1, 26, 37, 0, 27, 33, 51, - 39, 54, 40, 46, 47, 48, 29, 42, - 43, 44, 32, 50, 55, 45, 0, 2, - 13, 0, 3, 9, 14, 15, 21, 22, - 23, 5, 17, 18, 19, 8, 25, 20, - 4, 6, 7, 10, 12, 11, 16, 24, - 0, 0, 28, 30, 31, 34, 36, 35, - 38, 41, 49, 52, 53, 0, 0 + 0, 1, 26, 37, 0, 27, 29, 51, + 54, 39, 40, 41, 28, 43, 44, 46, + 47, 48, 30, 50, 55, 45, 0, 2, + 13, 0, 3, 5, 14, 15, 16, 4, + 18, 19, 21, 22, 23, 6, 25, 20, + 12, 9, 10, 11, 7, 8, 17, 24, + 0, 0, 36, 33, 34, 35, 31, 32, + 38, 42, 49, 52, 53, 0, 0 }; 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) \ @@ -385,7 +444,7 @@ find_syllables_myanmar (hb_buffer_t *buffer) int cs; 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; ts = 0; @@ -393,7 +452,7 @@ find_syllables_myanmar (hb_buffer_t *buffer) act = 0; } -#line 134 "hb-ot-shaper-myanmar-machine.rl" +#line 137 "hb-ot-shaper-myanmar-machine.rl" p = 0; @@ -401,7 +460,7 @@ find_syllables_myanmar (hb_buffer_t *buffer) unsigned int syllable_serial = 1; -#line 405 "hb-ot-shaper-myanmar-machine.hh" +#line 464 "hb-ot-shaper-myanmar-machine.hh" { int _slen; int _trans; @@ -415,7 +474,7 @@ _resume: #line 1 "NONE" {ts = p;} 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); @@ -434,38 +493,38 @@ _eof_trans: switch ( _myanmar_syllable_machine_trans_actions[_trans] ) { 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); }} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; 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); }} break; -#line 469 "hb-ot-shaper-myanmar-machine.hh" +#line 528 "hb-ot-shaper-myanmar-machine.hh" } _again: @@ -474,7 +533,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 478 "hb-ot-shaper-myanmar-machine.hh" +#line 537 "hb-ot-shaper-myanmar-machine.hh" } if ( ++p != pe ) @@ -490,7 +549,7 @@ _again: } -#line 142 "hb-ot-shaper-myanmar-machine.rl" +#line 145 "hb-ot-shaper-myanmar-machine.rl" } diff --git a/src/hb-ot-shaper-myanmar-machine.rl b/src/hb-ot-shaper-myanmar-machine.rl index ecabb7062..93448d211 100644 --- a/src/hb-ot-shaper-myanmar-machine.rl +++ b/src/hb-ot-shaper-myanmar-machine.rl @@ -57,32 +57,35 @@ enum myanmar_syllable_type_t { %%{ -export A = 9; -export As = 18; # Asat 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 MH = 21; # Medial -export MR = 22; # Medial -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 DB = 3; # Dot below = OT_N +export H = 4; 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 P = 31; # Punctuation -export CS = 19; +export CS = 18; + +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 k = (Ra As H); # Kinzi