Add U+25CC to lone Robatic but not after U+17D9

This commit is contained in:
David Corbett 2022-06-24 21:02:26 -04:00 committed by Behdad Esfahbod
parent 0f15cb12de
commit 1555b30081
6 changed files with 149 additions and 129 deletions

View File

@ -320,6 +320,8 @@ category_overrides = {
0x17DD: 'Ygroup',
0x17D3: 'Ygroup', # Just guessing. Uniscribe doesn't categorize it.
0x17D9: 'PLACEHOLDER', # https://github.com/harfbuzz/harfbuzz/issues/2384
# Myanmar

View File

@ -87,7 +87,7 @@ static_assert (OT_VPst == M_Cat(VPst), "");
#define _OT_MW OT_MW /* 2 chars; MW */
#define _OT_MY OT_MY /* 3 chars; MY */
#define _OT_N OT_N /* 17 chars; N */
#define _OT_GB OT_PLACEHOLDER /* 174 chars; PLACEHOLDER */
#define _OT_GB OT_PLACEHOLDER /* 175 chars; PLACEHOLDER */
#define _OT_PT OT_PT /* 8 chars; PT */
#define _OT_R OT_Ra /* 15 chars; Ra */
#define _OT_Rf OT_Repha /* 1 chars; Repha */
@ -110,7 +110,7 @@ static_assert (OT_VPst == M_Cat(VPst), "");
#define _POS_A POS_AFTER_MAIN /* 3 chars; AFTER_MAIN */
#define _POS_AP POS_AFTER_POST /* 50 chars; AFTER_POST */
#define _POS_AS POS_AFTER_SUB /* 60 chars; AFTER_SUB */
#define _POS_C POS_BASE_C /* 901 chars; BASE_C */
#define _POS_C POS_BASE_C /* 902 chars; BASE_C */
#define _POS_BS POS_BEFORE_SUB /* 31 chars; BEFORE_SUB */
#define _POS_B POS_BELOW_C /* 13 chars; BELOW_C */
#define _POS_X POS_END /* 71 chars; END */
@ -383,7 +383,7 @@ static const uint16_t indic_table[] = {
/* 17C0 */ _(VR,R), _(VL,L), _(VL,L), _(VL,L), _(VR,R), _(VR,R), _(Xg,X), _(Yg,X),
/* 17C8 */ _(Yg,X), _(Rt,X), _(Rt,X), _(Xg,X), _(Rt,X), _(Xg,X), _(Xg,X), _(Xg,X),
/* 17D0 */ _(Xg,X), _(Xg,X), _(H,X), _(Yg,X), _(X,X), _(X,X), _(X,X), _(X,X),
/* 17D8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(S,SM), _(Yg,X), _(X,X), _(X,X),
/* 17D8 */ _(X,X), _(GB,C), _(X,X), _(X,X), _(S,SM), _(Yg,X), _(X,X), _(X,X),
/* 17E0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C),
/* 17E8 */ _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),

View File

@ -69,27 +69,29 @@ 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, 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
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, 4u, 27u, 27u, 27u, 4u, 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, 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
22, 22, 22, 22, 22, 15, 22, 22,
22, 22, 22, 22, 22, 27, 24, 15,
24, 24, 1, 24, 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, 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
177, 200, 223, 246, 269, 292, 308, 331,
354, 377, 400, 423, 446, 469, 497, 522,
538, 563, 588, 590, 615, 640, 665, 690,
715, 740, 756, 781, 806, 808, 833, 858,
883, 908, 933
};
static const char _khmer_syllable_machine_indicies[] = {
@ -120,139 +122,153 @@ static const char _khmer_syllable_machine_indicies[] = {
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, 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, 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, 15, 24, 26, 22, 27, 27, 17,
19, 27, 32, 33, 33, 31, 31, 31,
31, 31, 31, 31, 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, 28, 31, 34, 35, 35, 31, 31,
31, 31, 31, 31, 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, 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, 31, 31, 8, 5, 31,
34, 36, 36, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 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, 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, 2, 10, 12, 8, 31, 31,
4, 5, 31, 39, 39, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
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
0, 0, 0, 0, 0, 12, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 0,
0, 0, 0, 13, 4, 0, 15, 15,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 16, 14, 14,
14, 14, 17, 18, 14, 15, 15, 19,
19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 18, 19, 20, 20, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 20, 14, 15, 15, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 16, 14, 14, 14, 14,
14, 18, 14, 21, 21, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
16, 14, 22, 22, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 23,
14, 24, 24, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
16, 14, 14, 14, 14, 14, 25, 14,
24, 24, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 25, 14, 26,
26, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 16, 14,
14, 14, 14, 14, 27, 14, 26, 26,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 27, 14, 29, 29, 28,
30, 31, 31, 28, 28, 28, 13, 13,
28, 28, 28, 29, 28, 28, 28, 28,
16, 25, 27, 23, 28, 17, 18, 20,
28, 33, 34, 34, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 2, 10, 12, 8, 32, 13, 4,
5, 32, 35, 35, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
35, 32, 33, 36, 36, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 2, 10, 12, 8, 32, 3,
4, 5, 32, 37, 38, 38, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 2, 10, 12, 8, 32,
32, 4, 5, 32, 5, 32, 37, 6,
6, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 8, 32, 32, 2, 5, 32, 37,
7, 7, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 8, 5, 32,
37, 39, 39, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
2, 32, 32, 8, 32, 32, 10, 5,
32, 37, 40, 40, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 2, 10, 32, 8, 32, 32, 12,
5, 32, 33, 38, 38, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 2, 10, 12, 8, 32, 32,
4, 5, 32, 33, 38, 38, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 2, 10, 12, 8, 32,
3, 4, 5, 32, 42, 42, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 42, 41, 30, 43, 43, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 16, 25, 27, 23,
41, 17, 18, 20, 41, 44, 45, 45,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 16, 25, 27,
23, 41, 41, 18, 20, 41, 20, 41,
44, 21, 21, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 23, 41, 41, 16, 20,
41, 44, 22, 22, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 23,
20, 41, 44, 46, 46, 41, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 16, 41, 41, 23, 41, 41,
25, 20, 41, 44, 47, 47, 41, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 16, 25, 41, 23, 41,
41, 27, 20, 41, 30, 45, 45, 41,
41, 41, 41, 41, 41, 41, 41, 41,
41, 41, 41, 41, 16, 25, 27, 23,
41, 41, 18, 20, 41, 15, 15, 48,
48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 16, 48, 48, 48,
48, 48, 18, 48, 0
};
static const char _khmer_syllable_machine_trans_targs[] = {
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
21, 1, 27, 31, 25, 26, 4, 5,
28, 7, 29, 9, 30, 32, 21, 12,
37, 41, 35, 21, 36, 15, 16, 38,
18, 39, 20, 40, 21, 22, 33, 42,
21, 23, 10, 24, 0, 2, 3, 6,
8, 21, 34, 11, 13, 14, 17, 19,
21
};
static const char _khmer_syllable_machine_trans_actions[] = {
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
2, 0, 2, 0, 2, 2, 3, 0,
2, 4, 4, 5, 0, 0, 0, 2,
0, 2, 0, 2, 8, 2, 0, 9,
10, 0, 0, 2, 0, 0, 0, 0,
0, 11, 4, 0, 0, 0, 0, 0,
12
};
static const 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, 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, 0
};
static const 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, 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, 0
};
static const unsigned char _khmer_syllable_machine_eof_trans[] = {
static const short _khmer_syllable_machine_eof_trans[] = {
1, 1, 1, 1, 1, 1, 1, 1,
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
1, 1, 1, 15, 20, 15, 15, 15,
15, 15, 15, 15, 15, 0, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33,
33, 42, 42, 42, 42, 42, 42, 42,
42, 42, 49
};
static const int khmer_syllable_machine_start = 20;
static const int khmer_syllable_machine_first_final = 20;
static const int khmer_syllable_machine_start = 21;
static const int khmer_syllable_machine_first_final = 21;
static const int khmer_syllable_machine_error = -1;
static const int khmer_syllable_machine_en_main = 20;
static const int khmer_syllable_machine_en_main = 21;
#line 53 "hb-ot-shaper-khmer-machine.rl"
@ -278,7 +294,7 @@ find_syllables_khmer (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
#line 282 "hb-ot-shaper-khmer-machine.hh"
#line 298 "hb-ot-shaper-khmer-machine.hh"
{
cs = khmer_syllable_machine_start;
ts = 0;
@ -294,7 +310,7 @@ find_syllables_khmer (hb_buffer_t *buffer)
unsigned int syllable_serial = 1;
#line 298 "hb-ot-shaper-khmer-machine.hh"
#line 314 "hb-ot-shaper-khmer-machine.hh"
{
int _slen;
int _trans;
@ -308,7 +324,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
#line 312 "hb-ot-shaper-khmer-machine.hh"
#line 328 "hb-ot-shaper-khmer-machine.hh"
}
_keys = _khmer_syllable_machine_trans_keys + (cs<<1);
@ -378,7 +394,7 @@ _eof_trans:
#line 98 "hb-ot-shaper-khmer-machine.rl"
{act = 3;}
break;
#line 382 "hb-ot-shaper-khmer-machine.hh"
#line 398 "hb-ot-shaper-khmer-machine.hh"
}
_again:
@ -387,7 +403,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
#line 391 "hb-ot-shaper-khmer-machine.hh"
#line 407 "hb-ot-shaper-khmer-machine.hh"
}
if ( ++p != pe )

View File

@ -88,7 +88,7 @@ matra_group = VPre? xgroup VBlw? xgroup (joiner?.VAbv)? xgroup VPst?;
syllable_tail = xgroup matra_group xgroup (H.c)? ygroup;
broken_cluster = (H.cn)* (H | syllable_tail);
broken_cluster = Robatic? (H.cn)* (H | syllable_tail);
consonant_syllable = (cn|PLACEHOLDER|DOTTEDCIRCLE) broken_cluster;
other = any;

View File

@ -88,3 +88,5 @@
../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf;;U+17A0,U+17D2,U+179A,U+17D2,U+179C,U+1784,U+17D2,U+1780;[uni17D2179A=0+287|uni17A0=0+928|uni17D2179C=0@20,-26+0|uni1784=5+635|uni17D21780=5@0,-26+0]
../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf;;U+17A0,U+17D2,U+179A,U+17D2,U+179C,U+17B6,U+17C6,U+1784;[uni17D2179A=0+287|uni17A017B6=0+1216|uni17D2179C=0@-268,-26+0|uni17C6=0@47,-29+0|uni1784=7+635]
../fonts/ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf;;U+17D2,U+17D2;[uni25CC=0+635|uni17D2=0+0|uni25CC=0+635|uni17D2=0+0]
../fonts/086d83239e8f958391ff6cdd8fda9376a4bd3673.ttf;;U+17C9;[uni25CC=0+655|uni17C9=0+0]
../fonts/086d83239e8f958391ff6cdd8fda9376a4bd3673.ttf;;U+17D9,U+17C9;[uni17D9=0+655|uni17C9=0+0]