# automatic
@Uppercase = [ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Agrave Aacute Acircumflex Atilde Adieresis Aring AE Ccedilla Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis Oslash Ugrave Uacute Ucircumflex Udieresis Yacute Thorn Amacron Abreve Aogonek Cacute Ccircumflex Cdot Ccaron Dcaron Dcroat Emacron Ebreve Edotaccent Eogonek Ecaron Gcircumflex Gbreve Gdot Gcommaaccent Hcircumflex Hbar Itilde Imacron Ibreve Iogonek Idotaccent IJ Jcircumflex Kcommaaccent Lacute Lcommaaccent Lcaron Ldot Lslash Nacute Ncommaaccent Ncaron Eng Omacron Obreve Ohungarumlaut OE Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Tcommaaccent Tcaron Tbar Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Wcircumflex Ycircumflex Ydieresis Zacute Zdotaccent Zcaron Aringacute AEacute Oslashacute Scommaaccent Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega Iotadieresis Upsilondieresis afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061 afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10050 Wgrave Wacute Wdieresis Ygrave uni03D2 uni1E3E uni1E00 Ohorn Uhorn uni0400 uni040D uni0460 uni0462 uni0464 uni0466 uni0468 uni046A uni046C uni046E uni0470 uni0472 uni0474 uni0476 uni0478 uni0480 uni048A uni048C uni048E uni0492 uni0494 uni0496 uni0498 uni049A uni049C uni049E uni04A0 uni04A2 uni04A4 uni04A6 uni04A8 uni04AA uni04AC uni04AE uni04B0 uni04B2 uni04B4 uni04B6 uni04B8 uni04BA uni04BC uni04BE uni04C0 uni04C1 uni04C3 uni04C5 uni04C7 uni04C9 uni04CB uni04CD uni04D0 uni04D2 uni04D4 uni04D6 uni04D8 uni04DA uni04DC uni04DE uni04E0 uni04E2 uni04E4 uni04E6 uni04E8 uni04EA uni04EC uni04EE uni04F0 uni04F2 uni04F4 uni04F6 uni04F8 uni04FA uni04FC uni04FE uni0500 uni0502 uni0504 uni0506 uni0508 uni050A uni050C uni050E uni0510 uni0512 uni1EA0 uni1EA2 uni1EA4 uni1EA6 uni1EA8 uni1EAA uni1EAC uni1EAE uni1EB0 uni1EB2 uni1EB4 uni1EB6 uni1EB8 uni1EBA uni1EBC uni1EBE uni1EC0 uni1EC2 uni1EC4 uni1EC6 uni1EC8 uni1ECA uni1ECC uni1ECE uni1ED0 uni1ED2 uni1ED4 uni1ED6 uni1ED8 uni1EDA uni1EDC uni1EDE uni1EE0 uni1EE2 uni1EE4 uni1EE6 uni1EE8 uni1EEA uni1EEC uni1EEE uni1EF0 uni1EF4 uni1EF6 uni1EF8 Tcedilla uni0181 uni0182 uni0184 uni0186 uni0187 uni0189 uni018A uni018B uni018E uni018F uni0190 uni0191 uni0193 uni0194 uni0196 uni0197 uni0198 uni019C uni019D uni019F uni01A2 uni01A4 uni01A6 uni01A7 uni01A9 uni01AC uni01AE uni01B1 uni01B2 uni01B3 uni01B5 uni01B7 uni01B8 uni01BC uni01C4 uni01C5 uni01C7 uni01C8 uni01CA uni01CB uni01CD uni01CF uni01D1 uni01D3 uni01D5 uni01D7 uni01D9 uni01DB uni01DE uni01E0 uni01E2 uni01E4 uni01E6 uni01E8 uni01EA uni01EC uni01EE uni01F1 uni01F2 uni01F4 uni01F6 uni01F7 uni01F8 uni0200 uni0202 uni0204 uni0206 uni0208 uni020A uni020C uni020E uni0210 uni0212 uni0214 uni0216 uni021C uni021E uni0220 uni0222 uni0224 uni0226 uni0228 uni022A uni022C uni022E uni0230 uni0232 uni023A uni023B uni023D uni023E uni0241 uni0243 uni0244 uni0245 uni0246 uni0248 uni024A uni024C uni024E uni03D3 uni03D4 uni03D8 uni03DA uni03DC uni03DE uni03E0 uni03F4 uni03F7 uni03F9 uni03FA uni03FD uni03FE uni03FF uni051A uni051C uni1E02 uni1E04 uni1E06 uni1E08 uni1E0A uni1E0C uni1E0E uni1E10 uni1E12 uni1E14 uni1E16 uni1E18 uni1E1A uni1E1C uni1E1E uni1E20 uni1E22 uni1E24 uni1E26 uni1E28 uni1E2A uni1E2C uni1E2E uni1E30 uni1E32 uni1E34 uni1E36 uni1E38 uni1E3A uni1E3C uni1E40 uni1E42 uni1E44 uni1E46 uni1E48 uni1E4A uni1E4C uni1E4E uni1E50 uni1E52 uni1E54 uni1E56 uni1E58 uni1E5A uni1E5C uni1E5E uni1E60 uni1E62 uni1E64 uni1E66 uni1E68 uni1E6A uni1E6C uni1E6E uni1E70 uni1E72 uni1E74 uni1E76 uni1E78 uni1E7A uni1E7C uni1E7E uni1E86 uni1E88 uni1E8A uni1E8C uni1E8E uni1E90 uni1E92 uni1E94 uni1F08 uni1F09 uni1F0A uni1F0B uni1F0C uni1F0D uni1F0E uni1F0F uni1F18 uni1F19 uni1F1A uni1F1B uni1F1C uni1F1D uni1F28 uni1F29 uni1F2A uni1F2B uni1F2C uni1F2D uni1F2E uni1F2F uni1F38 uni1F39 uni1F3A uni1F3B uni1F3C uni1F3D uni1F3E uni1F3F uni1F48 uni1F49 uni1F4A uni1F4B uni1F4C uni1F4D uni1F59 uni1F5B uni1F5D uni1F5F uni1F68 uni1F69 uni1F6A uni1F6B uni1F6C uni1F6D uni1F6E uni1F6F uni1F88 uni1F89 uni1F8A uni1F8B uni1F8C uni1F8D uni1F8E uni1F8F uni1F98 uni1F99 uni1F9A uni1F9B uni1F9C uni1F9D uni1F9E uni1F9F uni1FA8 uni1FA9 uni1FAA uni1FAB uni1FAC uni1FAD uni1FAE uni1FAF uni1FB8 uni1FB9 uni1FBA uni1FBB uni1FBC uni1FC8 uni1FC9 uni1FCA uni1FCB uni1FCC uni1FD8 uni1FD9 uni1FDA uni1FDB uni1FE8 uni1FE9 uni1FEA uni1FEB uni1FEC uni1FF8 uni1FF9 uni1FFA uni1FFB uni1FFC uni2C60 uni2C62 uni2C63 uni2C64 uni2C67 uni2C69 uni2C6B uni2C6D uni2C72 uni2C75 uniA78B Eng.alt1 Eng.alt2 Eng.alt3 uni0514 uni0516 uni0518 uni051E uni0520 uni0522 uni0524 uni0526 LL-middleWelsh Mhook Germandbls Turneda V-middleWelsh Yloop uni2C70 uni2C7E uni2C7F uniA722 uniA724 uniA726 uniA728 uniA72A uniA72C uniA72E uniA732 uniA734 uniA736 uniA738 uniA73A uniA73C uniA73E uniA740 uniA742 uniA744 uniA746 uniA748 uniA74A uniA74C uniA74E uniA750 uniA752 uniA754 uniA756 uniA758 uniA75A uniA75C uniA75E uniA760 uniA764 uniA766 uniA768 uniA76A uniA76C uniA76E uniA779 uniA77B uniA77D uniA77E uniA780 uniA782 uniA784 uniA786 uniA78D uniA790 uniA792 uniA7A0 uniA7A2 uniA7A4 uniA7A6 uniA7A8 uniA7AA uniA7AB uniA7AC uniA7AD uniA7B0 uniA7B1 uniA7B2 uniA7B3 uniA7B4 uniA7B6 Lcommaaccent.loclMAH Ncommaaccent.loclMAH Aogonek.loclNAV Eogonek.loclNAV Iogonek.loclNAV Uogonek.loclNAV I.salt IJ.salt Iacute.salt Ibreve.salt uni01CF.salt Icircumflex.salt uni0208.salt Idieresis.salt uni1E2E.salt Idotaccent.salt uni1ECA.salt Igrave.salt uni1EC8.salt uni020A.salt Imacron.salt Iogonek.salt Iogonek_loclNAV.salt Itilde.salt uni1E2C.salt J.salt Jcircumflex.salt uni01C7.salt uni01CA.salt uniA640 uniA642 uniA644 uniA646 uniA648 uniA64A uniA64C uniA64E uniA650 uniA652 uniA654 uniA656 uniA658 uniA65A uniA65C uniA65E uniA660 uniA662 uniA664 uniA666 uniA668 uniA66A uniA66C uniA680 uniA682 uniA684 uniA686 uniA688 uniA68A uniA68C uniA68E uniA690 uniA692 uniA694 uniA696 uniA698 uniA69A uni0528 uni052A uni052C uni052E afii10055.salt afii10056.salt afii10057.salt uni04C0.salt Heta Archaicsampi Pamphyliandigamma KaiSymbol uni037F uni037F.salt Iota.salt Iotatonos.salt Iotadieresis.salt uni1F38.salt uni1F39.salt uni1F3A.salt uni1F3B.salt uni1F3C.salt uni1F3D.salt uni1F3E.salt uni1F3F.salt uni1FDA.salt uni1FDB.salt uni1FD8.salt uni1FD9.salt Cfraktur Hfraktur Ifraktur Rfraktur Zfraktur uniA762 Bscript Hscript Iscript Lscript PiDoubleStruck Rscript TurnedF angstrom CDoubleStruck HDoubleStruck NDoubleStruck PDoubleStruck QDoubleStruck RDoubleStruck ZDoubleStruck ItalicDDoubleStruck GammaDoubleStruck eulerconstant kelvin Escript Fscript Mscript uniA796 uniA798 uniA79A uniA79C uniA79E ];

