# Prefix: Languagesystems
languagesystem DFLT dflt;
languagesystem latn dflt;
languagesystem latn TAT;
languagesystem latn TRK;
languagesystem latn MOL;
languagesystem latn ROM;
languagesystem latn KAZ;
languagesystem latn PLK;
languagesystem latn AZE;
languagesystem latn CAT;
languagesystem latn CRT;
languagesystem latn AFK;

# automatic
@Uppercase = [ A Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde AE AEacute B C Cacute Ccaron Ccedilla Ccircumflex Cdotaccent D Eth Dcaron Dcroat E Eacute Ebreve Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek F G Gbreve Gcircumflex Gcommaaccent Gdotaccent H Hbar Hcircumflex I IJ Iacute Ibreve Icircumflex Idieresis Idotaccent Igrave Imacron Iogonek Itilde J Jcircumflex K Kcommaaccent L Lacute Lcaron Lcommaaccent Ldot Lslash M N Nacute Ncaron Ncommaaccent Eng Ntilde O Oacute Obreve Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Oslash Oslashacute Otilde OE P Thorn Q R Racute Rcaron Rcommaaccent S Sacute Scaron Scedilla Scircumflex Scommaaccent T Tbar Tcaron uni0162 uni021A U Uacute Ubreve Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Utilde V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ygrave Z Zacute Zcaron Zdotaccent Cacute.loclPLK Nacute.loclPLK Oacute.loclPLK Sacute.loclPLK Zacute.loclPLK uni052C uni052A uni052E uni0528 uni0410 uni0411 uni0412 uni0413 uni0403 uni0490 uni0414 uni0415 uni0400 uni0401 uni0416 uni0417 uni0418 uni0419 uni040D uni048A uni041A uni040C uni041B uni041C uni041D uni041E uni041F uni0420 uni0421 uni0422 uni0423 uni040E uni0424 uni0425 uni0427 uni0426 uni0428 uni0429 uni040F uni042C uni042A uni042B uni0409 uni040A uni0405 uni0404 uni042D uni0406 uni0407 uni0408 uni040B uni042E uni042F uni0402 uni0460 uni0462 uni0464 uni0466 uni0468 uni046A uni046C uni046E uni0470 uni0472 uni0474 uni0476 uni0478 uni0492 uni0494 uni0496 uni0498 uni049A uni049C uni049E uni04A0 uni04A2 uni04A6 uni0524 uni04A8 uni04AA uni04AC uni04AE uni04B0 uni04B2 uni04B6 uni04B8 uni04BA uni0526 uni04BC uni04BE uni04C0 uni04C1 uni04C3 uni04C5 uni04C7 uni04C9 uni04CB uni04CD uni04D0 uni04D2 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 uni0514 uni0516 uni0518 uni051A uni051C uni051E uni0520 uni0522 uni048C uni048E Yot-greek Alpha Beta Gamma uni0394 Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi uni03A9 Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos Iotadieresis Upsilondieresis uni0370 uni0372 uni0376 uni03D8 uni03DA uni03DC uni03DE uni03E0 uni03CF uni03D2 uni03D3 uni03D4 uni03F4 uni03F7 uni03F9 uni03FA uni03FD uni03FE uni03FF uni1F08 uni1F09 uni1F0A uni1F0B uni1F0C uni1F0D uni1F0E uni1F0F uni1FBA uni1FBB uni1FB8 uni1FB9 uni1FBC uni1F88 uni1F89 uni1F8A uni1F8B uni1F8C uni1F8D uni1F8E uni1F8F uni1F18 uni1F19 uni1F1A uni1F1B uni1F1C uni1F1D uni1FC8 uni1FC9 uni1F28 uni1F29 uni1F2A uni1F2B uni1F2C uni1F2D uni1F2E uni1F2F uni1FCA uni1FCB uni1FCC uni1F98 uni1F99 uni1F9A uni1F9B uni1F9C uni1F9D uni1F9E uni1F9F uni1F38 uni1F39 uni1F3A uni1F3B uni1F3C uni1F3D uni1F3E uni1F3F uni1FDA uni1FDB uni1FD8 uni1FD9 uni1F48 uni1F49 uni1F4A uni1F4B uni1F4C uni1F4D uni1FF8 uni1FF9 uni1FEC uni1F59 uni1F5B uni1F5D uni1F5F uni1FEA uni1FEB uni1FE8 uni1FE9 uni1F68 uni1F69 uni1F6A uni1F6B uni1F6C uni1F6D uni1F6E uni1F6F uni1FFA uni1FFB uni1FFC uni1FA8 uni1FA9 uni1FAA uni1FAB uni1FAC uni1FAD uni1FAE uni1FAF ];

