[indic-generator/myanmar] Move most Myanmar category overrides to generator

This commit is contained in:
Behdad Esfahbod 2022-06-09 16:43:50 -06:00
parent c136227f57
commit 37217fc9be
6 changed files with 457 additions and 383 deletions

View File

@ -245,6 +245,114 @@ category_overrides = {
0x17C8: 'Ygroup', 0x17C8: 'Ygroup',
0x17DD: 'Ygroup', 0x17DD: 'Ygroup',
0x17D3: 'Ygroup', # Just guessing. Uniscribe doesn't categorize it. 0x17D3: 'Ygroup', # Just guessing. Uniscribe doesn't categorize it.
# Myanmar
# https://docs.microsoft.com/en-us/typography/script-development/myanmar#analyze
0xFE00: 'VS',
0xFE01: 'VS',
0xFE02: 'VS',
0xFE03: 'VS',
0xFE04: 'VS',
0xFE05: 'VS',
0xFE06: 'VS',
0xFE07: 'VS',
0xFE08: 'VS',
0xFE09: 'VS',
0xFE0A: 'VS',
0xFE0B: 'VS',
0xFE0C: 'VS',
0xFE0D: 'VS',
0xFE0E: 'VS',
0xFE0F: 'VS',
0x104E: 'C', # The spec says C, IndicSyllableCategory doesn't have.
0x002D: 'PLACEHOLDER',
0x00A0: 'PLACEHOLDER',
0x00D7: 'PLACEHOLDER',
0x2012: 'PLACEHOLDER',
0x2013: 'PLACEHOLDER',
0x2014: 'PLACEHOLDER',
0x2015: 'PLACEHOLDER',
0x2022: 'PLACEHOLDER',
0x25FB: 'PLACEHOLDER',
0x25FC: 'PLACEHOLDER',
0x25FD: 'PLACEHOLDER',
0x25FE: 'PLACEHOLDER',
0x1004: 'Ra',
0x101B: 'Ra',
0x105A: 'Ra',
0x1032: 'A',
0x1036: 'A',
0x1039: 'H',
0x103A: 'As',
0x1040: 'D', # XXX The spec says D0, but Uniscribe doesn't seem to do.
0x1041: 'D',
0x1042: 'D',
0x1043: 'D',
0x1044: 'D',
0x1045: 'D',
0x1046: 'D',
0x1047: 'D',
0x1048: 'D',
0x1049: 'D',
0x1090: 'D',
0x1091: 'D',
0x1092: 'D',
0x1093: 'D',
0x1094: 'D',
0x1095: 'D',
0x1096: 'D',
0x1097: 'D',
0x1098: 'D',
0x1099: 'D',
0x103E: 'MH',
0x1060: 'ML',
0x103C: 'MR',
0x103D: 'MW',
0x1082: 'MW',
0x103B: 'MY',
0x105E: 'MY',
0x105F: 'MY',
0x1063: 'PT',
0x1064: 'PT',
0x1069: 'PT',
0x106A: 'PT',
0x106B: 'PT',
0x106C: 'PT',
0x106D: 'PT',
0xAA7B: 'PT',
0x1038: 'SM',
0x1087: 'SM',
0x1088: 'SM',
0x1089: 'SM',
0x108A: 'SM',
0x108B: 'SM',
0x108C: 'SM',
0x108D: 'SM',
0x108F: 'SM',
0x109A: 'SM',
0x109B: 'SM',
0x109C: 'SM',
0x104A: 'P',
0x104B: 'P',
# https://github.com/harfbuzz/harfbuzz/issues/218
0xAA74: 'C',
0xAA75: 'C',
0xAA76: 'C',
} }
position_overrides = { position_overrides = {
@ -302,6 +410,7 @@ def position_to_category(pos):
if pos == 'ABOVE_C': return 'VAbv' if pos == 'ABOVE_C': return 'VAbv'
if pos == 'BELOW_C': return 'VBlw' if pos == 'BELOW_C': return 'VBlw'
if pos == 'POST_C': return 'VPst' if pos == 'POST_C': return 'VPst'
assert(False)
defaults = (category_map[defaults[0]], position_map[defaults[1]], defaults[2]) defaults = (category_map[defaults[0]], position_map[defaults[1]], defaults[2])
@ -391,6 +500,7 @@ short = [{
"Robatic": 'Rt', "Robatic": 'Rt',
"Xgroup": 'Xg', "Xgroup": 'Xg',
"Ygroup": 'Yg', "Ygroup": 'Yg',
"As": 'As',
},{ },{
"END": 'X', "END": 'X',
"BASE_C": 'C', "BASE_C": 'C',

View File

@ -23,44 +23,54 @@
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-macros" #pragma GCC diagnostic ignored "-Wunused-macros"
#define ISC_A OT_A /* 51 chars; A */ #define ISC_A OT_A /* 53 chars; A */
#define ISC_C OT_C /* 520 chars; C */ #define ISC_As OT_As /* 1 chars; As */
#define ISC_CM OT_CM /* 9 chars; CM */ #define ISC_C OT_C /* 521 chars; C */
#define ISC_CM OT_CM /* 1 chars; CM */
#define ISC_CS OT_CS /* 2 chars; CS */ #define ISC_CS OT_CS /* 2 chars; CS */
#define ISC_Co OT_Coeng /* 2 chars; Coeng */ #define ISC_Co OT_Coeng /* 1 chars; Coeng */
#define ISC_D OT_D /* 20 chars; D */
#define ISC_DC OT_DOTTEDCIRCLE /* 1 chars; DOTTEDCIRCLE */ #define ISC_DC OT_DOTTEDCIRCLE /* 1 chars; DOTTEDCIRCLE */
#define ISC_H OT_H /* 10 chars; H */ #define ISC_H OT_H /* 11 chars; H */
#define ISC_M OT_M /* 160 chars; M */ #define ISC_M OT_M /* 160 chars; M */
#define ISC_N OT_N /* 35 chars; N */ #define ISC_MH OT_MH /* 1 chars; MH */
#define ISC_GB OT_PLACEHOLDER /* 168 chars; PLACEHOLDER */ #define ISC_ML OT_ML /* 1 chars; ML */
#define ISC_R OT_Ra /* 12 chars; Ra */ #define ISC_MR OT_MR /* 1 chars; MR */
#define ISC_MW OT_MW /* 2 chars; MW */
#define ISC_MY OT_MY /* 3 chars; MY */
#define ISC_N OT_N /* 17 chars; N */
#define ISC_P OT_P /* 2 chars; P */
#define ISC_GB OT_PLACEHOLDER /* 149 chars; PLACEHOLDER */
#define ISC_PT OT_PT /* 8 chars; PT */
#define ISC_R OT_Ra /* 15 chars; Ra */
#define ISC_Rf OT_Repha /* 1 chars; Repha */ #define ISC_Rf OT_Repha /* 1 chars; Repha */
#define ISC_Rt OT_Robatic /* 3 chars; Robatic */ #define ISC_Rt OT_Robatic /* 3 chars; Robatic */
#define ISC_SM OT_SM /* 48 chars; SM */ #define ISC_SM OT_SM /* 58 chars; SM */
#define ISC_S OT_Symbol /* 22 chars; Symbol */ #define ISC_S OT_Symbol /* 22 chars; Symbol */
#define ISC_V OT_V /* 190 chars; V */ #define ISC_V OT_V /* 190 chars; V */
#define ISC_VA OT_VAbv /* 20 chars; VAbv */ #define ISC_VA OT_VAbv /* 18 chars; VAbv */
#define ISC_VB OT_VBlw /* 7 chars; VBlw */ #define ISC_VB OT_VBlw /* 7 chars; VBlw */
#define ISC_VL OT_VPre /* 5 chars; VPre */ #define ISC_VL OT_VPre /* 5 chars; VPre */
#define ISC_VR OT_VPst /* 14 chars; VPst */ #define ISC_VR OT_VPst /* 13 chars; VPst */
#define ISC_VS OT_VS /* 16 chars; VS */
#define ISC_X OT_X /* 2 chars; X */ #define ISC_X OT_X /* 2 chars; X */
#define ISC_Xg OT_Xgroup /* 7 chars; Xgroup */ #define ISC_Xg OT_Xgroup /* 7 chars; Xgroup */
#define ISC_Yg OT_Ygroup /* 4 chars; Ygroup */ #define ISC_Yg OT_Ygroup /* 4 chars; Ygroup */
#define ISC_ZWJ OT_ZWJ /* 1 chars; ZWJ */ #define ISC_ZWJ OT_ZWJ /* 1 chars; ZWJ */
#define ISC_ZWNJ OT_ZWNJ /* 1 chars; ZWNJ */ #define ISC_ZWNJ OT_ZWNJ /* 1 chars; ZWNJ */
#define IMC_T POS_ABOVE_C /* 25 chars; ABOVE_C */ #define IMC_T POS_ABOVE_C /* 23 chars; ABOVE_C */
#define IMC_A POS_AFTER_MAIN /* 3 chars; AFTER_MAIN */ #define IMC_A POS_AFTER_MAIN /* 3 chars; AFTER_MAIN */
#define IMC_AP POS_AFTER_POST /* 50 chars; AFTER_POST */ #define IMC_AP POS_AFTER_POST /* 50 chars; AFTER_POST */
#define IMC_AS POS_AFTER_SUB /* 60 chars; AFTER_SUB */ #define IMC_AS POS_AFTER_SUB /* 60 chars; AFTER_SUB */
#define IMC_C POS_BASE_C /* 902 chars; BASE_C */ #define IMC_C POS_BASE_C /* 879 chars; BASE_C */
#define IMC_BS POS_BEFORE_SUB /* 31 chars; BEFORE_SUB */ #define IMC_BS POS_BEFORE_SUB /* 31 chars; BEFORE_SUB */
#define IMC_B POS_BELOW_C /* 13 chars; BELOW_C */ #define IMC_B POS_BELOW_C /* 13 chars; BELOW_C */
#define IMC_X POS_END /* 56 chars; END */ #define IMC_X POS_END /* 93 chars; END */
#define IMC_R POS_POST_C /* 14 chars; POST_C */ #define IMC_R POS_POST_C /* 13 chars; POST_C */
#define IMC_L POS_PRE_C /* 5 chars; PRE_C */ #define IMC_L POS_PRE_C /* 5 chars; PRE_C */
#define IMC_LM POS_PRE_M /* 16 chars; PRE_M */ #define IMC_LM POS_PRE_M /* 16 chars; PRE_M */
#define IMC_SM POS_SMVD /* 120 chars; SMVD */ #define IMC_SM POS_SMVD /* 132 chars; SMVD */
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
@ -287,26 +297,26 @@ static const uint16_t indic_table[] = {
/* Myanmar */ /* Myanmar */
/* 1000 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 1000 */ _(C,C), _(C,C), _(C,C), _(C,C), _(R,C), _(C,C), _(C,C), _(C,C),
/* 1008 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 1008 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C),
/* 1010 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 1010 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C),
/* 1018 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 1018 */ _(C,C), _(C,C), _(C,C), _(R,C), _(C,C), _(C,C), _(C,C), _(C,C),
/* 1020 */ _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), /* 1020 */ _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C),
/* 1028 */ _(V,C), _(V,C), _(V,C), _(VR,R), _(VR,R), _(VA,T), _(VA,T), _(VB,B), /* 1028 */ _(V,C), _(V,C), _(V,C), _(VR,R), _(VR,R), _(VA,T), _(VA,T), _(VB,B),
/* 1030 */ _(VB,B), _(VL,L), _(VA,T), _(VA,T), _(VA,T), _(VA,T),_(SM,SM), _(N,X), /* 1030 */ _(VB,B), _(VL,L), _(A,SM), _(VA,T), _(VA,T), _(VA,T), _(A,SM), _(N,X),
/* 1038 */_(SM,SM), _(Co,X), _(VA,T), _(CM,C), _(CM,C), _(CM,C), _(CM,C), _(C,C), /* 1038 */_(SM,SM), _(H,X), _(As,X), _(MY,X), _(MR,X), _(MW,X), _(MH,X), _(C,C),
/* 1040 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), /* 1040 */ _(D,X), _(D,X), _(D,X), _(D,X), _(D,X), _(D,X), _(D,X), _(D,X),
/* 1048 */ _(GB,C), _(GB,C), _(X,X), _(GB,C), _(X,X), _(X,X), _(GB,C), _(X,X), /* 1048 */ _(D,X), _(D,X), _(P,X), _(P,X), _(X,X), _(X,X), _(C,C), _(X,X),
/* 1050 */ _(C,C), _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(VR,R), _(VR,R), /* 1050 */ _(C,C), _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(VR,R), _(VR,R),
/* 1058 */ _(VB,B), _(VB,B), _(C,C), _(C,C), _(C,C), _(C,C), _(CM,C), _(CM,C), /* 1058 */ _(VB,B), _(VB,B), _(R,C), _(C,C), _(C,C), _(C,C), _(MY,X), _(MY,X),
/* 1060 */ _(CM,C), _(C,C), _(VR,R), _(N,X), _(N,X), _(C,C), _(C,C), _(VR,R), /* 1060 */ _(ML,X), _(C,C), _(VR,R), _(PT,X), _(PT,X), _(C,C), _(C,C), _(VR,R),
/* 1068 */ _(VR,R), _(N,X), _(N,X), _(N,X), _(N,X), _(N,X), _(C,C), _(C,C), /* 1068 */ _(VR,R), _(PT,X), _(PT,X), _(PT,X), _(PT,X), _(PT,X), _(C,C), _(C,C),
/* 1070 */ _(C,C), _(VA,T), _(VA,T), _(VA,T), _(VA,T), _(C,C), _(C,C), _(C,C), /* 1070 */ _(C,C), _(VA,T), _(VA,T), _(VA,T), _(VA,T), _(C,C), _(C,C), _(C,C),
/* 1078 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 1078 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C),
/* 1080 */ _(C,C), _(C,C), _(CM,C), _(VR,R), _(VL,L), _(VA,T), _(VA,T), _(N,X), /* 1080 */ _(C,C), _(C,C), _(MW,X), _(VR,R), _(VL,L), _(VA,T), _(VA,T),_(SM,SM),
/* 1088 */ _(N,X), _(N,X), _(N,X), _(N,X), _(N,X), _(N,X), _(C,C), _(N,X), /* 1088 */_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM), _(C,C),_(SM,SM),
/* 1090 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), /* 1090 */ _(D,X), _(D,X), _(D,X), _(D,X), _(D,X), _(D,X), _(D,X), _(D,X),
/* 1098 */ _(GB,C), _(GB,C), _(N,X), _(N,X), _(VR,R), _(VA,T), _(X,X), _(X,X), /* 1098 */ _(D,X), _(D,X),_(SM,SM),_(SM,SM),_(SM,SM), _(VA,T), _(X,X), _(X,X),
#define indic_offset_0x1780u 1496 #define indic_offset_0x1780u 1496
@ -352,9 +362,14 @@ static const uint16_t indic_table[] = {
/* General Punctuation */ /* General Punctuation */
/* 2008 */ _(X,X), _(X,X), _(X,X), _(X,X),_(ZWNJ,X),_(ZWJ,X), _(X,X), _(X,X), /* 2008 */ _(X,X), _(X,X), _(X,X), _(X,X),_(ZWNJ,X),_(ZWJ,X), _(X,X), _(X,X),
/* 2010 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), /* 2010 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X),
/* 2018 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
#define indic_offset_0x2070u 1672 /* No_Block */
/* 2020 */ _(X,X), _(X,X), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
#define indic_offset_0x2070u 1688
/* Superscripts and Subscripts */ /* Superscripts and Subscripts */
@ -363,7 +378,14 @@ static const uint16_t indic_table[] = {
/* 2078 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), /* 2078 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
/* 2080 */ _(X,X), _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), /* 2080 */ _(X,X), _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X),
#define indic_offset_0xa8e0u 1696 #define indic_offset_0x25f8u 1712
/* No_Block */
/* 25F8 */ _(X,X), _(X,X), _(X,X), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X),
#define indic_offset_0xa8e0u 1720
/* Devanagari Extended */ /* Devanagari Extended */
@ -373,7 +395,7 @@ static const uint16_t indic_table[] = {
/* A8F0 */ _(A,SM), _(A,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), /* A8F0 */ _(A,SM), _(A,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM),
/* A8F8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(V,C), _(M,AS), /* A8F8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(V,C), _(M,AS),
#define indic_offset_0xa9e0u 1728 #define indic_offset_0xa9e0u 1752
/* Myanmar Extended-B */ /* Myanmar Extended-B */
@ -383,21 +405,26 @@ static const uint16_t indic_table[] = {
/* A9F0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), /* A9F0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C),
/* A9F8 */ _(GB,C), _(GB,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(X,X), /* A9F8 */ _(GB,C), _(GB,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(X,X),
#define indic_offset_0xaa60u 1760 #define indic_offset_0xaa60u 1784
/* Myanmar Extended-A */ /* Myanmar Extended-A */
/* AA60 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* AA60 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C),
/* AA68 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* AA68 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C),
/* AA70 */ _(X,X), _(C,C), _(C,C), _(C,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), /* AA70 */ _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(X,X),
/* AA78 */ _(X,X), _(X,X), _(C,C), _(N,X), _(N,X), _(N,X), _(C,C), _(C,C), /* AA78 */ _(X,X), _(X,X), _(C,C), _(PT,X), _(N,X), _(N,X), _(C,C), _(C,C),
#define indic_offset_0x11300u 1792 #define indic_offset_0xfe00u 1816
/* No_Block */ /* No_Block */
/* FE00 */ _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X),
/* FE08 */ _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X),
#define indic_offset_0x11300u 1832
/* 11300 */ _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), _(X,X), /* 11300 */ _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), _(X,X),
/* 11308 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), /* 11308 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
/* 11310 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), /* 11310 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
@ -407,7 +434,7 @@ static const uint16_t indic_table[] = {
/* 11330 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), /* 11330 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X),
/* 11338 */ _(X,X), _(X,X), _(X,X), _(N,X), _(N,X), _(X,X), _(X,X), _(X,X), /* 11338 */ _(X,X), _(X,X), _(X,X), _(N,X), _(N,X), _(X,X), _(X,X), _(X,X),
}; /* Table items: 1856; occupancy: 69% */ }; /* Table items: 1896; occupancy: 69% */
uint16_t uint16_t
hb_indic_get_categories (hb_codepoint_t u) hb_indic_get_categories (hb_codepoint_t u)
@ -429,8 +456,9 @@ hb_indic_get_categories (hb_codepoint_t u)
case 0x2u: case 0x2u:
if (unlikely (u == 0x25CCu)) return _(DC,C); if (unlikely (u == 0x25CCu)) return _(DC,C);
if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2017u)) return indic_table[u - 0x2008u + indic_offset_0x2008u]; if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2027u)) return indic_table[u - 0x2008u + indic_offset_0x2008u];
if (hb_in_range<hb_codepoint_t> (u, 0x2070u, 0x2087u)) return indic_table[u - 0x2070u + indic_offset_0x2070u]; if (hb_in_range<hb_codepoint_t> (u, 0x2070u, 0x2087u)) return indic_table[u - 0x2070u + indic_offset_0x2070u];
if (hb_in_range<hb_codepoint_t> (u, 0x25F8u, 0x25FFu)) return indic_table[u - 0x25F8u + indic_offset_0x25f8u];
break; break;
case 0xAu: case 0xAu:
@ -439,6 +467,10 @@ hb_indic_get_categories (hb_codepoint_t u)
if (hb_in_range<hb_codepoint_t> (u, 0xAA60u, 0xAA7Fu)) return indic_table[u - 0xAA60u + indic_offset_0xaa60u]; if (hb_in_range<hb_codepoint_t> (u, 0xAA60u, 0xAA7Fu)) return indic_table[u - 0xAA60u + indic_offset_0xaa60u];
break; break;
case 0xFu:
if (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)) return indic_table[u - 0xFE00u + indic_offset_0xfe00u];
break;
case 0x11u: case 0x11u:
if (hb_in_range<hb_codepoint_t> (u, 0x11300u, 0x1133Fu)) return indic_table[u - 0x11300u + indic_offset_0x11300u]; if (hb_in_range<hb_codepoint_t> (u, 0x11300u, 0x1133Fu)) return indic_table[u - 0x11300u + indic_offset_0x11300u];
break; break;
@ -452,15 +484,24 @@ hb_indic_get_categories (hb_codepoint_t u)
#undef _ #undef _
#undef ISC_A #undef ISC_A
#undef ISC_As
#undef ISC_C #undef ISC_C
#undef ISC_CM #undef ISC_CM
#undef ISC_CS #undef ISC_CS
#undef ISC_Co #undef ISC_Co
#undef ISC_D
#undef ISC_DC #undef ISC_DC
#undef ISC_H #undef ISC_H
#undef ISC_M #undef ISC_M
#undef ISC_MH
#undef ISC_ML
#undef ISC_MR
#undef ISC_MW
#undef ISC_MY
#undef ISC_N #undef ISC_N
#undef ISC_P
#undef ISC_GB #undef ISC_GB
#undef ISC_PT
#undef ISC_R #undef ISC_R
#undef ISC_Rf #undef ISC_Rf
#undef ISC_Rt #undef ISC_Rt
@ -471,6 +512,7 @@ hb_indic_get_categories (hb_codepoint_t u)
#undef ISC_VB #undef ISC_VB
#undef ISC_VL #undef ISC_VL
#undef ISC_VR #undef ISC_VR
#undef ISC_VS
#undef ISC_X #undef ISC_X
#undef ISC_Xg #undef ISC_Xg
#undef ISC_Yg #undef ISC_Yg