# Prefix: Languagesystems
languagesystem DFLT dflt;
languagesystem cyrl dflt;
languagesystem grek dflt;
languagesystem latn dflt;
languagesystem latn CAT;
languagesystem latn MOL;
languagesystem latn ROM;
languagesystem latn NAV;
languagesystem latn MAH;
languagesystem latn IPPH;
languagesystem latn APPH;
languagesystem cyrl SRB;
languagesystem cyrl MKD;
languagesystem hebr dflt;

feature ccmp {
# zero.slash alternate
    sub zero uniFE00 by zero.slash;
    lookup latnSoftDot {
        @CombiningTopAccents = [acomb acutecomb acutetonecomb almostequaltoabovecomb arrowheadrightabovecomb brevecomb breveinvertedcomb candraBinducomb caroncomb ccomb circumflexcomb commaabovecomb commareversedabovecomb commaturnedabovecomb dblgravecomb dbloverlinecomb dblverticallineabovecomb dcomb dialytikatonoscomb dieresiscomb dotaccentcomb ecomb fermatacomb gbridgeabovecomb gravecomb gravetonecomb hcomb homotheticabovecomb hookabovecomb hungarumlautcomb icomb koroniscomb lefthalfringabovecomb macroncomb mcomb nottildeabovecomb ocomb overlinecmb perispomenicomb rcomb righthalfringabovecomb ringcomb tcomb tildecomb tildedoublecomb tildeverticalcomb ucomb vcomb verticallineabovecomb xabovecomb xcomb zigzagabovecomb];
        @CombiningNonTopAccents = [acutebelowcomb arrowdoublerightbelowcomb arrowheadleftbelowcomb arrowheadrightbelowcomb arrowheadrightheadupbelowcomb arrowleftrightbelowcomb arrowupbelowcomb asteriskbelowcomb brevebelowcomb breveinvertedbelowcomb bridgebelowcomb bridgeinvertedbelowcomb caronbelowcomb cedillacomb circumflexbelowcomb commaaccent dblarchinvertedbelowcomb dbllowlinecomb dieresisbelowcomb dotbelowcomb doublebrevebelowcomb doublemacronbelowcomb doubleringbelowcomb doubleverticallinebelowcomb downtackbelowcomb equalbelowcomb gravebelowcomb hookpalatalizedbelowcomb hookretroflexbelowcomb leftanglebelowcomb lefttackbelowcomb lowlinecomb macronbelowcomb minusbelowcomb ogonekcomb plusbelowcomb righttackbelowcomb ringbelowcomb ringhalfleftbelowcomb ringhalfrightbelowcomb seagullbelowcomb squarebelowcomb tildebelowcomb uptackbelowcomb verticallinebelowcomb xbelowcomb ypogegrammenicomb breveinverteddoublecomb doublebrevecomb graphemejoinercomb doublemacroncomb dotaboverightcomb horncomb slashlongoverlaycomb slashshortoverlaycomb strokelongoverlaycomb strokeshortoverlaycomb tildeoverlaycomb];
        sub [i j uni1ECB uni1E2D uni1DA8 uni1DA4 iogonek uni0249 uni029D uni02B2 uni03F3 afii10103 afii10105 uni1D62 uni1D96 uni0268 imod ItaliciDoubleStruck ItalicjDoubleStruck subscriptj]' @CombiningTopAccents by [idotless jdotless uni1ECBdotless uni1E2Ddotless uni1DA8dotless uni1DA4dotless iogonekdotless uni0249dotless uni029Ddotless uni02B2dotless uni03F3dotless afii10103dotless afii10105dotless uni1D62dotless uni1D96dotless uni0268dotless imoddotless ItaliciDoubleStruckdotless ItalicjDoubleStruckdotless subscriptjdotless];
        sub [i j uni1ECB uni1E2D uni1DA8 uni1DA4 iogonek uni0249 uni029D uni02B2 uni03F3 afii10103 afii10105 uni1D62 uni1D96 uni0268 imod ItaliciDoubleStruck ItalicjDoubleStruck subscriptj]' @CombiningNonTopAccents @CombiningTopAccents by [idotless jdotless uni1ECBdotless uni1E2Ddotless uni1DA8dotless uni1DA4dotless iogonekdotless uni0249dotless uni029Ddotless uni02B2dotless uni03F3dotless afii10103dotless afii10105dotless uni1D62dotless uni1D96dotless uni0268dotless imoddotless ItaliciDoubleStruckdotless ItalicjDoubleStruckdotless subscriptjdotless];
    } latnSoftDot;

    lookup latnLigatures {
        # The following WAS in the liga, but I think it belongs here.
        sub O horncomb by Ohorn;
        sub o horncomb by ohorn;
        sub U horncomb by Uhorn;
        sub u horncomb by uhorn;
        sub O ogonekcomb macron by uni01EC;
        sub o ogonekcomb macron by uni01ED;
        #sub O ogonekcomb macron by Oogonekmacron;
        #sub o ogonekcomb macron by oogonekmacron;
        #sub o.sc ogonekcomb.sc macron.sc by oogonekmacron.sc;
        #sub o.sc ogonekcomb.sc by oogonek.sc;
        sub O ogonekcomb by uni01EA;
        sub o ogonekcomb by uni01EB;
        sub A ogonekcomb by Aogonek;
        sub a ogonekcomb by aogonek;
        sub E ogonekcomb by Eogonek;
        sub e ogonekcomb by eogonek;
        sub I ogonekcomb by Iogonek;
        sub i ogonekcomb by iogonek;
        sub U ogonekcomb by Uogonek;
        sub u ogonekcomb by uogonek;
        sub a.sc ogonekcomb.sc by aogonek.sc;
        sub e.sc ogonekcomb.sc by eogonek.sc;
        sub i.sc ogonekcomb.sc by iogonek.sc;
        sub u.sc ogonekcomb.sc by uogonek.sc;
        sub eopenreversed rhotichookmod by eopenreversedhook;
        sub eturned rhotichookmod by schwahook;
        # IPA
        sub uni02E5 uni02E5 uni02E9 by uni02E5_uni02E5_uni02E9;
        sub uni02E5 uni02E5 uni02E6 by uni02E5_uni02E5_uni02E6;
        sub uni02E5 uni02E5 uni02E8 by uni02E5_uni02E5_uni02E8;
        sub uni02E5 uni02E5 uni02E7 by uni02E5_uni02E5_uni02E7;
        sub uni02E5 uni02E9 uni02E5 by uni02E5_uni02E9_uni02E5;
        sub uni02E5 uni02E9 uni02E9 by uni02E5_uni02E9_uni02E9;
        sub uni02E5 uni02E9 uni02E6 by uni02E5_uni02E9_uni02E6;
        sub uni02E5 uni02E9 uni02E8 by uni02E5_uni02E9_uni02E8;
        sub uni02E5 uni02E9 uni02E7 by uni02E5_uni02E9_uni02E7;
        sub uni02E5 uni02E6 uni02E5 by uni02E5_uni02E6_uni02E5;
        sub uni02E5 uni02E6 uni02E9 by uni02E5_uni02E6_uni02E9;
        sub uni02E5 uni02E6 uni02E6 by uni02E5_uni02E6_uni02E6;
        sub uni02E5 uni02E6 uni02E8 by uni02E5_uni02E6_uni02E8;
        sub uni02E5 uni02E6 uni02E7 by uni02E5_uni02E6_uni02E7;
        sub uni02E5 uni02E8 uni02E5 by uni02E5_uni02E8_uni02E5;
        sub uni02E5 uni02E8 uni02E9 by uni02E5_uni02E8_uni02E9;
        sub uni02E5 uni02E8 uni02E6 by uni02E5_uni02E8_uni02E6;
        sub uni02E5 uni02E8 uni02E8 by uni02E5_uni02E8_uni02E8;
        sub uni02E5 uni02E8 uni02E7 by uni02E5_uni02E8_uni02E7;
        sub uni02E5 uni02E7 uni02E5 by uni02E5_uni02E7_uni02E5;
        sub uni02E5 uni02E7 uni02E9 by uni02E5_uni02E7_uni02E9;
        sub uni02E5 uni02E7 uni02E6 by uni02E5_uni02E7_uni02E6;
        sub uni02E5 uni02E7 uni02E8 by uni02E5_uni02E7_uni02E8;
        sub uni02E5 uni02E7 uni02E7 by uni02E5_uni02E7_uni02E7;
        sub uni02E9 uni02E5 uni02E5 by uni02E9_uni02E5_uni02E5;
        sub uni02E9 uni02E5 uni02E9 by uni02E9_uni02E5_uni02E9;
        sub uni02E9 uni02E5 uni02E6 by uni02E9_uni02E5_uni02E6;
        sub uni02E9 uni02E5 uni02E8 by uni02E9_uni02E5_uni02E8;
        sub uni02E9 uni02E5 uni02E7 by uni02E9_uni02E5_uni02E7;
        sub uni02E9 uni02E9 uni02E5 by uni02E9_uni02E9_uni02E5;
        sub uni02E9 uni02E9 uni02E6 by uni02E9_uni02E9_uni02E6;
        sub uni02E9 uni02E9 uni02E8 by uni02E9_uni02E9_uni02E8;
        sub uni02E9 uni02E9 uni02E7 by uni02E9_uni02E9_uni02E7;
        sub uni02E9 uni02E6 uni02E5 by uni02E9_uni02E6_uni02E5;
        sub uni02E9 uni02E6 uni02E9 by uni02E9_uni02E6_uni02E9;
        sub uni02E9 uni02E6 uni02E6 by uni02E9_uni02E6_uni02E6;
        sub uni02E9 uni02E6 uni02E8 by uni02E9_uni02E6_uni02E8;
        sub uni02E9 uni02E6 uni02E7 by uni02E9_uni02E6_uni02E7;
        sub uni02E9 uni02E8 uni02E5 by uni02E9_uni02E8_uni02E5;
        sub uni02E9 uni02E8 uni02E9 by uni02E9_uni02E8_uni02E9;
        sub uni02E9 uni02E8 uni02E6 by uni02E9_uni02E8_uni02E6;
        sub uni02E9 uni02E8 uni02E8 by uni02E9_uni02E8_uni02E8;
        sub uni02E9 uni02E8 uni02E7 by uni02E9_uni02E8_uni02E7;
        sub uni02E9 uni02E7 uni02E5 by uni02E9_uni02E7_uni02E5;
        sub uni02E9 uni02E7 uni02E9 by uni02E9_uni02E7_uni02E9;
        sub uni02E9 uni02E7 uni02E6 by uni02E9_uni02E7_uni02E6;
        sub uni02E9 uni02E7 uni02E8 by uni02E9_uni02E7_uni02E8;
        sub uni02E9 uni02E7 uni02E7 by uni02E9_uni02E7_uni02E7;
        sub uni02E6 uni02E5 uni02E5 by uni02E6_uni02E5_uni02E5;
        sub uni02E6 uni02E5 uni02E9 by uni02E6_uni02E5_uni02E9;
        sub uni02E6 uni02E5 uni02E6 by uni02E6_uni02E5_uni02E6;
        sub uni02E6 uni02E5 uni02E8 by uni02E6_uni02E5_uni02E8;
        sub uni02E6 uni02E5 uni02E7 by uni02E6_uni02E5_uni02E7;
        sub uni02E6 uni02E9 uni02E5 by uni02E6_uni02E9_uni02E5;
        sub uni02E6 uni02E9 uni02E9 by uni02E6_uni02E9_uni02E9;
        sub uni02E6 uni02E9 uni02E6 by uni02E6_uni02E9_uni02E6;
        sub uni02E6 uni02E9 uni02E8 by uni02E6_uni02E9_uni02E8;
        sub uni02E6 uni02E9 uni02E7 by uni02E6_uni02E9_uni02E7;
        sub uni02E6 uni02E6 uni02E5 by uni02E6_uni02E6_uni02E5;
        sub uni02E6 uni02E6 uni02E9 by uni02E6_uni02E6_uni02E9;
        sub uni02E6 uni02E6 uni02E8 by uni02E6_uni02E6_uni02E8;
        sub uni02E6 uni02E6 uni02E7 by uni02E6_uni02E6_uni02E7;
        sub uni02E6 uni02E8 uni02E5 by uni02E6_uni02E8_uni02E5;
        sub uni02E6 uni02E8 uni02E9 by uni02E6_uni02E8_uni02E9;
        sub uni02E6 uni02E8 uni02E6 by uni02E6_uni02E8_uni02E6;
        sub uni02E6 uni02E8 uni02E8 by uni02E6_uni02E8_uni02E8;
        sub uni02E6 uni02E8 uni02E7 by uni02E6_uni02E8_uni02E7;
        sub uni02E6 uni02E7 uni02E5 by uni02E6_uni02E7_uni02E5;
        sub uni02E6 uni02E7 uni02E9 by uni02E6_uni02E7_uni02E9;
        sub uni02E6 uni02E7 uni02E6 by uni02E6_uni02E7_uni02E6;
        sub uni02E6 uni02E7 uni02E8 by uni02E6_uni02E7_uni02E8;
        sub uni02E6 uni02E7 uni02E7 by uni02E6_uni02E7_uni02E7;
        sub uni02E8 uni02E5 uni02E5 by uni02E8_uni02E5_uni02E5;
        sub uni02E8 uni02E5 uni02E9 by uni02E8_uni02E5_uni02E9;
        sub uni02E8 uni02E5 uni02E6 by uni02E8_uni02E5_uni02E6;
        sub uni02E8 uni02E5 uni02E8 by uni02E8_uni02E5_uni02E8;
        sub uni02E8 uni02E5 uni02E7 by uni02E8_uni02E5_uni02E7;
        sub uni02E8 uni02E9 uni02E5 by uni02E8_uni02E9_uni02E5;
        sub uni02E8 uni02E9 uni02E9 by uni02E8_uni02E9_uni02E9;
        sub uni02E8 uni02E9 uni02E6 by uni02E8_uni02E9_uni02E6;
        sub uni02E8 uni02E9 uni02E8 by uni02E8_uni02E9_uni02E8;
        sub uni02E8 uni02E9 uni02E7 by uni02E8_uni02E9_uni02E7;
        sub uni02E8 uni02E6 uni02E5 by uni02E8_uni02E6_uni02E5;
        sub uni02E8 uni02E6 uni02E9 by uni02E8_uni02E6_uni02E9;
        sub uni02E8 uni02E6 uni02E6 by uni02E8_uni02E6_uni02E6;
        sub uni02E8 uni02E6 uni02E8 by uni02E8_uni02E6_uni02E8;
        sub uni02E8 uni02E6 uni02E7 by uni02E8_uni02E6_uni02E7;
        sub uni02E8 uni02E8 uni02E5 by uni02E8_uni02E8_uni02E5;
        sub uni02E8 uni02E8 uni02E9 by uni02E8_uni02E8_uni02E9;
        sub uni02E8 uni02E8 uni02E6 by uni02E8_uni02E8_uni02E6;
        sub uni02E8 uni02E8 uni02E7 by uni02E8_uni02E8_uni02E7;
        sub uni02E8 uni02E7 uni02E5 by uni02E8_uni02E7_uni02E5;
        sub uni02E8 uni02E7 uni02E9 by uni02E8_uni02E7_uni02E9;
        sub uni02E8 uni02E7 uni02E6 by uni02E8_uni02E7_uni02E6;
        sub uni02E8 uni02E7 uni02E8 by uni02E8_uni02E7_uni02E8;
        sub uni02E8 uni02E7 uni02E7 by uni02E8_uni02E7_uni02E7;
        sub uni02E7 uni02E5 uni02E5 by uni02E7_uni02E5_uni02E5;
        sub uni02E7 uni02E5 uni02E9 by uni02E7_uni02E5_uni02E9;
        sub uni02E7 uni02E5 uni02E6 by uni02E7_uni02E5_uni02E6;
        sub uni02E7 uni02E5 uni02E8 by uni02E7_uni02E5_uni02E8;
        sub uni02E7 uni02E5 uni02E7 by uni02E7_uni02E5_uni02E7;
        sub uni02E7 uni02E9 uni02E5 by uni02E7_uni02E9_uni02E5;
        sub uni02E7 uni02E9 uni02E9 by uni02E7_uni02E9_uni02E9;
        sub uni02E7 uni02E9 uni02E6 by uni02E7_uni02E9_uni02E6;
        sub uni02E7 uni02E9 uni02E8 by uni02E7_uni02E9_uni02E8;
        sub uni02E7 uni02E9 uni02E7 by uni02E7_uni02E9_uni02E7;
        sub uni02E7 uni02E6 uni02E5 by uni02E7_uni02E6_uni02E5;
        sub uni02E7 uni02E6 uni02E9 by uni02E7_uni02E6_uni02E9;
        sub uni02E7 uni02E6 uni02E6 by uni02E7_uni02E6_uni02E6;
        sub uni02E7 uni02E6 uni02E8 by uni02E7_uni02E6_uni02E8;
        sub uni02E7 uni02E6 uni02E7 by uni02E7_uni02E6_uni02E7;
        sub uni02E7 uni02E8 uni02E5 by uni02E7_uni02E8_uni02E5;
        sub uni02E7 uni02E8 uni02E9 by uni02E7_uni02E8_uni02E9;
        sub uni02E7 uni02E8 uni02E6 by uni02E7_uni02E8_uni02E6;
        sub uni02E7 uni02E8 uni02E8 by uni02E7_uni02E8_uni02E8;
        sub uni02E7 uni02E8 uni02E7 by uni02E7_uni02E8_uni02E7;
        sub uni02E7 uni02E7 uni02E5 by uni02E7_uni02E7_uni02E5;
        sub uni02E7 uni02E7 uni02E9 by uni02E7_uni02E7_uni02E9;
        sub uni02E7 uni02E7 uni02E6 by uni02E7_uni02E7_uni02E6;
        sub uni02E7 uni02E7 uni02E8 by uni02E7_uni02E7_uni02E8;
        sub uni02E5 uni02E9 by uni02E5_uni02E9;
        sub uni02E5 uni02E6 by uni02E5_uni02E6;
        sub uni02E5 uni02E8 by uni02E5_uni02E8;
        sub uni02E5 uni02E7 by uni02E5_uni02E7;
        sub uni02E9 uni02E5 by uni02E9_uni02E5;
        sub uni02E9 uni02E6 by uni02E9_uni02E6;
        sub uni02E9 uni02E8 by uni02E9_uni02E8;
        sub uni02E9 uni02E7 by uni02E9_uni02E7;
        sub uni02E6 uni02E5 by uni02E6_uni02E5;
        sub uni02E6 uni02E9 by uni02E6_uni02E9;
        sub uni02E6 uni02E8 by uni02E6_uni02E8;
        sub uni02E6 uni02E7 by uni02E6_uni02E7;
        sub uni02E8 uni02E5 by uni02E8_uni02E5;
        sub uni02E8 uni02E9 by uni02E8_uni02E9;
        sub uni02E8 uni02E6 by uni02E8_uni02E6;
        sub uni02E8 uni02E7 by uni02E8_uni02E7;
        sub uni02E7 uni02E5 by uni02E7_uni02E5;
        sub uni02E7 uni02E9 by uni02E7_uni02E9;
        sub uni02E7 uni02E6 by uni02E7_uni02E6;
        sub uni02E7 uni02E8 by uni02E7_uni02E8;
    } latnLigatures;

    script latn;
    language dflt;
    lookup latnSoftDot;
    lookup latnLigatures;
    language CAT;
    lookup latnSoftDot;
    lookup latnLigatures;
    language MAH;
    lookup latnSoftDot;
    lookup latnLigatures;
    language MOL;
    lookup latnSoftDot;
    lookup latnLigatures;
    language NAV;
    lookup latnSoftDot;
    lookup latnLigatures;
    language ROM;
    lookup latnSoftDot;
    lookup latnLigatures;
    script grek;
    # Greek
    sub alpha macroncomb commaabovecomb gravecomb by uni03B1030403130300;
    sub alpha macroncomb commaabovecomb acutecomb by uni03B1030403130301;
    sub alpha macroncomb commareversedabovecomb gravecomb by uni03B1030403140300;
    sub alpha macroncomb commareversedabovecomb acutecomb by uni03B1030403140301;
    sub alpha brevecomb commaabovecomb gravecomb by uni03B1030603130300;
    sub alpha brevecomb commaabovecomb acutecomb by uni03B1030603130301;
    sub alpha brevecomb commareversedabovecomb gravecomb by uni03B1030603140300;
    sub alpha brevecomb commareversedabovecomb acutecomb by uni03B1030603140301;
    sub iota macroncomb commaabovecomb gravecomb by uni03B9030403130300;
    sub iota macroncomb commaabovecomb acutecomb by uni03B9030403130301;
    sub iota macroncomb commareversedabovecomb gravecomb by uni03B9030403140300;
    sub iota macroncomb commareversedabovecomb acutecomb by uni03B9030403140301;
    sub iota brevecomb commaabovecomb gravecomb by uni03B9030603130300;
    sub iota brevecomb commaabovecomb acutecomb by uni03B9030603130301;
    sub iota brevecomb commareversedabovecomb gravecomb by uni03B9030603140300;
    sub iota brevecomb commareversedabovecomb acutecomb by uni03B9030603140301;
    sub upsilon macroncomb commaabovecomb gravecomb by uni03C5030403130300;
    sub upsilon macroncomb commaabovecomb acutecomb by uni03C5030403130301;
    sub upsilon macroncomb commareversedabovecomb gravecomb by uni03C5030403140300;
    sub upsilon macroncomb commareversedabovecomb acutecomb by uni03C5030403140301;
    sub upsilon brevecomb commaabovecomb gravecomb by uni03C5030603130300;
    sub upsilon brevecomb commaabovecomb acutecomb by uni03C5030603130301;
    sub upsilon brevecomb commareversedabovecomb gravecomb by uni03C5030603140300;
    sub upsilon brevecomb commareversedabovecomb acutecomb by uni03C5030603140301;
    sub iota dieresiscomb macroncomb gravecomb by uni03B9030803040300;
    sub iota dieresiscomb macroncomb acutecomb by uni03B9030803040301;
    sub iota dieresiscomb brevecomb gravecomb by uni03B9030803060300;
    sub iota dieresiscomb brevecomb acutecomb by uni03B9030803060301;
    sub upsilon dieresiscomb macroncomb gravecomb by uni03C5030803040300;
    sub upsilon dieresiscomb macroncomb acutecomb by uni03C5030803040301;
    sub upsilon dieresiscomb brevecomb gravecomb by uni03C5030803060300;
    sub upsilon dieresiscomb brevecomb acutecomb by uni03C5030803060301;
    script cyrl;
    #sub afii10103 by afii10103dotless;
    #sub afii10105 by afii10105dotless;
    script hebr;
    sub alef-hb dagesh-hb by alefdagesh-hb;
    sub finalpe-hb dagesh-hb by finalpedagesh-hb;
    sub he-hb dagesh-hb by hedagesh-hb;
    sub pe-hb dagesh-hb by pedagesh-hb;
    sub qof-hb dagesh-hb by qofdagesh-hb;
    sub resh-hb dagesh-hb by reshdagesh-hb;
    sub samekh-hb dagesh-hb by samekhdagesh-hb;
    sub shin-hb dagesh-hb by shindagesh-hb;
    sub tav-hb dagesh-hb by tavdagesh-hb;
} ccmp;