@GreekUC = [ Alpha
Beta
Gamma
uni0394
Epsilon
Zeta
Eta
Theta
Iota
Kappa
Lambda
Mu
Nu
Xi
Omicron
Pi
Rho
Sigma
Tau
Upsilon
Phi
Chi
Psi
uni03A9
Alphatonos
Epsilontonos
Etatonos
Iotatonos
Omicrontonos
Upsilontonos
Omegatonos
Iotadieresis
Upsilondieresis
uni1F08
uni1F09
uni1F0A
uni1F0B
uni1F0C
uni1F0D
uni1F0E
uni1F0F
uni1FBA
uni1FBB
uni1FB8
uni1FB9
uni1FBC
uni1F88
uni1F89
uni1F8A
uni1F8B
uni1F8C
uni1F8D
uni1F8E
uni1F8F
uni1F18
uni1F19
uni1F1A
uni1F1B
uni1F1C
uni1F1D
uni1FC8
uni1FC9
uni1F28
uni1F29
uni1F2A
uni1F2B
uni1F2C
uni1F2D
uni1F2E
uni1F2F
uni1FCA
uni1FCB
uni1FCC
uni1F98
uni1F99
uni1F9A
uni1F9B
uni1F9C
uni1F9D
uni1F9E
uni1F9F
uni1F38
uni1F39
uni1F3A
uni1F3B
uni1F3C
uni1F3D
uni1F3E
uni1F3F
uni1FDA
uni1FDB
uni1FD8
uni1FD9
uni1F48
uni1F49
uni1F4A
uni1F4B
uni1F4C
uni1F4D
uni1FF8
uni1FF9
uni1FEC
uni1F59
uni1F5B
uni1F5D
uni1F5F
uni1FEA
uni1FEB
uni1FE8
uni1FE9
uni1F68
uni1F69
uni1F6A
uni1F6B
uni1F6C
uni1F6D
uni1F6E
uni1F6F
uni1FFA
uni1FFB
uni1FFC
uni1FA8
uni1FA9
uni1FAA
uni1FAB
uni1FAC
uni1FAD
uni1FAE
uni1FAF ];

@GreekUCAcc = [ Alphatonos
Epsilontonos
Etatonos
Iotatonos
Omicrontonos
Upsilontonos
Omegatonos
uni1F08
uni1F09
uni1F0A
uni1F0B
uni1F0C
uni1F0D
uni1F0E
uni1F0F
uni1FBA
uni1FBB
uni1FB8
uni1FB9
uni1FBC
uni1F88
uni1F89
uni1F8A
uni1F8B
uni1F8C
uni1F8D
uni1F8E
uni1F8F
uni1F18
uni1F19
uni1F1A
uni1F1B
uni1F1C
uni1F1D
uni1FC8
uni1FC9
uni1F28
uni1F29
uni1F2A
uni1F2B
uni1F2C
uni1F2D
uni1F2E
uni1F2F
uni1FCA
uni1FCB
uni1FCC
uni1F98
uni1F99
uni1F9A
uni1F9B
uni1F9C
uni1F9D
uni1F9E
uni1F9F
uni1F38
uni1F39
uni1F3A
uni1F3B
uni1F3C
uni1F3D
uni1F3E
uni1F3F
uni1FDA
uni1FDB
uni1FD8
uni1FD9
uni1F48
uni1F49
uni1F4A
uni1F4B
uni1F4C
uni1F4D
uni1FF8
uni1FF9
uni1FEC
uni1F59
uni1F5B
uni1F5D
uni1F5F
uni1FEA
uni1FEB
uni1FE8
uni1FE9
uni1F68
uni1F69
uni1F6A
uni1F6B
uni1F6C
uni1F6D
uni1F6E
uni1F6F
uni1FFA
uni1FFB
uni1FFC
uni1FA8
uni1FA9
uni1FAA
uni1FAB
uni1FAC
uni1FAD
uni1FAE
uni1FAF ];