View File

@ -77,15 +77,16 @@ enum indic_category_t {
/* Myanmar */ /* Myanmar */
OT_As = 32, // Asat OT_As = 32, // Asat
OT_D0 = 33, // Digit zero OT_D = 33, // Digits except zero
OT_MH = 34, // Medial OT_D0 = 34, // Digit zero
OT_MR = 35, // Medial OT_MH = 35, // Medial
OT_MW = 36, // Medial OT_MR = 36, // Medial
OT_MY = 37, // Medial OT_MW = 37, // Medial
OT_PT = 38, // Pwo and other tones OT_MY = 38, // Medial
OT_VS = 39, // Variation selectors OT_PT = 39, // Pwo and other tones
OT_P = 40, // Punctuation OT_VS = 40, // Variation selectors
OT_ML = 41, // Consonant medials OT_P = 41, // Punctuation
OT_ML = 42, // Consonant medials
}; };
#define MEDIAL_FLAGS (FLAG (OT_CM)) #define MEDIAL_FLAGS (FLAG (OT_CM))

View File

@ -56,98 +56,100 @@ enum myanmar_syllable_type_t {
#define myanmar_syllable_machine_ex_As 32u #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 18u #define myanmar_syllable_machine_ex_CS 18u
#define myanmar_syllable_machine_ex_D 10u #define myanmar_syllable_machine_ex_D 33u
#define myanmar_syllable_machine_ex_D0 33u #define myanmar_syllable_machine_ex_D0 34u
#define myanmar_syllable_machine_ex_DB 3u #define myanmar_syllable_machine_ex_DB 3u
#define myanmar_syllable_machine_ex_DOTTEDCIRCLE 11u
#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 34u #define myanmar_syllable_machine_ex_MH 35u
#define myanmar_syllable_machine_ex_ML 41u #define myanmar_syllable_machine_ex_ML 42u
#define myanmar_syllable_machine_ex_MR 35u #define myanmar_syllable_machine_ex_MR 36u
#define myanmar_syllable_machine_ex_MW 36u #define myanmar_syllable_machine_ex_MW 37u
#define myanmar_syllable_machine_ex_MY 37u #define myanmar_syllable_machine_ex_MY 38u
#define myanmar_syllable_machine_ex_P 40u #define myanmar_syllable_machine_ex_P 41u
#define myanmar_syllable_machine_ex_PT 38u #define myanmar_syllable_machine_ex_PT 39u
#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_SM 8u
#define myanmar_syllable_machine_ex_VAbv 20u #define myanmar_syllable_machine_ex_VAbv 20u
#define myanmar_syllable_machine_ex_VBlw 21u #define myanmar_syllable_machine_ex_VBlw 21u
#define myanmar_syllable_machine_ex_VPre 22u #define myanmar_syllable_machine_ex_VPre 22u
#define myanmar_syllable_machine_ex_VPst 23u #define myanmar_syllable_machine_ex_VPst 23u
#define myanmar_syllable_machine_ex_VS 39u #define myanmar_syllable_machine_ex_VS 40u
#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 85 "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, 41u, 3u, 41u, 5u, 38u, 5u, 8u, 3u, 41u, 3u, 38u, 3u, 38u, 5u, 38u, 1u, 42u, 3u, 42u, 5u, 39u, 5u, 8u, 3u, 42u, 3u, 39u, 3u, 39u, 5u, 39u,
5u, 38u, 3u, 38u, 3u, 38u, 3u, 41u, 5u, 38u, 1u, 15u, 3u, 38u, 3u, 38u, 5u, 39u, 3u, 39u, 3u, 39u, 3u, 42u, 5u, 39u, 1u, 15u, 3u, 39u, 3u, 39u,
3u, 39u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 40u, 3u, 39u, 3u, 42u, 3u, 42u, 3u, 39u, 3u, 42u, 3u, 42u, 3u, 42u,
3u, 41u, 3u, 41u, 5u, 38u, 5u, 8u, 3u, 41u, 3u, 38u, 3u, 38u, 5u, 38u, 3u, 42u, 3u, 42u, 5u, 39u, 5u, 8u, 3u, 42u, 3u, 39u, 3u, 39u, 5u, 39u,
5u, 38u, 3u, 38u, 3u, 38u, 3u, 41u, 5u, 38u, 1u, 15u, 3u, 41u, 3u, 38u, 5u, 39u, 3u, 39u, 3u, 39u, 3u, 42u, 5u, 39u, 1u, 15u, 3u, 42u, 3u, 39u,
3u, 38u, 3u, 39u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 38u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 40u, 3u, 39u, 3u, 42u, 3u, 42u, 3u, 39u, 3u, 42u, 3u, 42u,
3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 1u, 41u, 1u, 15u, 8u, 8u, 3u, 42u, 3u, 42u, 3u, 42u, 3u, 42u, 3u, 42u, 1u, 42u, 1u, 33u, 8u, 8u,
0 0
}; };
static const char _myanmar_syllable_machine_key_spans[] = { static const char _myanmar_syllable_machine_key_spans[] = {
41, 39, 34, 4, 39, 36, 36, 34, 42, 40, 35, 4, 40, 37, 37, 35,
34, 36, 36, 39, 34, 15, 36, 36, 35, 37, 37, 40, 35, 15, 37, 37,
37, 36, 39, 39, 36, 39, 39, 39, 38, 37, 40, 40, 37, 40, 40, 40,
39, 39, 34, 4, 39, 36, 36, 34, 40, 40, 35, 4, 40, 37, 37, 35,
34, 36, 36, 39, 34, 15, 39, 36, 35, 37, 37, 40, 35, 15, 40, 37,
36, 37, 36, 39, 39, 36, 39, 39, 37, 38, 37, 40, 40, 37, 40, 40,
39, 39, 39, 39, 39, 41, 15, 1 40, 40, 40, 40, 40, 42, 33, 1
}; };
static const short _myanmar_syllable_machine_index_offsets[] = { static const short _myanmar_syllable_machine_index_offsets[] = {
0, 42, 82, 117, 122, 162, 199, 236, 0, 43, 84, 120, 125, 166, 204, 242,
271, 306, 343, 380, 420, 455, 471, 508, 278, 314, 352, 390, 431, 467, 483, 521,
545, 583, 620, 660, 700, 737, 777, 817, 559, 598, 636, 677, 718, 756, 797, 838,
857, 897, 937, 972, 977, 1017, 1054, 1091, 879, 920, 961, 997, 1002, 1043, 1081, 1119,
1126, 1161, 1198, 1235, 1275, 1310, 1326, 1366, 1155, 1191, 1229, 1267, 1308, 1344, 1360, 1401,
1403, 1440, 1478, 1515, 1555, 1595, 1632, 1672, 1439, 1477, 1516, 1554, 1595, 1636, 1674, 1715,
1712, 1752, 1792, 1832, 1872, 1912, 1954, 1970 1756, 1797, 1838, 1879, 1920, 1961, 2004, 2038
}; };
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, 1, 0, 0, 0, 7, 0,
0, 8, 0, 9, 10, 11, 12, 0, 0, 8, 0, 9, 10, 11, 12, 0,
0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 13,
0, 14, 15, 16, 17, 18, 19, 20, 1, 0, 14, 15, 16, 17, 18, 19,
21, 0, 23, 24, 25, 25, 22, 26, 20, 21, 0, 23, 24, 25, 25, 22,
27, 22, 22, 22, 22, 22, 22, 22, 26, 27, 22, 22, 22, 22, 22, 22,
22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 28, 29, 30, 31,
22, 22, 22, 22, 22, 22, 22, 32, 22, 22, 22, 22, 22, 22, 22, 22,
22, 33, 34, 35, 36, 37, 38, 22, 32, 22, 22, 33, 34, 35, 36, 37,
39, 22, 25, 25, 22, 26, 22, 22, 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, 22, 22, 31, 22, 22, 22,
22, 22, 22, 22, 22, 40, 22, 22,
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, 31, 22,
22, 22, 22, 22, 22, 22, 22, 40,
22, 22, 22, 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, 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, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 37, 22, 44, 22, 22, 31, 22, 22, 22, 22, 22,
22, 25, 25, 22, 26, 37, 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, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 45, 22, 22, 22, 22, 45, 22, 22, 22, 22, 22, 22,
22, 22, 37, 22, 25, 25, 22, 26, 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, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 45, 22, 22, 22, 22, 22, 45, 22, 22,
22, 22, 22, 22, 22, 37, 22, 25, 22, 22, 22, 22, 37, 22, 25, 25,
25, 22, 26, 22, 22, 22, 22, 22, 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, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
@ -155,211 +157,219 @@ static const char _myanmar_syllable_machine_indicies[] = {
27, 22, 22, 22, 22, 22, 22, 22, 27, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 41, 22, 22, 31, 22, 22, 22, 22, 41, 22, 22, 31, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 37, 22, 23, 22, 22, 22, 22, 22, 22, 37, 22,
22, 25, 25, 22, 26, 27, 22, 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,
41, 22, 22, 31, 22, 22, 22, 22, 22, 41, 22, 22, 31, 22, 22, 22,
22, 22, 22, 22, 42, 22, 22, 22, 22, 22, 22, 22, 22, 42, 22, 22,
22, 22, 37, 22, 23, 22, 25, 25, 22, 22, 22, 22, 37, 22, 23, 22,
22, 26, 27, 22, 22, 22, 22, 22, 25, 25, 22, 26, 27, 22, 22, 22,
22, 22, 22, 22, 22, 41, 22, 22, 22, 22, 22, 22, 22, 22, 22, 41,
31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 31, 22, 22, 22, 22, 22,
22, 42, 22, 22, 22, 22, 22, 37, 22, 22, 22, 42, 22, 22, 22, 22,
22, 22, 42, 22, 25, 25, 22, 26, 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, 22, 22, 22,
22, 22, 22, 22, 22, 22, 31, 22, 22, 31, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 37, 22, 1, 22, 37, 22, 1, 1, 22, 22, 22,
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, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
28, 29, 22, 31, 22, 22, 22, 22, 22, 1, 22, 23, 22, 25, 25, 22,
26, 27, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 28, 29, 22, 31,
22, 22, 22, 22, 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, 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, 28, 29, 30, 31, 22, 22, 22, 22, 22, 29, 22, 31, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 37, 46, 22, 23, 22, 22, 22, 22, 22, 37, 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,
28, 29, 30, 31, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 37, 46, 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, 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, 28, 29, 30, 22, 22, 22, 22, 22, 28, 29, 30,
31, 22, 22, 22, 22, 22, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22,
22, 32, 22, 33, 34, 35, 36, 37, 22, 32, 22, 22, 33, 34, 35, 36,
22, 22, 39, 22, 23, 22, 25, 25, 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,
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, 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, 28, 29, 30, 22, 22, 22, 22, 22, 28, 29, 30,
31, 22, 22, 22, 22, 22, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22,
22, 46, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 33, 22, 35, 22,
22, 22, 39, 22, 23, 22, 25, 25, 37, 22, 22, 39, 22, 23, 22, 25,
22, 26, 27, 22, 22, 22, 22, 22, 25, 22, 26, 27, 22, 22, 22, 22,
22, 22, 22, 22, 22, 28, 29, 30, 22, 22, 22, 22, 22, 22, 28, 29,
31, 22, 22, 22, 22, 22, 22, 22, 30, 31, 22, 22, 22, 22, 22, 22,
22, 46, 22, 22, 22, 22, 22, 37, 22, 22, 46, 22, 22, 33, 22, 22,
22, 23, 22, 25, 25, 22, 26, 27, 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, 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, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 28, 29, 30, 31, 22, 22, 28, 29, 30, 31, 22, 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, 22, 22, 22, 22, 22, 22, 22,
33, 22, 35, 22, 37, 22, 22, 39, 22, 28, 29, 30, 31, 22, 22, 22,
22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 32, 22, 22,
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, 33, 34, 35, 36, 37, 22, 22, 39,
22, 49, 49, 48, 5, 48, 48, 48, 22, 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, 12, 48, 48, 48, 48, 48, 48, 48, 12, 48, 48, 48, 48,
48, 48, 48, 48, 50, 48, 48, 48, 48, 48, 48, 48, 50, 48, 48, 48,
48, 48, 18, 48, 49, 49, 48, 5, 48, 48, 48, 18, 48, 49, 49, 48,
48, 2, 48, 49, 49, 48, 5, 6, 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, 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, 48, 48,
48, 48, 51, 48, 48, 12, 48, 48, 48, 48, 48, 48, 48, 48, 48, 18,
48, 48, 48, 48, 48, 48, 52, 48, 48, 54, 48, 49, 49, 48, 5, 18,
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, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 55, 48, 48, 48, 48, 48, 48, 48, 55, 48,
48, 48, 48, 48, 18, 48, 49, 49, 48, 48, 48, 48, 48, 18, 48, 49,
48, 5, 48, 48, 48, 48, 48, 48, 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, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 18, 48, 48, 55, 48, 48, 48, 48, 48,
48, 2, 48, 49, 49, 48, 5, 6, 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, 51, 48, 48, 12, 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, 48, 48, 48, 48, 48, 48, 48, 48,
49, 49, 48, 5, 6, 48, 48, 48, 48, 48, 48, 48, 48, 18, 48, 2,
48, 48, 48, 48, 48, 48, 48, 51, 48, 49, 49, 48, 5, 6, 48, 48,
48, 48, 12, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 52, 48, 48, 48, 48, 51, 48, 48, 12, 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, 52, 48, 48, 48, 48, 48,
48, 18, 48, 2, 48, 49, 49, 48, 48, 18, 48, 2, 48, 49, 49, 48,
5, 6, 48, 48, 48, 48, 48, 48, 5, 6, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 51, 48, 48, 12, 48, 48, 48, 48, 51, 48, 48, 12,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
52, 48, 48, 48, 48, 48, 18, 48, 52, 48, 48, 48, 48, 48, 48, 18,
48, 52, 48, 49, 49, 48, 5, 48, 48, 48, 52, 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, 12, 48, 48, 48, 48, 48, 48, 48, 48, 12, 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, 48, 48,
48, 48, 48, 48, 48, 48, 18, 48, 48, 48, 48, 48, 48, 48, 18, 48,
2, 48, 49, 49, 48, 5, 6, 48, 56, 56, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 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, 2, 3, 49, 49, 48, 5, 6, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 9, 10, 11, 12, 48, 48, 48, 48, 9, 10, 11, 12, 48, 48, 48,
48, 48, 48, 48, 48, 13, 48, 14, 48, 48, 48, 48, 48, 13, 48, 48,
15, 16, 17, 18, 48, 48, 21, 48, 14, 15, 16, 17, 18, 19, 48, 21,
23, 24, 25, 25, 22, 26, 27, 22, 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, 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, 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,
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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 22, 22, 22, 22, 22, 22, 22, 22,
22, 28, 29, 30, 31, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22,
22, 22, 22, 22, 22, 59, 22, 33, 22, 22, 22, 22, 59, 22, 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, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 28, 29, 30, 31, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22,
22, 22, 22, 22, 22, 32, 22, 33, 22, 22, 22, 22, 22, 32, 22, 22,
34, 35, 36, 37, 22, 22, 39, 22, 33, 34, 35, 36, 37, 22, 22, 39,
1, 1, 2, 3, 49, 49, 48, 5, 22, 1, 1, 2, 3, 49, 49, 48,
6, 1, 48, 48, 48, 48, 1, 48, 5, 6, 1, 1, 48, 48, 48, 1,
48, 48, 48, 9, 10, 11, 12, 48, 48, 48, 48, 48, 9, 10, 11, 12,
48, 48, 48, 48, 48, 48, 48, 13, 48, 48, 48, 48, 48, 48, 48, 48,
48, 14, 15, 16, 17, 18, 19, 48, 13, 1, 48, 14, 15, 16, 17, 18,
21, 48, 1, 1, 61, 61, 61, 61, 19, 48, 21, 48, 1, 1, 61, 61,
61, 61, 61, 1, 61, 61, 61, 61, 61, 61, 61, 61, 61, 1, 1, 61,
1, 61, 62, 61, 0 61, 61, 1, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61,
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[] = {
@ -425,7 +435,7 @@ static const int myanmar_syllable_machine_en_main = 0;
#line 117 "hb-ot-shaper-myanmar-machine.rl" #line 118 "hb-ot-shaper-myanmar-machine.rl"
#define found_syllable(syllable_type) \ #define found_syllable(syllable_type) \
@ -444,7 +454,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 448 "hb-ot-shaper-myanmar-machine.hh" #line 458 "hb-ot-shaper-myanmar-machine.hh"
{ {
cs = myanmar_syllable_machine_start; cs = myanmar_syllable_machine_start;
ts = 0; ts = 0;
@ -452,7 +462,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
act = 0; act = 0;
} }
#line 137 "hb-ot-shaper-myanmar-machine.rl" #line 138 "hb-ot-shaper-myanmar-machine.rl"
p = 0; p = 0;
@ -460,7 +470,7 @@ find_syllables_myanmar (hb_buffer_t *buffer)
unsigned int syllable_serial = 1; unsigned int syllable_serial = 1;
#line 464 "hb-ot-shaper-myanmar-machine.hh" #line 474 "hb-ot-shaper-myanmar-machine.hh"
{ {
int _slen; int _slen;
int _trans; int _trans;
@ -474,7 +484,7 @@ _resume:
#line 1 "NONE" #line 1 "NONE"
{ts = p;} {ts = p;}
break; break;
#line 478 "hb-ot-shaper-myanmar-machine.hh" #line 488 "hb-ot-shaper-myanmar-machine.hh"
} }
_keys = _myanmar_syllable_machine_trans_keys + (cs<<1); _keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
@ -493,38 +503,38 @@ _eof_trans:
switch ( _myanmar_syllable_machine_trans_actions[_trans] ) { switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
case 6: case 6:
#line 109 "hb-ot-shaper-myanmar-machine.rl" #line 110 "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 110 "hb-ot-shaper-myanmar-machine.rl" #line 111 "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 111 "hb-ot-shaper-myanmar-machine.rl" #line 112 "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 112 "hb-ot-shaper-myanmar-machine.rl" #line 113 "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 113 "hb-ot-shaper-myanmar-machine.rl" #line 114 "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 109 "hb-ot-shaper-myanmar-machine.rl" #line 110 "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 112 "hb-ot-shaper-myanmar-machine.rl" #line 113 "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 113 "hb-ot-shaper-myanmar-machine.rl" #line 114 "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 528 "hb-ot-shaper-myanmar-machine.hh" #line 538 "hb-ot-shaper-myanmar-machine.hh"
} }
_again: _again:
@ -533,7 +543,7 @@ _again:
#line 1 "NONE" #line 1 "NONE"
{ts = 0;} {ts = 0;}
break; break;
#line 537 "hb-ot-shaper-myanmar-machine.hh" #line 547 "hb-ot-shaper-myanmar-machine.hh"
} }
if ( ++p != pe ) if ( ++p != pe )
@ -549,7 +559,7 @@ _again:
} }
#line 145 "hb-ot-shaper-myanmar-machine.rl" #line 146 "hb-ot-shaper-myanmar-machine.rl"
} }