feature aalt {
feature ccmp;
    feature locl;
    feature subs;
    feature sups;
    feature numr;
    feature dnom;
    feature frac;
    feature ordn;
    feature lnum;
    feature pnum;
    feature tnum;
    feature onum;
    # feature c2sc;
    # feature smcp;
    feature case;
    feature rtlm;
    feature zero;
    feature ss01;
    feature ss02;
    feature ss03;
    feature salt;
    sub Eng by Eng.alt1;
    sub Eng by Eng.alt2;
    sub Eng by Eng.alt3;
    sub uni03D0 by uni03D0.salt;
} aalt;

feature locl {
script latn;
    language NAV;
    sub Aogonek by Aogonek.loclNAV;
    sub Eogonek by Eogonek.loclNAV;
    sub Iogonek by Iogonek.loclNAV;
    sub Uogonek by Uogonek.loclNAV;
    sub aogonek by aogonek.loclNAV;
    sub eogonek by eogonek.loclNAV;
    sub iogonek by iogonek.loclNAV;
    sub uogonek by uogonek.loclNAV;
    language MOL;
    sub Scedilla by Scommaaccent;
    sub scedilla by scommaaccent;
    sub Tcedilla by Tcommaaccent;
    sub tcedilla by tcommaaccent;
    language ROM;
    sub Scedilla by Scommaaccent;
    sub scedilla by scommaaccent;
    sub Tcedilla by Tcommaaccent;
    sub tcedilla by tcommaaccent;
    language MAH;
    sub Lcommaaccent by Lcommaaccent.loclMAH;
    sub Ncommaaccent by Ncommaaccent.loclMAH;
    sub lcommaaccent by lcommaaccent.loclMAH;
    sub ncommaaccent by ncommaaccent.loclMAH;
    language CAT;
    sub l' periodcentered' l by ldot;
    sub L' periodcentered' L by Ldot;
    sub l.sc' periodcentered' l.sc by ldot.sc;
    language IPPH;
    sub Chi by uniA7B3;
    sub chi by uniAB53;
    sub Beta by uniA7B4;
    sub beta by uniA7B5;
    language APPH;
    sub Chi by uniA7B3;
    sub chi by uniAB53;
    sub Beta by uniA7B4;
    sub beta by uniA7B5;
    script cyrl;
    language SRB;
    sub afii10066 by afii10066.loclSRB;
    language MKD;
    sub afii10066 by afii10066.loclSRB;
} locl;