@GreekUCdiphIOTA = [ Alphatonos
Epsilontonos
Omicrontonos
Upsilontonos
uni1F08
uni1F09
uni1F0A
uni1F0B
uni1F0C
uni1F0D
uni1F0E
uni1F0F
uni1FBA
uni1FBB
uni1FB8
uni1FB9
uni1FBC
uni1F88
uni1F89
uni1F8A
uni1F8B
uni1F8C
uni1F8D
uni1F8E
uni1F8F
uni1F18
uni1F19
uni1F1A
uni1F1B
uni1F1C
uni1F1D
uni1FC8
uni1FC9
uni1F48
uni1F49
uni1F4A
uni1F4B
uni1F4C
uni1F4D
uni1FF8
uni1FF9
uni1F59
uni1F5B
uni1F5D
uni1F5F
uni1FEA
uni1FEB
uni1FE8
uni1FE9 ];

@GreekUCdiphUPSILON = [ Alphatonos
Epsilontonos
Omicrontonos
uni1F08
uni1F09
uni1F0A
uni1F0B
uni1F0C
uni1F0D
uni1F0E
uni1F0F
uni1FBA
uni1FBB
uni1FB8
uni1FB9
uni1FBC
uni1F88
uni1F89
uni1F8A
uni1F8B
uni1F8C
uni1F8D
uni1F8E
uni1F8F
uni1F18
uni1F19
uni1F1A
uni1F1B
uni1F1C
uni1F1D
uni1FC8
uni1FC9
uni1F48
uni1F49
uni1F4A
uni1F4B
uni1F4C
uni1F4D
uni1FF8
uni1FF9 ];

feature aalt {
# automatic
feature locl;
feature subs;
feature sups;
feature numr;
feature dnom;
feature frac;
feature ordn;
feature tnum;
feature onum;
feature case;
feature zero;
feature calt;
} aalt;

feature locl {
script latn;
language TAT;
sub i by idotaccent;
language TRK;
sub i by idotaccent;
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 KAZ;
sub i by idotaccent;
language PLK;
sub Cacute by Cacute.loclPLK;
sub Nacute by Nacute.loclPLK;
sub Oacute by Oacute.loclPLK;
sub Sacute by Sacute.loclPLK;
sub Zacute by Zacute.loclPLK;
sub cacute by cacute.loclPLK;
sub nacute by nacute.loclPLK;
sub oacute by oacute.loclPLK;
sub sacute by sacute.loclPLK;
sub zacute by zacute.loclPLK;
sub acute by acute.loclPLK;
language AZE;
sub i by idotaccent;
language CAT;
sub  l' periodcentered' l by ldot;
sub  L' periodcentered' L by Ldot;
language CRT;
sub i by idotaccent;
language AFK;
sub quoteright n by napostrophe;
sub quotesingle n by napostrophe;
} locl;

feature subs {
# automatic
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 minus by minusinferior;
sub plus by plusinferior;
} subs;

feature sups {
# automatic
sub zero by zerosuperior;
sub one by onesuperior;
sub two by twosuperior;
sub three by threesuperior;
sub four by foursuperior;
sub five by fivesuperior;
sub six by sixsuperior;
sub seven by sevensuperior;
sub eight by eightsuperior;
sub nine by ninesuperior;
sub parenleft by parenleftsuperior;
sub parenright by parenrightsuperior;
sub equal by equalsuperior;
sub minus by minussuperior;
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;
sub parenleft by parenleft.numr;
sub parenright by parenright.numr;
sub equal by equal.numr;
sub minus by minus.numr;
sub plus by plus.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;
sub parenleft by parenleft.dnom;
sub parenright by parenright.dnom;
sub equal by equal.dnom;
sub minus by minus.dnom;
sub plus by plus.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;
sub N o period by numero;
} ordn;

