diff --git a/src/hb-ot-shaper-indic.hh b/src/hb-ot-shaper-indic.hh index cffb1b7c6..a1328f598 100644 --- a/src/hb-ot-shaper-indic.hh +++ b/src/hb-ot-shaper-indic.hh @@ -76,7 +76,7 @@ enum ot_category_t { OT_VPst = 23, /* Khmer. */ - OT_Coeng = 24, + OT_Coeng = OT_H, OT_Robatic = 25, OT_Xgroup = 26, OT_Ygroup = 27, diff --git a/src/hb-ot-shaper-khmer-machine.hh b/src/hb-ot-shaper-khmer-machine.hh index 8410a58cc..cf136121c 100644 --- a/src/hb-ot-shaper-khmer-machine.hh +++ b/src/hb-ot-shaper-khmer-machine.hh @@ -50,7 +50,7 @@ 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 24u +#define khmer_syllable_machine_ex_Coeng 4u #define khmer_syllable_machine_ex_DOTTEDCIRCLE 11u #define khmer_syllable_machine_ex_PLACEHOLDER 10u #define khmer_syllable_machine_ex_Ra 15u @@ -68,28 +68,28 @@ enum khmer_syllable_type_t { #line 70 "hb-ot-shaper-khmer-machine.hh" static const unsigned char _khmer_syllable_machine_trans_keys[] = { - 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, + 5u, 26u, 5u, 26u, 1u, 15u, 5u, 26u, 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, 5u, 26u, 5u, 26u, 1u, 27u, 4u, 27u, 1u, 15u, 4u, 27u, + 27u, 27u, 4u, 27u, 4u, 27u, 4u, 27u, 4u, 27u, 4u, 27u, 1u, 15u, 4u, 27u, + 4u, 27u, 27u, 27u, 4u, 27u, 4u, 27u, 4u, 27u, 4u, 27u, 4u, 27u, 5u, 26u, 0 }; static const char _khmer_syllable_machine_key_spans[] = { - 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 + 22, 22, 15, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 15, 22, 22, 22, + 22, 22, 22, 22, 27, 24, 15, 24, + 1, 24, 24, 24, 24, 24, 15, 24, + 24, 1, 24, 24, 24, 24, 24, 22 }; static const short _khmer_syllable_machine_index_offsets[] = { - 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 + 0, 23, 46, 62, 85, 108, 131, 154, + 177, 200, 223, 246, 269, 285, 308, 331, + 354, 377, 400, 423, 446, 474, 499, 515, + 540, 542, 567, 592, 617, 642, 667, 683, + 708, 733, 735, 760, 785, 810, 835, 860 }; static const char _khmer_syllable_machine_indicies[] = { @@ -98,17 +98,17 @@ static const char _khmer_syllable_machine_indicies[] = { 0, 0, 0, 0, 3, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 1, 1, + 0, 0, 0, 0, 4, 0, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 4, 0, 5, 5, 0, + 0, 0, 0, 4, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 6, 6, 0, 0, + 0, 0, 2, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 8, 8, 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, 2, 0, 0, 0, 0, 0, @@ -122,104 +122,106 @@ static const char _khmer_syllable_machine_indicies[] = { 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, 15, 13, + 13, 13, 13, 16, 17, 13, 14, 14, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 17, 18, 19, 19, 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, 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, 17, 16, 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, 23, - 16, 24, 24, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 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, 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, + 13, 13, 13, 19, 13, 14, 14, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 15, 13, 13, 13, + 13, 13, 17, 13, 20, 20, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 15, 13, 21, 21, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 22, 13, 23, 23, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 15, 13, 13, 13, 13, 13, 24, + 13, 23, 23, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 24, 13, + 25, 25, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 15, + 13, 13, 13, 13, 13, 26, 13, 25, + 25, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 26, 13, 28, 28, + 27, 29, 30, 30, 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, + 27, 15, 24, 26, 22, 27, 27, 17, + 19, 27, 32, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 2, 10, 12, 7, 33, 3, 4, - 8, 31, 34, 34, 31, 31, 31, 31, + 31, 31, 2, 10, 12, 8, 31, 3, + 4, 5, 31, 28, 28, 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, 28, 31, 34, 35, 35, 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, 2, 10, 12, 8, 31, + 31, 4, 5, 31, 5, 31, 34, 6, + 6, 31, 31, 31, 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, 8, 31, 31, 2, 5, 31, 34, + 7, 7, 31, 31, 31, 31, 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, 8, 5, 31, + 34, 36, 36, 31, 31, 31, 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, + 2, 31, 31, 8, 31, 31, 10, 5, + 31, 34, 37, 37, 31, 31, 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, 2, 10, 31, 8, 31, 31, 12, + 5, 31, 32, 35, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 28, 31, 14, 14, 38, 38, + 31, 31, 2, 10, 12, 8, 31, 31, + 4, 5, 31, 39, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 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 + 38, 39, 38, 29, 40, 40, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 15, 24, 26, 22, 38, + 16, 17, 19, 38, 41, 42, 42, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 15, 24, 26, 22, + 38, 38, 17, 19, 38, 19, 38, 41, + 20, 20, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 22, 38, 38, 15, 19, 38, + 41, 21, 21, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 22, 19, + 38, 41, 43, 43, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 15, 38, 38, 22, 38, 38, 24, + 19, 38, 41, 44, 44, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 15, 24, 38, 22, 38, 38, + 26, 19, 38, 29, 42, 42, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 15, 24, 26, 22, 38, + 38, 17, 19, 38, 14, 14, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 15, 45, 45, 45, 45, + 45, 17, 45, 0 }; static const char _khmer_syllable_machine_trans_targs[] = { - 20, 1, 23, 28, 22, 3, 4, 24, - 25, 7, 26, 9, 27, 20, 10, 31, - 20, 32, 12, 13, 33, 34, 16, 35, - 18, 36, 39, 20, 21, 30, 37, 20, - 0, 29, 2, 5, 6, 8, 20, 20, - 11, 14, 15, 17, 38, 19 + 20, 1, 25, 29, 23, 24, 4, 5, + 26, 7, 27, 9, 28, 20, 11, 34, + 38, 32, 20, 33, 14, 15, 35, 17, + 36, 19, 37, 20, 21, 30, 39, 20, + 22, 0, 2, 3, 6, 8, 20, 31, + 10, 12, 13, 16, 18, 20 }; static const char _khmer_syllable_machine_trans_actions[] = { - 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 + 1, 0, 2, 2, 2, 0, 0, 0, + 2, 0, 2, 0, 2, 3, 0, 2, + 4, 4, 5, 0, 0, 0, 2, 0, + 2, 0, 2, 8, 2, 0, 9, 10, + 0, 0, 0, 0, 0, 0, 11, 4, + 0, 0, 0, 0, 0, 12 }; static const char _khmer_syllable_machine_to_state_actions[] = { @@ -240,10 +242,10 @@ static const char _khmer_syllable_machine_from_state_actions[] = { static const unsigned 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 + 1, 1, 14, 19, 14, 14, 14, 14, + 14, 14, 14, 14, 0, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 46 }; static const int khmer_syllable_machine_start = 20; @@ -276,7 +278,7 @@ find_syllables_khmer (hb_buffer_t *buffer) int cs; hb_glyph_info_t *info = buffer->info; -#line 280 "hb-ot-shaper-khmer-machine.hh" +#line 282 "hb-ot-shaper-khmer-machine.hh" { cs = khmer_syllable_machine_start; ts = 0; @@ -292,7 +294,7 @@ find_syllables_khmer (hb_buffer_t *buffer) unsigned int syllable_serial = 1; -#line 296 "hb-ot-shaper-khmer-machine.hh" +#line 298 "hb-ot-shaper-khmer-machine.hh" { int _slen; int _trans; @@ -306,7 +308,7 @@ _resume: #line 1 "NONE" {ts = p;} break; -#line 310 "hb-ot-shaper-khmer-machine.hh" +#line 312 "hb-ot-shaper-khmer-machine.hh" } _keys = _khmer_syllable_machine_trans_keys + (cs<<1); @@ -336,11 +338,11 @@ _eof_trans: #line 96 "hb-ot-shaper-khmer-machine.rl" {te = p;p--;{ found_syllable (khmer_consonant_syllable); }} break; - case 12: + case 11: #line 97 "hb-ot-shaper-khmer-machine.rl" {te = p;p--;{ found_syllable (khmer_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; - case 11: + case 12: #line 98 "hb-ot-shaper-khmer-machine.rl" {te = p;p--;{ found_syllable (khmer_non_khmer_cluster); }} break; @@ -348,11 +350,11 @@ _eof_trans: #line 96 "hb-ot-shaper-khmer-machine.rl" {{p = ((te))-1;}{ found_syllable (khmer_consonant_syllable); }} break; - case 5: + case 3: #line 97 "hb-ot-shaper-khmer-machine.rl" {{p = ((te))-1;}{ found_syllable (khmer_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; - case 3: + case 5: #line 1 "NONE" { switch( act ) { case 2: @@ -376,7 +378,7 @@ _eof_trans: #line 98 "hb-ot-shaper-khmer-machine.rl" {act = 3;} break; -#line 380 "hb-ot-shaper-khmer-machine.hh" +#line 382 "hb-ot-shaper-khmer-machine.hh" } _again: @@ -385,7 +387,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 389 "hb-ot-shaper-khmer-machine.hh" +#line 391 "hb-ot-shaper-khmer-machine.hh" } if ( ++p != pe ) diff --git a/src/hb-ot-shaper-khmer-machine.rl b/src/hb-ot-shaper-khmer-machine.rl index 9eb3b5033..1ebf586f0 100644 --- a/src/hb-ot-shaper-khmer-machine.rl +++ b/src/hb-ot-shaper-khmer-machine.rl @@ -70,7 +70,7 @@ export VBlw = 21; export VPre = 22; export VPst = 23; -export Coeng = 24; +export Coeng = 4; export Robatic = 25; export Xgroup = 26; export Ygroup = 27;