feature subs {
# automatic
sub h by hinferior;
    sub k by kinferior;
    sub l by linferior;
    sub m by minferior;
    sub n by ninferior;
    sub p by pinferior;
    sub s by sinferior;
    sub t by tinferior;
    sub zero by zeroinferior;
    sub one by oneinferior;
    sub two by twoinferior;
    sub three by threeinferior;
    sub four by fourinferior;
    sub five by fiveinferior;
    sub six by sixinferior;
    sub seven by seveninferior;
    sub eight by eightinferior;
    sub nine by nineinferior;
    sub parenleft by parenleftinferior;
    sub parenright by parenrightinferior;
    sub equal by equalinferior;
    sub plus by plusinferior;
} subs;

feature sups {
# automatic
sub two by twosuperior;
    sub three by threesuperior;
    sub one by onesuperior;
    sub n by nsuperior;
    sub four by foursuperior;
    sub five by fivesuperior;
    sub seven by sevensuperior;
    sub eight by eightsuperior;
    sub zero by zerosuperior;
    sub six by sixsuperior;
    sub nine by ninesuperior;
    sub parenleft by parenleftsuperior;
    sub parenright by parenrightsuperior;
    sub equal by equalsuperior;
    sub plus by plussuperior;
} sups;

feature numr {
# automatic
sub zero by zero.numr;
    sub one by one.numr;
    sub two by two.numr;
    sub three by three.numr;
    sub four by four.numr;
    sub five by five.numr;
    sub six by six.numr;
    sub seven by seven.numr;
    sub eight by eight.numr;
    sub nine by nine.numr;
} numr;