feature tnum {
# automatic
sub figurespace by figurespace.tf;
} 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 numbersign by numbersign.tosf;
sub figuredash by figuredash.tosf;
sub figurespace by figurespace.tosf;
sub cent by cent.tosf;
sub currency by currency.tosf;
sub dollar by dollar.tosf;
sub drachma by drachma.tosf;
sub euro by euro.tosf;
sub liraTurkish by liraTurkish.tosf;
sub ruble by ruble.tosf;
sub rupeeIndian by rupeeIndian.tosf;
sub sterling by sterling.tosf;
sub yen by yen.tosf;
sub approxequal by approxequal.tosf;
sub asciitilde by asciitilde.tosf;
sub divide by divide.tosf;
sub equal by equal.tosf;
sub greater by greater.tosf;
sub greaterequal by greaterequal.tosf;
sub infinity by infinity.tosf;
sub integral by integral.tosf;
sub less by less.tosf;
sub lessequal by lessequal.tosf;
sub logicalnot by logicalnot.tosf;
sub minus by minus.tosf;
sub multiply by multiply.tosf;
sub notequal by notequal.tosf;
sub partialdiff by partialdiff.tosf;
sub percent by percent.tosf;
sub perthousand by perthousand.tosf;
sub plus by plus.tosf;
sub plusminus by plusminus.tosf;
sub product by product.tosf;
sub radical by radical.tosf;
sub summation by summation.tosf;
sub lozenge by lozenge.tosf;
sub section by section.tosf;
sub degree by degree.tosf;
sub dagger by dagger.tosf;
sub daggerdbl by daggerdbl.tosf;
} onum;

feature case {
# automatic
sub exclamdown by exclamdown.case;
sub questiondown by questiondown.case;
sub braceleft by braceleft.case;
sub braceright by braceright.case;
sub bracketleft by bracketleft.case;
sub bracketright by bracketright.case;
sub parenleft by parenleft.case;
sub parenright by parenright.case;
sub emdash by emdash.case;
sub endash by endash.case;
sub hyphen by hyphen.case;
sub softhyphen by softhyphen.case;
sub guillemetleft by guillemetleft.case;
sub guillemetright by guillemetright.case;
sub guilsinglleft by guilsinglleft.case;
sub guilsinglright by guilsinglright.case;
sub infinity by infinity.case;
sub commaaccent by commaaccent.case;
sub acute by acute.case;
sub breve by breve.case;
sub caron by caron.case;
sub cedilla by cedilla.case;
sub circumflex by circumflex.case;
sub dieresis by dieresis.case;
sub dotaccent by dotaccent.case;
sub grave by grave.case;
sub hungarumlaut by hungarumlaut.case;
sub macron by macron.case;
sub ring by ring.case;
sub tilde by tilde.case;
sub tonos by tonos.case;
sub varia by varia.case;
sub oxia by oxia.case;
sub breve-cy by breve-cy.case;
} case;

feature dlig {
sub f i by fi;
sub f l by fl;
} dlig;

feature zero {
# automatic
sub zero by zero.zero;
sub zero.tosf by zero.tosf.zero;
} zero;

feature cpsp {
# automatic
pos @Uppercase <5 0 10 0>;
} cpsp;

feature calt {
lookup caltGreekUCdiph {
    sub @GreekUCdiphIOTA Iota' by Iotadieresis;
    sub @GreekUCdiphUPSILON Upsilon' by Upsilondieresis;
} caltGreekUCdiph;

lookup caltGreekUC {
    sub @GreekUCAcc' @GreekUC by [Alpha
Epsilon
Eta
Iota
Omicron
Upsilon
Omega
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Rho
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega];
    sub @GreekUC @GreekUCAcc' by [Alpha
Epsilon
Eta
Iota
Omicron
Upsilon
Omega
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Rho
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega];
    sub @GreekUCAcc' space @GreekUC by [Alpha
Epsilon
Eta
Iota
Omicron
Upsilon
Omega
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Rho
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega];
    sub @GreekUC space @GreekUCAcc' by [Alpha
Epsilon
Eta
Iota
Omicron
Upsilon
Omega
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Alpha
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Epsilon
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Eta
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Iota
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Omicron
Rho
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Upsilon
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega
Omega];
} caltGreekUC;
} calt;

feature liga {
# automatic
sub f i by fi;
sub f l by fl;
} liga;

