#line 1 "myanmar5.gdl" #line 142 Bidi = 0; AutoPseudo = 1; #line 4 "myfeatures.gdl" table(feature) khamti { id = "kdot"; name.1033 = string("Khamti style dots"); default = 0; } filled { id = "fdot"; name.1033 = string("Filled dots"); default = 0; } lldot { id = "lldt"; name.1033 = string("Lower dot shifts left"); default = 0; } watri { id = "wtri"; name.1033 = string("Tear drop style washwe"); default = 0; } uLong { id = "ulon"; name.1033 = string("Long U with Yayit, long UU with Hato"); default = 0; } uTall { id = "utal"; name.1033 = string("U and UU always full height"); default = 0; } dottedc { id="dotc"; name.1033 = string("Insert dotted circles for errors"); default = 1; } slanth { id="hsln"; name.1033 = string("Slanted hato"); default = none; settings { none { value = 0; name.1033 = string("Upright"); } sgaw { value = 1; name.1033 = string("Sgaw style slanted leg with horizontal foot"); } angle { value = 2; name.1033 = string("Slanted leg with right angled foot"); } } } endtable; table(language) sgaw { languages = ("ksw"); slanth = sgaw; watri = 1; lldot = 1; }; khamti { languages = ("kht"); khamti = 1; filled = 1; }; kayah { languages = ("kyu"); watri = 1; slanth = angle; }; endtable; #line 158 "myanmar5.gdl" table(glyph); #line 167 ANYGlyph = (glyphid(0 .. MAXGLYPH)){breakweight = -30}; #line 174 g200b {breakweight = 10}; g_space {breakweight = 10}; cSection = (g104a, g104b) {breakweight = 10}; g1039 {breakweight = -50}; g2060 {breakweight = -30}; cSigns = (g104c, g104d, g104f) {breakweight = 10}; cNum = (g1040, g1041, g1042, g1043, g1044, g1045, g1046, g1047, g1048, g1049) {breakweight = -30}; cLQuote = (g_parenleft, g_quotedblleft, g_quoteleft) {breakweight = -15}; cRQuote = (g_parenright, g_quotedblright, g_quoteright) {breakweight = 10}; #line 195 cCons = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g1009, g100a, g100b, g100c, g100d, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101d, g101e, g101f, g1020, g1021, g1022, g1025, g1027, g1029, g_circledash, g103f, g1028, g104e, g105a, g105b, g105c, g105d, g1061, g1065, g1066, g106e, g106f, g1070, g1075, g1076, g1077, g1078, g1079, g107a, g107b, g107c, g107d, g107e, g107f, g1080, g1081, g108e){breakweight = -15}; cConsNar = (g1001, g1002, g1004, g1005, g1007, g100b, g100c, g100d, g100e, g1012, g1013, g1014, g1015, g1016, g1017, g1019, g101b, g101d, g_circledash, g1014_alt, g1027, g1028, g104e, g105a, g105b, g105c, g105d, g1061, g1065, g1066, g1075, g1076, g1077, g107f, g108e); cConsWide = (g1000, g1003, g1006, g1008, g1009, g100a, g100f, g1010, g1011, g1018, g101a, g101c, g101e, g101f, g1020, g1021, g1022, g1029, g103f, g106e, g106f, g1070, g1078, g1079, g107a, g107b, g107c, g107d, g107e, g1080); #line 216 cConsSVowel = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101d, g101e, g101f, g1021, g1022, g1027, g_circledash, g100a_alt, g101b_alt, g1014_alt, g103f, g105c, g1065, g106e, g1075, g1076, g1077, g1078, g1079, g107b, g107c, g107d, g107f, g1080, g108e); #line 226 cConsSlantH = (g1009, g100a, g105a, g105b, g105d); #line 236 cMed = (g1000_med, g1001_med, g1002_med, g1003_med, g1004_med, g1005_med, g1006_med, g1007_med, g1008_med, g100a_med, g100c_med, g100d_med, g100e_med, g100f_med, g1010_med, g1011_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1018_med, g1019_med, g101a_med, g101b_med, g101c_med, g101e_med, g1021_med, g105a_med, g105b_med, g105c_med); cMedNar = (g1001_med, g1002_med, g1005_med, g1007_med, g100c_med, g100d_med, g1012_med, g1013_med, g1014_med, g1015_med, g1016_med, g1017_med, g1019_med, g101b_med, g105a_med, g105c_med); cMedBase = (g1000, g1001, g1002, g1003, g1004, g1005, g1006, g1007, g1008, g100a, g100c, g100d, g100e, g100f, g1010, g1011, g1012, g1013, g1014, g1015, g1016, g1017, g1018, g1019, g101a, g101b, g101c, g101e, g1021, g105a, g105b, g105c); #line 252 c101b = (g101b, g101b_alt, g101b_long); #line 260 cClusMed = (g103b, g103c, g103d, g103e, g105e, g105f, g1060){breakweight = -50}; cClusDia = (g103b, g103b_103d, g103b_103d_103e, g103b_103e, g103d, g103d_103e, g103e, g103e_102f, g103e_1030, g105e, g105f, g1060); #line 270 cYMed = (g103b, g103b_103d, g103b_103d_103e, g103b_103e); #line 276 cPreVowel = (g1031, g1084); #line 285 cLVowel = (g102f, g1030); cLVowelM = (g102f_med, g1030_med); cLVowelh = (g103e_102f, g103e_1030); cLVowelAll = (cLVowel, cLVowelh, cLVowelM); #line 298 cUVowel = (g103a, g1004_kinzi, g1004_kinzi_102d, g1004_kinzi_102e, g1004_kinzi_1032, g1004_kinzi_1036, g101b_kinzi, g102d, g102d_1036, g102e, g1032, g1032_102d, g1033, g1034, g1035, g1071, g1072, g1073, g1074, g1081, g1082){breakweight = -50}; cUSpace = (g1032, g1032_102d, g103a, g102d, g102e, g1004_kinzi_102e, g1004_kinzi_102d, g1004_kinzi, g1004_kinzi_1036, g101b_kinzi, g1033, g1034, g1035, g1071, g1072, g1073, g1074, g1081); cUVowelNga = (g102e, g102d, g1032, g1033, g1036); cNgaUVowel = (g1004_kinzi_102e, g1004_kinzi_102d, g1004_kinzi_1032, g1004_kinzi_1033, g1004_kinzi_1036); cUTakesMa = (g102d, g1004_kinzi); cUWithMa = (g102d_1036, g1004_kinzi_1036); c1036 = (g1036, g1004_kinzi_1036, g102d_1036); #line 314 cBDia = (cBSDia, cBDDia); #line 319 cLDiaMod = (g100a, g1014, g101b); cLDiaModed = (g100a_alt, g1014_alt, g101b_alt); #line 327 c103b = (g103b, g103b_103e, g103b_103d, g103b_103d_tri); c103d = (g103d, g103d_103e, g103b_103d, g103d_tri, g103d_103e_tri, g103b_103d_tri); c103e = (g103e, g103e_102f, g103e_1030, g103d_103e, g103b_103e, g103d_103e_tri); #line 340 c103c_only = (g103c, g103c_wide, g103c_alt_narr, g103c_alt_wide); c103c_mix = (g103c_103d_narr, g103c_103d_narr_tri, g103c_103d_wide, g103c_103d_wide_tri, g103c_102f_narr, g103c_102f_wide, g103c_103d_alt_narr, g103c_103d_alt_narr_tri, g103c_102f_alt_narr, g103c_103d_alt_wide, g103c_103d_alt_wide_tri, g103c_102f_alt_wide); c103c = (c103c_only, c103c_mix); c103c_nar = (g103c, g103c_103d_narr, g103c_102f_narr, g103c_103d_narr_tri); c103c_naralt = (g103c_alt_narr, g103c_103d_alt_narr, g103c_102f_alt_narr, g103c_103d_alt_narr_tri); c103c_wide = (g103c_wide, g103c_103d_wide, g103c_102f_wide, g103c_103d_wide_tri); c103c_widalt = (g103c_alt_wide, g103c_103d_alt_wide, g103c_102f_alt_wide, g103c_103d_alt_wide_tri); c103e_dia = (g103e, g103e_alt); #line 357 c103c_compl = (g103c_102f_narr, g103c_102f_wide); c103c_compr = (g103c_103d_narr, g103c_103d_wide, g103c_103d_narr_tri, g103c_103d_wide_tri); c103c_medn = (g103c, g103c_wide, g103c_alt_narr, g103c_alt_wide); c103c_in = (g103e_alt, g103d, g103d_103e, cMed); cLowDia = (g103d, g103d_103e, g103e, g103e_102f, g103e_1030, cMed, cLVowelAll); c102b = (g102b, g102b_103a); #line 370 t1014 = (cMed, c103d, c103e, cLVowelAll, c103b, g1039); t100a = (t1014); #line 377 cLeftLDot = (c101b, c103b, c103d, c103e, g1060, g1061); #line 383 ckinzi += (g1004_kinzi); cno_kinzi += (g105a); #line 391 cHasRkern = (g103e_102f, g103e_1030, g1030_med, g102f_med); #line 397 cTone = (g1038, g1087, g1089, g108a, g109a, g109b); endtable; #line 420 table(linebreak) cSection {breakweight = 10} / _ ^ cCons; g_space {breakweight = 10} / _ ^ cCons; cTakesUDia {breakweight = -30} g103a {breakweight = -50} / _ ^ [g1039 cMed]? [[[[cnTakesUDia]? cnTakesUDia]? cnTakesUDia]? cnTakesUDia]? _ ; cCons {breakweight = -30} cMedBase {breakweight = -50} / _ g1039 _ ; cCons {breakweight = -50} / g1039 _ ; cCons {breakweight = -30} / g2060 _ ; cCons {breakweight = -30} / g1021 _; ANYGlyph {breakweight = +40} / cLQuote ^ _; ANYGlyph {breakweight = -40} / _ ^ cRQuote; cSection {breakweight = +30} / _ cNum; cNum {breakweight = -15} / cCons _; cSigns {breakweight = -15} / cSection _; cSigns {breakweight = +40} / _ cSection; endtable; #line 472 table(substitution); pass(1); cno_kinzi g103a g1039 _ > _ _ _ ckinzi$1:(1 2 3) / _ _ _ ^ (cCons, cNum, g104e)? [g1039 cMedBase]? [[[[cClusMed]? cClusMed]? cClusMed]? cClusMed]? cPreVowel? _; (g1004 g105a) g103a g1039 cUVowelNga > _ _ _ cNgaUVowel:(1 2 3 u) / _ _ _ ^ (cCons, cNum, g104e) [g1039 cMedBase]? [[[[cClusMed]? cClusMed]? cClusMed]? cClusMed]? cPreVowel? _=u; (g1004 g105a) g103a g1039 g102d g1036 > _ _ _ _ g1004_kinzi_102d_1036:(1 2 3 i t) / _ _ _ ^ (cCons, cNum, g104e) [g1039 cMedBase]? [[[[cClusMed]? cClusMed]? cClusMed]? cClusMed]? cPreVowel? _=i _=t; g1039 cMedBase > _ cMed:(1 2); g1039 g1010 g103d > g1010_103d_med:(1 2 3) _ _; g100a g1039 g100a > g100a_100a:(1 2 3) _ _; g100b g1039 g100b > g100b_100b:(1 2 3) _ _; g100b g1039 g100c > g100b_100c:(1 2 3) _ _; g100d g1039 g100d > g100d_100d:(1 2 3) _ _; g100d g1039 g100e > g100d_100e:(1 2 3) _ _; g100f g1039 g100b > g100f_100b:(1 2 3) _ _; g100f g1039 g100d > g100f_100d:(1 2 3) _ _; g1014 g1039 g1010 g103c > g1014_1010_103c:(1 2 3 4) _ _ _; g1014 g1039 g1010 g103c > g1014_1010_103c:(1 2 3 4) _ _ _; g101e g1039 g1010 g103c > g101e_1010_103c:(1 2 3 4) _ _ _; g102d g1032 > g1032_102d:(1 3) _ / ^ _ cLVowel? _; g1037 g103a > g103a:2 g1037:1; g103b g103d g103e > g103b_103d_103e:(1 2 3) _ _; g103b g103e > g103b_103e:(1 2) _; g103c g103d g103e > @1 g103d_103e:(2 3) _; g103c g103d > g103c_103d_narr:(1 2) _; g103d g103e > g103d_103e_small:(2 3) _ / g103c _ _ ; g103d g103e > g103d_103e:(1 2) _; g103b g103d > g103b_103d:(1 2) _; g1039 cMedBase g103c g102f > _ cMed:(1 2) @r @u / _ _ _=r cPreVowel? cUVowel? _=u; if (!uTall) g103c g103e g102f > @r @h @u / _=r _=h cPreVowel? cUVowel? _=u; g103c g103e g1030 > @r @h @u / _=r _=h cPreVowel? cUVowel? _=u; if (!uLong) g103c g102f > g103c_102f_narr:(1 4) _ / _ cPreVowel? cUVowel? _; g103e g1030 > g103e_1030:(1 4) _ / _ cPreVowel? cUVowel? _; endif; g103e g102f > g103e_102f:(1 4) _ / _ cPreVowel? cUVowel? _; endif; g1020 g1039 g1020 > g1020_1020:(1 2 3) _ _; g1020 g103e > g1020_103e:(1 2) _; g1026 _ > g1025 g102e:1 / ^ _ _; g1029 _ > g101e g103c:1 / ^ _ _; g1051 g1039 g100c > g1051_100c:(1 2 3) _ _; g1051 g1039 g100d > g1051_100d:(1 2 3) _ _; g105a > g1004 / ^ _ (g103a g1039); g1081 _ > g1002 g103e:1 / ^ _ g103b? g103c? g103d? _; ANYGlyph g200c > ANYGlyph:(1 2) _; ANYGlyph g200d > ANYGlyph:(1 2) _; ANYGlyph g2060 > ANYGlyph:(1 2) _; endpass; #line 559 if (dottedc) pass(2); #line 568 ANYGlyph > @3 / cCons g103a ^ _{order > 1}; g1037 > @2 / ANYGlyph{order > 0 && order < 10} _ g106b ^; g1032 > @3 / ANYGlyph{order > 0} cLVowel _; g103e > @2 / g102c _; g1031 > @3 / g103e g103a _; _ > g_circledash:1 / g1032 _ cLVowel; _ > g_circledash:1 / g1036 _ g102b; _ ANYGlyph > g_circledash:3 @3 / ANYGlyph _ _{order > 1 && order <= @1.order}; _ ANYGlyph > g_circledash:3 @3 / ANYGlyph{order == 0} _ _{order > 1}; ANYGlyph / ANYGlyph{order >= 1} _{order <= 1 || order > @1.order}; _ ANYGlyph > g_circledash:2 @2 / _ _{order > 1}; endpass; endif; #line 598 pass(3); #line 604 g1014 > g1014_alt / (c103c_nar, c103c_naralt) _ ; #line 611 _ cPreVowel > @e:e _ / _ ^ c103c? cCons cMed? [[[[cClusDia]? cClusDia]? cClusDia]? cClusDia]? g103a? _=e; #line 622 _ c103c_nar > c103c_wide:r$r _ / ^ _ cConsWide cMed? c103b? _=r; _ c103c_nar > c103c_naralt:r$r _ / ^ _ cConsNar cMedNar? _=r c103d? c103e? cUSpace; _ c103c_nar > c103c_widalt:r$r _ / ^ _ cConsWide cMed? _=r c103d? c103e? cUSpace; _ c103c_nar > c103c_naralt:r$r _ / ^ _ cConsNar g103a cMedNar? _=r; _ c103c_nar > c103c_widalt:r$r _ / ^ _ cConsWide g103a cMed? _=r; _ c103c_nar > @r:r _ / ^ _ cConsNar cMedNar? c103b? _=r; _ c103c_nar > c103c_wide:r$r _ / ^ _ cConsNar cMed? c103b? _=r; #line 635 g101b > g101b_alt / ^ _ c103e? cUVowel? cLVowelAll; g101b > g101b_alt / ^ _ c103d; g101b > g101b_alt / ^ _ c103b; g101b > g101b_alt / ^ _ g1039; g101b > g101b_long / ^ _ g103e; g101b > g101b_long / ^ _ cMed cUVowel? cLVowel; g1020 > g1020_long / ^ _ g103e; #line 650 g1030 > @u / c103c_only cConsSVowel cUVowel? _=u ^; g102f > @u / c103c_only cConsSVowel cUVowel? _=u ^; if (!uTall) cLVowel > cLVowelM / ^ cConsSVowel cUVowel? _; g1014 cLVowel > g1014_alt:(1) cLVowelM:(3) / ^ _ cUVowel? _; g100a cLVowel > g100a_alt:(1) cLVowelM:(3) / ^ _ cUVowel? _; endif; g103d_103e > g103d_103e_small / c103c cCons _; cUTakesMa g1036 > cUWithMa:(1 3) _ / ^ _ cLVowel? _; #line 664 g1014 > g1014_alt / ^ _ t1014; g100a > g100a_alt / ^ _ t100a; g1009 > g1025 / ^ _ g103a; g1009 > g1025 / ^ _ cMed; #line 675 g103e > g103e_alt / ^ c103c cConsSVowel _; g103e > g103e_alt / cConsSlantH _; #line 682 g102b g103a > g102b_103a:(1 2) _; g1062 g103a > g1062_103a:(1 2) _; g102b g1036 > @2 @1; #line 690 g1032 gaa70 > g1032_aa70:(1 3) _ / _ cTone? _; g103a gaa70 > g103a_aa70:(1 3) _ / _ cTone? _; #line 697 if (khamti) cno_kham > ckham; endif; if (filled) cno_dot > cdot; endif; if (watri) cno_tri > ctri; endif; if (slanth == sgaw) cno_slanth > cslanth; else if (slanth == angle) cno_slantr > cslantr; endif; endpass; endtable; #line 770 table(positioning); pass(1); #line 780 c103c {advance.x = advx; user2 = 1} / ^ _{user2 == 0}; #line 790 cConsSVowel g1037 {attach {to = @2; at = LS; with = LM}; user1 = 1} / ^ c103c_only? _ cUDia? _{user1 == 0}; #line 792 c103c g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cConsSVowel cMed c103e_dia? cUDia? _{user1 == 0}; #line 794 c103c g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cConsSVowel cMed? c103e_dia cUDia? _{user1 == 0}; #line 796 c103c_mix g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cConsSVowel cUDia? _{user1 == 0}; #line 798 c101b g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ (cMed, cClusDia) cUVowel? cLVowelM? c1036? _{user1 == 0}; #line 800 c101b g1037 {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ cUVowel? cLVowelM c1036? _{user1 == 0}; #line 802 c101b g1037 {attach {to = @1; at = LLS; with = LM}; user1 = 1} / ^ _ cUDia? _{user1 == 0}; #line 804 if (lldot) cLeftLDot g1037 {attach {to = @1; at = LLS; with = LM}; user1 = 1} / ^ _ _ {user1 == 0}; #line 807 endif; cYDia {attach {to = @y; at = YS; with = YM}; user1 = 1} cTakesYDia / ^ _{user1 == 0} [[cnTakesUDia]? cnTakesUDia]? _=y; #line 813 cTakesYDia cYDia {attach {to = @y; at = YS; with = YM}; user1 = 1} cTakesYDia / ^ _ [[cnTakesUDia]? cnTakesUDia]? _{user1 == 0} [[cnTakesUDia]? cnTakesUDia]? _=y; #line 815 cTakesYDia cYDia {attach {to = @1; at = YS; with = YM}; user1 = 1} / ^ _ [[cnTakesUDia]? cnTakesUDia]? _{user1 == 0}; #line 825 cTakesBSDia cBSDia {attach {to = @1; at = BSS; with = BSM}; user1 = 1} / ^ _ [cnTakesBSDia]? _{user1 == 0}; #line 827 cTakesBDDia cBDDia {attach {to = @1; at = BDS; with = BDM}; user1 = 1} / ^ _ [cnTakesBDDia]? _{user1 == 0}; #line 829 cTakesBSDia cBDDia {attach {to = @1; at = BSS; with = BDM}; user1 = 1} / ^ _ [cnTakesBSDia]? _{user1 == 0}; #line 831 cTakesUDia cUDia {attach {to = @1; at = US; with = UM}; user1 = 1} / ^ _ [[cnTakesUDia]? cnTakesUDia]? _{user1 == 0}; #line 839 cTakesRDia cRDia {attach {to = @1; at = RS; with = RM}; user1 = 1; insert = 1} / ^ _ _=r{user1 == 0}; #line 854 cTakesLDia cLDia {attach {to = @1; at = LS; with = LM}; user1 = 1} / ^ _ [[[cnTakesLDia]? cnTakesLDia]? cnTakesLDia]? _{user1 == 0}; #line 861 cCons cYMed {attach.to = @1; user1 = 1} / ^ _ cMed? g103a? _{user1 == 0}; endpass; #line 877 pass(2); g101b_alt {kern.x = @2.rkern + 10m} cHasRkern {shift.x = -rkern}; c102b {kern.x = xkern / 2} / cUDia _; c102b {kern.x = xkern / 2} / c103c cCons cLVowel? cLDia? _; cConsNar / g102b_103a=a _ cLowDia? cUDia; cCons {kern.x = -@a.xkern} / g102b_103a=a _; cPreVowel {kern.x = -@a.xkern} / g102b_103a=a _; cRDia {shift.x = (@r.advancewidth + @r.advance.x - advance.x) / 2 + @r.position.x - position.x} / cTakesRDia=r _; cUVowel {advance.x = 0m} / c103b _ ; g1004_kinzi_102d {kern.x = - advance.x } / c103b _ cLVowel? cCons g103a; #line 896 endpass; endtable;