feature dnom {
# automatic
sub zero by zero.dnom;
    sub one by one.dnom;
    sub two by two.dnom;
    sub three by three.dnom;
    sub four by four.dnom;
    sub five by five.dnom;
    sub six by six.dnom;
    sub seven by seven.dnom;
    sub eight by eight.dnom;
    sub nine by nine.dnom;
} dnom;

feature frac {
# automatic
lookup FRAC {
        sub slash by fraction;
    } FRAC;

    lookup UP {
        sub [zero one two three four five six seven eight nine] by [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr];
    } UP;

    lookup DOWN {
        sub fraction [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]' by [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];
        sub [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom] [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]' by [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];
    } DOWN;

} frac;

feature ordn {
# automatic
sub [zero one two three four five six seven eight nine] [A a]' by ordfeminine;
    sub [zero one two three four five six seven eight nine] [O o]' by ordmasculine;
} ordn;

feature lnum {
# automatic
sub zero.osf by zero.lf;
    sub one.osf by one.lf;
    sub two.osf by two.lf;
    sub three.osf by three.lf;
    sub four.osf by four.lf;
    sub five.osf by five.lf;
    sub six.osf by six.lf;
    sub seven.osf by seven.lf;
    sub eight.osf by eight.lf;
    sub nine.osf by nine.lf;
} lnum;