View File

@ -63,9 +63,9 @@ export DB = 3; # Dot below = OT_N
export H = 4; export H = 4;
export ZWNJ = 5; export ZWNJ = 5;
export ZWJ = 6; export ZWJ = 6;
export V = 8; # Visarga and Shan tones export SM = 8; # Visarga and Shan tones
export GB = 10; # = OT_PLACEHOLDER export GB = 10; # = OT_PLACEHOLDER
export D = 10; # Digits except zero = GB export DOTTEDCIRCLE = 11;
export A = 9; export A = 9;
export Ra = 15; export Ra = 15;
export CS = 18; export CS = 18;
@ -76,15 +76,16 @@ export VPre = 22;
export VPst = 23; export VPst = 23;
export As = 32; # Asat export As = 32; # Asat
export D0 = 33; # Digit zero export D = 33; # Digits except zero
export MH = 34; # Medial export D0 = 34; # Digit zero
export MR = 35; # Medial export MH = 35; # Medial
export MW = 36; # Medial export MR = 36; # Medial
export MY = 37; # Medial export MW = 37; # Medial
export PT = 38; # Pwo and other tones export MY = 38; # Medial
export VS = 39; # Variation selectors export PT = 39; # Pwo and other tones
export P = 40; # Punctuation export VS = 40; # Variation selectors
export ML = 41; # Consonant medials export P = 41; # Punctuation
export ML = 42; # Consonant medials
j = ZWJ|ZWNJ; # Joiners j = ZWJ|ZWNJ; # Joiners
@ -97,11 +98,11 @@ main_vowel_group = (VPre.VS?)* VAbv* VBlw* A* (DB As?)?;
post_vowel_group = VPst MH? ML? As* VAbv* A* (DB As?)?; post_vowel_group = VPst MH? ML? As* VAbv* A* (DB As?)?;
pwo_tone_group = PT A* DB? As?; pwo_tone_group = PT A* DB? As?;
complex_syllable_tail = As* medial_group main_vowel_group post_vowel_group* pwo_tone_group* V* j?; complex_syllable_tail = As* medial_group main_vowel_group post_vowel_group* pwo_tone_group* SM* j?;
syllable_tail = (H (c|IV).VS?)* (H | complex_syllable_tail); syllable_tail = (H (c|IV).VS?)* (H | complex_syllable_tail);
consonant_syllable = (k|CS)? (c|IV|D|GB).VS? syllable_tail; consonant_syllable = (k|CS)? (c|IV|D|GB|DOTTEDCIRCLE).VS? syllable_tail;
punctuation_cluster = P V; punctuation_cluster = P SM;
broken_cluster = k? VS? syllable_tail; broken_cluster = k? VS? syllable_tail;
other = any; other = any;