feature pnum {
# automatic
sub zero by zero.lf;
    sub one by one.lf;
    sub two by two.lf;
    sub three by three.lf;
    sub four by four.lf;
    sub five by five.lf;
    sub six by six.lf;
    sub seven by seven.lf;
    sub eight by eight.lf;
    sub nine by nine.lf;
    sub zero.tosf by zero.osf;
    sub one.tosf by one.osf;
    sub two.tosf by two.osf;
    sub three.tosf by three.osf;
    sub four.tosf by four.osf;
    sub five.tosf by five.osf;
    sub six.tosf by six.osf;
    sub seven.tosf by seven.osf;
    sub eight.tosf by eight.osf;
    sub nine.tosf by nine.osf;
} pnum;

feature tnum {
# automatic
sub zero.lf by zero;
    sub one.lf by one;
    sub two.lf by two;
    sub three.lf by three;
    sub four.lf by four;
    sub five.lf by five;
    sub six.lf by six;
    sub seven.lf by seven;
    sub eight.lf by eight;
    sub nine.lf by nine;
    sub zero.osf by zero.tosf;
    sub one.osf by one.tosf;
    sub two.osf by two.tosf;
    sub three.osf by three.tosf;
    sub four.osf by four.tosf;
    sub five.osf by five.tosf;
    sub six.osf by six.tosf;
    sub seven.osf by seven.tosf;
    sub eight.osf by eight.tosf;
    sub nine.osf by nine.tosf;
} tnum;

feature onum {
# automatic
sub zero by zero.tosf;
    sub one by one.tosf;
    sub two by two.tosf;
    sub three by three.tosf;
    sub four by four.tosf;
    sub five by five.tosf;
    sub six by six.tosf;
    sub seven by seven.tosf;
    sub eight by eight.tosf;
    sub nine by nine.tosf;
    sub zero.lf by zero.osf;
    sub one.lf by one.osf;
    sub two.lf by two.osf;
    sub three.lf by three.osf;
    sub four.lf by four.osf;
    sub five.lf by five.osf;
    sub six.lf by six.osf;
    sub seven.lf by seven.osf;
    sub eight.lf by eight.osf;
    sub nine.lf by nine.osf;
} onum;

feature c2sc {
# automatic
sub A by a.sc;
    sub B by b.sc;
    sub C by c.sc;
    sub D by d.sc;
    sub E by e.sc;
    sub F by f.sc;
    sub G by g.sc;
    sub H by h.sc;
    sub I by i.sc;
    sub J by j.sc;
    sub K by k.sc;
    sub L by l.sc;
    sub M by m.sc;
    sub N by n.sc;
    sub O by o.sc;
    sub P by p.sc;
    sub Q by q.sc;
    sub R by r.sc;
    sub S by s.sc;
    sub T by t.sc;
    sub U by u.sc;
    sub V by v.sc;
    sub W by w.sc;
    sub X by x.sc;
    sub Y by y.sc;
    sub Z by z.sc;
    sub Agrave by agrave.sc;
    sub Aacute by aacute.sc;
    sub Acircumflex by acircumflex.sc;
    sub Atilde by atilde.sc;
    sub Adieresis by adieresis.sc;
    sub Aring by aring.sc;
    sub AE by ae.sc;
    sub Ccedilla by ccedilla.sc;
    sub Egrave by egrave.sc;
    sub Eacute by eacute.sc;
    sub Ecircumflex by ecircumflex.sc;
    sub Edieresis by edieresis.sc;
    sub Igrave by igrave.sc;
    sub Iacute by iacute.sc;
    sub Icircumflex by icircumflex.sc;
    sub Idieresis by idieresis.sc;
    sub Eth by eth.sc;
    sub Ntilde by ntilde.sc;
    sub Ograve by ograve.sc;
    sub Oacute by oacute.sc;
    sub Ocircumflex by ocircumflex.sc;
    sub Otilde by otilde.sc;
    sub Odieresis by odieresis.sc;
    sub Oslash by oslash.sc;
    sub Ugrave by ugrave.sc;
    sub Uacute by uacute.sc;
    sub Ucircumflex by ucircumflex.sc;
    sub Udieresis by udieresis.sc;
    sub Yacute by yacute.sc;
    sub Thorn by thorn.sc;
    sub Amacron by amacron.sc;
    sub Abreve by abreve.sc;
    sub Aogonek by aogonek.sc;
    sub Cacute by cacute.sc;
    sub Ccircumflex by ccircumflex.sc;
    sub Ccaron by ccaron.sc;
    sub Dcaron by dcaron.sc;
    sub Dcroat by dcroat.sc;
    sub Emacron by emacron.sc;
    sub Ebreve by ebreve.sc;
    sub Edotaccent by edotaccent.sc;
    sub Eogonek by eogonek.sc;
    sub Ecaron by ecaron.sc;
    sub Gcircumflex by gcircumflex.sc;
    sub Gbreve by gbreve.sc;
    sub Gcommaaccent by gcommaaccent.sc;
    sub Hcircumflex by hcircumflex.sc;
    sub Hbar by hbar.sc;
    sub Itilde by itilde.sc;
    sub Imacron by imacron.sc;
    sub Ibreve by ibreve.sc;
    sub Iogonek by iogonek.sc;
    sub Idotaccent by idotaccent.sc;
    sub IJ by ij.sc;
    sub Jcircumflex by jcircumflex.sc;
    sub Kcommaaccent by kcommaaccent.sc;
    sub Lacute by lacute.sc;
    sub Lcommaaccent by lcommaaccent.sc;
    sub Lcaron by lcaron.sc;
    sub Ldot by ldot.sc;
    sub Lslash by lslash.sc;
    sub Nacute by nacute.sc;
    sub Ncommaaccent by ncommaaccent.sc;
    sub Ncaron by ncaron.sc;
    sub Eng by eng.sc;
    sub Omacron by omacron.sc;
    sub Obreve by obreve.sc;
    sub Ohungarumlaut by ohungarumlaut.sc;
    sub OE by oe.sc;
    sub Racute by racute.sc;
    sub Rcommaaccent by rcommaaccent.sc;
    sub Rcaron by rcaron.sc;
    sub Sacute by sacute.sc;
    sub Scircumflex by scircumflex.sc;
    sub Scedilla by scedilla.sc;
    sub Scaron by scaron.sc;
    sub Tcommaaccent by tcommaaccent.sc;
    sub Tcaron by tcaron.sc;
    sub Tbar by tbar.sc;
    sub Utilde by utilde.sc;
    sub Umacron by umacron.sc;
    sub Ubreve by ubreve.sc;
    sub Uring by uring.sc;
    sub Uhungarumlaut by uhungarumlaut.sc;
    sub Uogonek by uogonek.sc;
    sub Wcircumflex by wcircumflex.sc;
    sub Ycircumflex by ycircumflex.sc;
    sub Ydieresis by ydieresis.sc;
    sub Zacute by zacute.sc;
    sub Zdotaccent by zdotaccent.sc;
    sub Zcaron by zcaron.sc;
    sub Aringacute by aringacute.sc;
    sub AEacute by aeacute.sc;
    sub Oslashacute by oslashacute.sc;
    sub Scommaaccent by scommaaccent.sc;
    sub Wgrave by wgrave.sc;
    sub Wacute by wacute.sc;
    sub Wdieresis by wdieresis.sc;
    sub Ygrave by ygrave.sc;
    sub Tcedilla by tcedilla.sc;
    sub Germandbls by germandbls.sc;
    sub braceleft by braceleft.sc;
    sub braceright by braceright.sc;
    sub bracketleft by bracketleft.sc;
    sub bracketright by bracketright.sc;
    sub exclam by exclam.sc;
    sub exclamdbl by exclamdbl.sc;
    sub exclamdown by exclamdown.sc;
    sub guilsinglleft by guilsinglleft.sc;
    sub guilsinglright by guilsinglright.sc;
    sub parenleft by parenleft.sc;
    sub parenright by parenright.sc;
    sub question by question.sc;
    sub questiondown by questiondown.sc;
    sub ampersand by ampersand.sc;
    sub dieresiscomb by dieresiscomb.sc;
    sub dotaccentcomb by dotaccentcomb.sc;
    sub gravecomb by gravecomb.sc;
    sub acutecomb by acutecomb.sc;
    sub hungarumlautcomb by hungarumlautcomb.sc;
    sub circumflexcomb by circumflexcomb.sc;
    sub caroncomb by caroncomb.sc;
    sub brevecomb by brevecomb.sc;
    sub ringcomb by ringcomb.sc;
    sub tildecomb by tildecomb.sc;
    sub macroncomb by macroncomb.sc;
    sub ogonekcomb by ogonekcomb.sc;
    sub overscore by overscore.sc;
} c2sc;

feature smcp {
# automatic
sub a by a.sc;
    sub aacute by aacute.sc;
    sub abreve by abreve.sc;
    sub acircumflex by acircumflex.sc;
    sub adieresis by adieresis.sc;
    sub agrave by agrave.sc;
    sub amacron by amacron.sc;
    sub aogonek by aogonek.sc;
    sub aring by aring.sc;
    sub aringacute by aringacute.sc;
    sub atilde by atilde.sc;
    sub ae by ae.sc;
    sub aeacute by aeacute.sc;
    sub b by b.sc;
    sub c by c.sc;
    sub cacute by cacute.sc;
    sub ccaron by ccaron.sc;
    sub ccedilla by ccedilla.sc;
    sub ccircumflex by ccircumflex.sc;
    sub cdot by cdot.sc;
    sub d by d.sc;
    sub eth by eth.sc;
    sub dcaron by dcaron.sc;
    sub dcroat by dcroat.sc;
    sub e by e.sc;
    sub eacute by eacute.sc;
    sub ebreve by ebreve.sc;
    sub ecaron by ecaron.sc;
    sub ecircumflex by ecircumflex.sc;
    sub edieresis by edieresis.sc;
    sub edotaccent by edotaccent.sc;
    sub egrave by egrave.sc;
    sub emacron by emacron.sc;
    sub eogonek by eogonek.sc;
    sub f by f.sc;
    sub g by g.sc;
    sub gbreve by gbreve.sc;
    sub gcircumflex by gcircumflex.sc;
    sub gcommaaccent by gcommaaccent.sc;
    sub gdot by gdot.sc;
    sub h by h.sc;
    sub hbar by hbar.sc;
    sub hcircumflex by hcircumflex.sc;
    sub i by i.sc;
    sub iacute by iacute.sc;
    sub ibreve by ibreve.sc;
    sub icircumflex by icircumflex.sc;
    sub idieresis by idieresis.sc;
    sub igrave by igrave.sc;
    sub ij by ij.sc;
    sub imacron by imacron.sc;
    sub iogonek by iogonek.sc;
    sub itilde by itilde.sc;
    sub j by j.sc;
    sub jcircumflex by jcircumflex.sc;
    sub k by k.sc;
    sub kcommaaccent by kcommaaccent.sc;
    sub l by l.sc;
    sub lacute by lacute.sc;
    sub lcaron by lcaron.sc;
    sub lcommaaccent by lcommaaccent.sc;
    sub ldot by ldot.sc;
    sub lslash by lslash.sc;
    sub m by m.sc;
    sub n by n.sc;
    sub nacute by nacute.sc;
    sub ncaron by ncaron.sc;
    sub ncommaaccent by ncommaaccent.sc;
    sub eng by eng.sc;
    sub ntilde by ntilde.sc;
    sub o by o.sc;
    sub oacute by oacute.sc;
    sub obreve by obreve.sc;
    sub ocircumflex by ocircumflex.sc;
    sub odieresis by odieresis.sc;
    sub ograve by ograve.sc;
    sub ohungarumlaut by ohungarumlaut.sc;
    sub omacron by omacron.sc;
    sub oslash by oslash.sc;
    sub oslashacute by oslashacute.sc;
    sub otilde by otilde.sc;
    sub oe by oe.sc;
    sub p by p.sc;
    sub thorn by thorn.sc;
    sub q by q.sc;
    sub r by r.sc;
    sub racute by racute.sc;
    sub rcaron by rcaron.sc;
    sub rcommaaccent by rcommaaccent.sc;
    sub s by s.sc;
    sub sacute by sacute.sc;
    sub scaron by scaron.sc;
    sub scedilla by scedilla.sc;
    sub scircumflex by scircumflex.sc;
    sub scommaaccent by scommaaccent.sc;
    sub germandbls by germandbls.sc;
    sub t by t.sc;
    sub tbar by tbar.sc;
    sub tcaron by tcaron.sc;
    sub tcedilla by tcedilla.sc;
    sub tcommaaccent by tcommaaccent.sc;
    sub u by u.sc;
    sub uacute by uacute.sc;
    sub ubreve by ubreve.sc;
    sub ucircumflex by ucircumflex.sc;
    sub udieresis by udieresis.sc;
    sub ugrave by ugrave.sc;
    sub uhungarumlaut by uhungarumlaut.sc;
    sub umacron by umacron.sc;
    sub uogonek by uogonek.sc;
    sub uring by uring.sc;
    sub utilde by utilde.sc;
    sub v by v.sc;
    sub w by w.sc;
    sub wacute by wacute.sc;
    sub wcircumflex by wcircumflex.sc;
    sub wdieresis by wdieresis.sc;
    sub wgrave by wgrave.sc;
    sub x by x.sc;
    sub y by y.sc;
    sub yacute by yacute.sc;
    sub ycircumflex by ycircumflex.sc;
    sub ydieresis by ydieresis.sc;
    sub ygrave by ygrave.sc;
    sub z by z.sc;
    sub zacute by zacute.sc;
    sub zcaron by zcaron.sc;
    sub zdotaccent by zdotaccent.sc;
    sub braceleft by braceleft.sc;
    sub braceright by braceright.sc;
    sub bracketleft by bracketleft.sc;
    sub bracketright by bracketright.sc;
    sub exclam by exclam.sc;
    sub exclamdbl by exclamdbl.sc;
    sub exclamdown by exclamdown.sc;
    sub guilsinglleft by guilsinglleft.sc;
    sub guilsinglright by guilsinglright.sc;
    sub parenleft by parenleft.sc;
    sub parenright by parenright.sc;
    sub question by question.sc;
    sub questiondown by questiondown.sc;
    sub ampersand by ampersand.sc;
    sub dieresiscomb by dieresiscomb.sc;
    sub dotaccentcomb by dotaccentcomb.sc;
    sub gravecomb by gravecomb.sc;
    sub acutecomb by acutecomb.sc;
    sub hungarumlautcomb by hungarumlautcomb.sc;
    sub circumflexcomb by circumflexcomb.sc;
    sub caroncomb by caroncomb.sc;
    sub brevecomb by brevecomb.sc;
    sub ringcomb by ringcomb.sc;
    sub tildecomb by tildecomb.sc;
    sub macroncomb by macroncomb.sc;
    sub ogonekcomb by ogonekcomb.sc;
    sub overscore by overscore.sc;
} smcp;

feature case {
# automatic
sub zero by zero.lf;
    sub one by one.lf;
    sub two by two.lf;
    sub three by three.lf;
    sub four by four.lf;
    sub five by five.lf;
    sub six by six.lf;
    sub seven by seven.lf;
    sub eight by eight.lf;
    sub nine by nine.lf;
    sub zero.osf by zero.lf;
    sub one.osf by one.lf;
    sub two.osf by two.lf;
    sub three.osf by three.lf;
    sub four.osf by four.lf;
    sub five.osf by five.lf;
    sub six.osf by six.lf;
    sub seven.osf by seven.lf;
    sub eight.osf by eight.lf;
    sub nine.osf by nine.lf;
    sub zero.tosf by zero.lf;
    sub one.tosf by one.lf;
    sub two.tosf by two.lf;
    sub three.tosf by three.lf;
    sub four.tosf by four.lf;
    sub five.tosf by five.lf;
    sub six.tosf by six.lf;
    sub seven.tosf by seven.lf;
    sub eight.tosf by eight.lf;
    sub nine.tosf by nine.lf;
} case;