View File

@ -68,98 +68,8 @@ set_myanmar_properties (hb_glyph_info_t &info)
{ {
hb_codepoint_t u = info.codepoint; hb_codepoint_t u = info.codepoint;
unsigned int type = hb_indic_get_categories (u); unsigned int type = hb_indic_get_categories (u);
unsigned int cat = type & 0xFFu;
/* Myanmar info.myanmar_category() = (myanmar_category_t) (type & 0xFFu);
* https://docs.microsoft.com/en-us/typography/script-development/myanmar#analyze
*/
if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)))
cat = M_Cat(VS);
switch (u)
{
case 0x104Eu:
cat = M_Cat(C); /* The spec says C, IndicSyllableCategory doesn't have. */
break;
case 0x002Du: case 0x00A0u: case 0x00D7u: case 0x2012u:
case 0x2013u: case 0x2014u: case 0x2015u: case 0x2022u:
case 0x25CCu: case 0x25FBu: case 0x25FCu: case 0x25FDu:
case 0x25FEu:
cat = M_Cat(GB);
break;
case 0x1004u: case 0x101Bu: case 0x105Au:
cat = M_Cat(Ra);
break;
case 0x1032u: case 0x1036u:
cat = M_Cat(A);
break;
case 0x1039u:
cat = M_Cat(H);
break;
case 0x103Au:
cat = M_Cat(As);
break;
case 0x1041u: case 0x1042u: case 0x1043u: case 0x1044u:
case 0x1045u: case 0x1046u: case 0x1047u: case 0x1048u:
case 0x1049u: case 0x1090u: case 0x1091u: case 0x1092u:
case 0x1093u: case 0x1094u: case 0x1095u: case 0x1096u:
case 0x1097u: case 0x1098u: case 0x1099u:
cat = M_Cat(D);
break;
case 0x1040u:
cat = M_Cat(D); /* XXX The spec says D0, but Uniscribe doesn't seem to do. */
break;
case 0x103Eu:
cat = M_Cat(MH);
break;
case 0x1060u:
cat = M_Cat(ML);
break;
case 0x103Cu:
cat = M_Cat(MR);
break;
case 0x103Du: case 0x1082u:
cat = M_Cat(MW);
break;
case 0x103Bu: case 0x105Eu: case 0x105Fu:
cat = M_Cat(MY);
break;
case 0x1063u: case 0x1064u: case 0x1069u: case 0x106Au:
case 0x106Bu: case 0x106Cu: case 0x106Du: case 0xAA7Bu:
cat = M_Cat(PT);
break;
case 0x1038u: case 0x1087u: case 0x1088u: case 0x1089u:
case 0x108Au: case 0x108Bu: case 0x108Cu: case 0x108Du:
case 0x108Fu: case 0x109Au: case 0x109Bu: case 0x109Cu:
cat = M_Cat(V);
break;
case 0x104Au: case 0x104Bu:
cat = M_Cat(P);
break;
case 0xAA74u: case 0xAA75u: case 0xAA76u:
/* https://github.com/harfbuzz/harfbuzz/issues/218 */
cat = M_Cat(C);
break;
}
info.myanmar_category() = cat;
info.myanmar_position() = 0; /* Doesn't use the existing position info. */
} }
static void static void
@ -365,7 +275,7 @@ reorder_myanmar (const hb_ot_shape_plan_t *plan,
{ {
hb_syllabic_insert_dotted_circles (font, buffer, hb_syllabic_insert_dotted_circles (font, buffer,
myanmar_broken_cluster, myanmar_broken_cluster,
M_Cat(GB)); M_Cat(DOTTEDCIRCLE));
foreach_syllable (buffer, start, end) foreach_syllable (buffer, start, end)
reorder_syllable_myanmar (plan, font->face, buffer, start, end); reorder_syllable_myanmar (plan, font->face, buffer, start, end);