feature liga {
sub f f l by f_f_l;
    sub f f i by f_f_i;
    sub f i by fi;
    sub f l by fl;
    sub f f by f_f;
} liga;

feature rtlm {
sub summationDoubleStruck by summationDoubleStruck.mir;
} rtlm;

feature zero {
# zero.slash alternate
    sub zero by zero.slash;
} zero;

feature salt {
    lookup gAlternates {
        sub g by g.salt;
        sub gbreve by gbreve.salt;
        sub gcircumflex by gcircumflex.salt;
        sub gcomb by gcomb.salt;
        sub gcommaaccent by gcommaaccent.alt;
        sub gdot by gdot.salt;
        sub uni01E7 by uni01E7.salt;
        sub uni01F5 by uni01F5.salt;
        sub uni1E21 by uni1E21.salt;
    } gAlternates;
    lookup TitlingAlternates {
        sub I by I.salt;
        sub Igrave by Igrave.salt;
        sub Iacute by Iacute.salt;
        sub Icircumflex by Icircumflex.salt;
        sub Idieresis by Idieresis.salt;
        sub Itilde by Itilde.salt;
        sub Imacron by Imacron.salt;
        sub Ibreve by Ibreve.salt;
        sub Iogonek by Iogonek.salt;
        sub Idotaccent by Idotaccent.salt;
        sub IJ by IJ.salt;
        sub Iotatonos by Iotatonos.salt;
        sub Iota by Iota.salt;
        sub Iotadieresis by Iotadieresis.salt;
        sub afii10055 by afii10055.salt;
        sub afii10056 by afii10056.salt;
        sub uni04C0 by uni04C0.salt;
        sub uni04CF by uni04CF.salt;
        sub uni1EC8 by uni1EC8.salt;
        sub uni1ECA by uni1ECA.salt;
        sub uni01CF by uni01CF.salt;
        sub uni0208 by uni0208.salt;
        sub uni020A by uni020A.salt;
        sub uni1D35 by uni1D35.salt;
        sub uni1E2C by uni1E2C.salt;
        sub uni1E2E by uni1E2E.salt;
        sub uni1F38 by uni1F38.salt;
        sub uni1F39 by uni1F39.salt;
        sub uni1F3A by uni1F3A.salt;
        sub uni1F3B by uni1F3B.salt;
        sub uni1F3C by uni1F3C.salt;
        sub uni1F3D by uni1F3D.salt;
        sub uni1F3E by uni1F3E.salt;
        sub uni1F3F by uni1F3F.salt;
        sub uni1FD8 by uni1FD8.salt;
        sub uni1FD9 by uni1FD9.salt;
        sub uni1FDA by uni1FDA.salt;
        sub uni1FDB by uni1FDB.salt;
        sub Iogonek.loclNAV by Iogonek_loclNAV.salt;
        sub uniA7F7 by uniA7F7.salt;
        sub J by J.salt;
        sub Jcircumflex by Jcircumflex.salt;
        sub afii10057 by afii10057.salt;
        sub uni01C7 by uni01C7.salt;
        sub uni01CA by uni01CA.salt;
        sub uni1D36 by uni1D36.salt;
        sub uni037F by uni037F.salt;
        sub i.sc by i_sc.salt;
        sub iacute.sc by iacute_sc.salt;
        sub ibreve.sc by ibreve_sc.salt;
        sub icircumflex.sc by icircumflex_sc.salt;
        sub idieresis.sc by idieresis_sc.salt;
        sub idotaccent.sc by idotaccent_sc.salt;
        sub igrave.sc by igrave_sc.salt;
        sub ij.sc by ij_sc.salt;
        sub imacron.sc by imacron_sc.salt;
        sub iogonek.sc by iogonek_sc.salt;
        sub itilde.sc by itilde_sc.salt;
        sub j.sc by j_sc.salt;
        sub jcircumflex.sc by jcircumflex_sc.salt;
    } TitlingAlternates;
} salt;

feature ss01 {
lookup gAlternates;
lookup TitlingAlternates;
} ss01;

feature ss02 {
lookup gAlternates;
} ss02;

feature ss03 {
# Titling Alternates I and J for titling and all cap settings
lookup TitlingAlternates;
} ss03;

feature ss04 {
sub florin by florin.ss03;
} ss04;

feature kern {
@Paren.right = [parenright bracketright braceright];
    @CombiningTopAccents = [acomb acutecomb acutetonecomb almostequaltoabovecomb arrowheadrightabovecomb brevecomb breveinvertedcomb candraBinducomb caroncomb ccomb circumflexcomb commaabovecomb commareversedabovecomb commaturnedabovecomb dblgravecomb dbloverlinecomb dblverticallineabovecomb dcomb dialytikatonoscomb dieresiscomb dotaccentcomb ecomb fermatacomb gbridgeabovecomb gravecomb gravetonecomb hcomb homotheticabovecomb hookabovecomb hungarumlautcomb icomb koroniscomb lefthalfringabovecomb macroncomb mcomb nottildeabovecomb ocomb overlinecmb perispomenicomb rcomb righthalfringabovecomb ringcomb tcomb tildecomb tildedoublecomb tildeverticalcomb ucomb vcomb verticallineabovecomb xabovecomb xcomb zigzagabovecomb];
    @CombiningNonTopAccents = [acutebelowcomb arrowdoublerightbelowcomb arrowheadleftbelowcomb arrowheadrightbelowcomb arrowheadrightheadupbelowcomb arrowleftrightbelowcomb arrowupbelowcomb asteriskbelowcomb brevebelowcomb breveinvertedbelowcomb bridgebelowcomb bridgeinvertedbelowcomb caronbelowcomb cedillacomb circumflexbelowcomb commaaccent dblarchinvertedbelowcomb dbllowlinecomb dieresisbelowcomb dotbelowcomb doublebrevebelowcomb doublemacronbelowcomb doubleringbelowcomb doubleverticallinebelowcomb downtackbelowcomb equalbelowcomb gravebelowcomb hookpalatalizedbelowcomb hookretroflexbelowcomb leftanglebelowcomb lefttackbelowcomb lowlinecomb macronbelowcomb minusbelowcomb ogonekcomb plusbelowcomb righttackbelowcomb ringbelowcomb ringhalfleftbelowcomb ringhalfrightbelowcomb seagullbelowcomb squarebelowcomb tildebelowcomb uptackbelowcomb verticallinebelowcomb xbelowcomb ypogegrammenicomb breveinverteddoublecomb doublebrevecomb graphemejoinercomb doublemacroncomb dotaboverightcomb horncomb slashlongoverlaycomb slashshortoverlaycomb strokelongoverlaycomb strokeshortoverlaycomb tildeoverlaycomb];
    pos idotless [circumflexcomb caroncomb dieresiscomb tildecomb macroncomb breveinvertedcomb brevecomb]' 50 @CombiningNonTopAccents @Paren.right;
    pos idotless [circumflexcomb caroncomb dieresiscomb tildecomb macroncomb breveinvertedcomb brevecomb]' 50 @CombiningTopAccents @CombiningNonTopAccents @Paren.right;
    pos idotless [circumflexcomb caroncomb dieresiscomb tildecomb macroncomb breveinvertedcomb brevecomb]' 50 @CombiningTopAccents @Paren.right;
    pos idotless [circumflexcomb caroncomb dieresiscomb tildecomb macroncomb breveinvertedcomb brevecomb]' 50 @Paren.right;
} kern;
