# 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 Eth Thorn AE IJ OE Eng Germandbls Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde Cacute Ccaron Ccedilla Cdotaccent Dcaron Dcroat Eacute Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek Gbreve Gcommaaccent Gdotaccent Hbar Iacute Icircumflex Idieresis Idotaccent Igrave Imacron Iogonek Jacute Kcommaaccent Lacute Lcaron Lcommaaccent Lslash Nacute Ncaron Ncommaaccent Ntilde Oacute Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Oslash Otilde Racute Rcaron Rcommaaccent Sacute Scaron Scedilla Scommaaccent Tcaron Tcedilla Tcommaaccent Uacute Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Wacute Wcircumflex Wdieresis Wgrave Yacute Ycircumflex Ydieresis Ygrave Zacute Zcaron Zdotaccent B_r_a_v_o_exclam_exclam_exclam Y_e_a_h_exclam ];

# automatic
@Lowercase = [ germandbls.calt a b c d e f f.ss01 g h idotless i jdotless j k l m n o p q q.ss02 r s germandbls t u v w x y z eth thorn ae ij oe eng aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde cacute ccaron ccedilla cdotaccent dcaron dcroat eacute ecaron ecircumflex edieresis edotaccent egrave emacron eogonek gbreve gcommaaccent gdotaccent hbar iacute icircumflex idieresis idotaccent igrave imacron iogonek jacute kcommaaccent lacute lcaron lcommaaccent lslash nacute ncaron ncommaaccent ntilde oacute ocircumflex odieresis ograve ohungarumlaut omacron oslash otilde racute rcaron rcommaaccent sacute scaron scedilla scommaaccent tcaron tcedilla tcommaaccent uacute ucircumflex udieresis ugrave uhungarumlaut umacron uogonek uring wacute wcircumflex wdieresis wgrave yacute ycircumflex ydieresis ygrave zacute zcaron zdotaccent k.ss03 kcommaaccent.ss03 ];

@figures = [ zero one two three four five six seven eight nine 
zero.tf one.tf two.tf three.tf four.tf five.tf six.tf seven.tf eight.tf nine.tf ];

@punct-dflt = [ hyphen endash emdash
periodcentered
colon ];

@punct-case = [ hyphen.case endash.case emdash.case
periodcentered.case
colon.case ];

# Prefix: Languagesystems
# automatic
languagesystem DFLT dflt;

languagesystem latn dflt;
languagesystem latn AZE;
languagesystem latn CRT;
languagesystem latn KAZ;
languagesystem latn TAT;
languagesystem latn TRK;
languagesystem latn ROM;
languagesystem latn MOL;
languagesystem latn CAT;
languagesystem latn NLD;

# Prefix: Standalone
lookup k-salt {
	sub k by k.ss03;
	sub kcommaaccent by kcommaaccent.ss03;
} k-salt ;

lookup q-salt {
	sub q by q.ss02 ;
} q-salt ;

lookup f-salt {
	sub f by f.ss01 ;
} f-salt ;

lookup a-salt {
sub [ a aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde ] by [ a.ss04 aacute.ss04 abreve.ss04 acircumflex.ss04 adieresis.ss04 agrave.ss04 amacron.ss04 aogonek.ss04 aring.ss04 atilde.ss04 ] ;
} a-salt ;

feature ccmp {
# automatic
lookup ccmp_Other_1 {
	@CombiningTopAccents = [acutecomb brevecomb caroncomb circumflexcomb commaturnedabovecomb dieresiscomb dotaccentcomb gravecomb hungarumlautcomb macroncomb ringcomb tildecomb];
	@CombiningNonTopAccents = [cedillacomb ogonekcomb slashlongcomb];
	sub [i j]' @CombiningTopAccents by [idotless jdotless];
	sub [i j]' @CombiningNonTopAccents @CombiningTopAccents by [idotless jdotless];
	@Markscomb = [dieresiscomb gravecomb acutecomb hungarumlautcomb circumflexcomb caroncomb brevecomb ringcomb tildecomb macroncomb commaaccentcomb cedillacomb];
	@MarkscombCase = [dieresiscomb.case gravecomb.case acutecomb.case hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case tildecomb.case macroncomb.case commaaccentcomb.case cedillacomb.case];
	sub @Markscomb @Markscomb' by @MarkscombCase;
	sub @Uppercase @Markscomb' by @MarkscombCase;
} ccmp_Other_1;

lookup ccmp_Other_2 {
	sub @Markscomb' @MarkscombCase by @MarkscombCase;
	sub @MarkscombCase @Markscomb' by @MarkscombCase;
} ccmp_Other_2;
} ccmp;

feature locl {
# automatic
lookup locl_latn_0 {
	script latn;
	language AZE;
	sub i by idotaccent;
	language CRT;
	sub i by idotaccent;
	language KAZ;
	sub i by idotaccent;
	language TAT;
	sub i by idotaccent;
	language TRK;
	sub i by idotaccent;
} locl_latn_0;

lookup locl_latn_1 {
	script latn;
	language ROM;
	sub Scedilla by Scommaaccent;
	sub scedilla by scommaaccent;
	sub Tcedilla by Tcommaaccent;
	sub tcedilla by tcommaaccent;
	language MOL;
	sub Scedilla by Scommaaccent;
	sub scedilla by scommaaccent;
	sub Tcedilla by Tcommaaccent;
	sub tcedilla by tcommaaccent;
} locl_latn_1;

lookup locl_latn_2 {
	script latn;
	language CAT;
	sub l periodcentered' l by periodcentered.loclCAT;
	sub L periodcentered' L by periodcentered.loclCAT.case;
} locl_latn_2;

lookup locl_latn_3 {
	script latn;
	language NLD;
	sub iacute j' by jacute;
	sub Iacute J' by Jacute;
} locl_latn_3;
} locl;

feature calt {
sub @Uppercase @punct-dflt' @Uppercase by @punct-case ;

lookup uppercaseSharpS {
    sub @Uppercase @Uppercase germandbls' by germandbls.calt;
    sub germandbls' @Uppercase by germandbls.calt;
} uppercaseSharpS;

# Build arrows on the fly  
lookup make_arrow {
	sub hyphen greater by arrowright ;
	sub less hyphen by arrowleft ;
} make_arrow ;

lookup arrow_extension {
	sub hyphen' arrowright by hyphen.calt ;
	sub hyphen' hyphen arrowright by hyphen.calt ;
	sub hyphen' hyphen hyphen arrowright by hyphen.calt ;
	sub hyphen' hyphen hyphen hyphen arrowright by hyphen.calt ;
	sub hyphen' hyphen hyphen hyphen hyphen arrowright by hyphen.calt ;
} arrow_extension ;

lookup arrow_left {
	sub arrowleft hyphen' by hyphen.calt ;
	sub arrowleft hyphen.calt hyphen' by hyphen.calt ;
	sub arrowleft hyphen.calt hyphen.calt hyphen' by hyphen.calt ;
	sub arrowleft hyphen.calt hyphen.calt hyphen.calt hyphen' by hyphen.calt ;
	sub arrowleft hyphen.calt hyphen.calt hyphen.calt hyphen.calt hyphen' by hyphen.calt ;
} arrow_left ;
} calt;

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

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

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

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

feature case {
sub colon by colon.case;
sub periodcentered by periodcentered.case;
sub periodcentered.loclCAT by periodcentered.loclCAT.case;
sub hyphen by hyphen.case;
sub endash by endash.case;
sub emdash by emdash.case;
sub dieresiscomb by dieresiscomb.case;
sub gravecomb by gravecomb.case;
sub acutecomb by acutecomb.case;
sub hungarumlautcomb by hungarumlautcomb.case;
sub circumflexcomb by circumflexcomb.case;
sub caroncomb by caroncomb.case;
sub brevecomb by brevecomb.case;
sub ringcomb by ringcomb.case;
sub tildecomb by tildecomb.case;
sub macroncomb by macroncomb.case;
sub commaaccentcomb by commaaccentcomb.case;
sub cedillacomb by cedillacomb.case;
sub zero.osf by zero;
sub one.osf by one;
sub two.osf by two;
sub three.osf by three;
sub four.osf by four;
sub five.osf by five;
sub six.osf by six;
sub seven.osf by seven;
sub eight.osf by eight;
sub nine.osf by nine;

lookup uppercaseSharpS ;
} case;

feature subs {
# automatic

} subs;

feature sinf {
# automatic

} sinf;

feature sups {
# automatic

} sups;

feature numr {
# automatic

} numr;

feature dnom {
# automatic

} dnom;

feature frac {
# automatic

} frac;

feature dlig {
lookup wordliga {
sub Y e a h exclam by Y_e_a_h_exclam ;
sub B r a v o exclam exclam exclam by B_r_a_v_o_exclam_exclam_exclam ;
sub s e h r space g u t exclam by s_e_h_r_g_u_t_exclam ;
} wordliga ;
} dlig;

feature cv01 {
lookup cv01 {
sub whiteLeftBackhandIndex by whiteLeftBackhandIndex.cv01;
sub whiteRightBackhandIndex by whiteRightBackhandIndex.cv01;
sub whiteUpBackhandIndex by whiteUpBackhandIndex.cv01;
sub whiteDownBackhandIndex by whiteDownBackhandIndex.cv01;
sub pencil by pencil.cv01;
} cv01 ;
} cv01;

feature cv02 {
lookup cv02 {
sub whiteLeftBackhandIndex by whiteLeftBackhandIndex.cv02;
sub whiteRightBackhandIndex by whiteRightBackhandIndex.cv02;
sub whiteUpBackhandIndex by whiteUpBackhandIndex.cv02;
sub whiteDownBackhandIndex by whiteDownBackhandIndex.cv02;
} cv02 ;
} cv02;

feature cv03 {
lookup cv03 { 
sub whiteLeftBackhandIndex by whiteLeftBackhandIndex.cv03;
sub whiteRightBackhandIndex by whiteRightBackhandIndex.cv03;
sub whiteUpBackhandIndex by whiteUpBackhandIndex.cv03;
sub whiteDownBackhandIndex by whiteDownBackhandIndex.cv03;
} cv03 ;
} cv03;

feature ss01 {
featureNames {
	name "f with descender";
	name 3 1 0x407 "f mit Unterlänge";
	name 3 1 0x409 "f with descender";
};
lookup f-salt ;
} ss01;

feature ss02 {
featureNames {
	name "k written continuously";
	name 3 1 0x407 "k in einem Zug geschrieben";
	name 3 1 0x409 "k written continuously";
};
lookup k-salt ;
} ss02;

feature ss03 {
featureNames {
	name "q with spur";
	name 3 1 0x407 "q mit Sporn";
	name 3 1 0x409 "q with spur";
};
lookup q-salt ;
} ss03;

feature ss04 {
featureNames {
	name "double storey a";
	name 3 1 0x407 "zweistöckiges a";
	name 3 1 0x409 "double storey a";
};
lookup a-salt ;
} ss04;

feature ss18 {
featureNames {
	name "variant 1 of pointing hands";
	name 3 1 0x407 "Variante 1 der deutenden Hände";
	name 3 1 0x409 "variant 1 of pointing hands";
};
lookup cv01 ;
} ss18;

feature ss19 {
featureNames {
	name "variant 2 of pointing hands";
	name 3 1 0x407 "Variante 2 der deutenden Hände";
	name 3 1 0x409 "variant 2 of pointing hands";
};
lookup cv02 ;
} ss19;

feature ss20 {
featureNames {
	name "variant 3 of pointing hands";
	name 3 1 0x407 "Variante 3 der deutenden Hände";
	name 3 1 0x409 "variant 3 of pointing hands";
};
lookup cv03 ;
} ss20;

feature ornm {
sub bullet from [ whiteHeart heavyBlackHeart heartsuitwhite heartsuitblack pencil lowerRightPencil upperRightPencil s_e_h_r_g_u_t_exclam B_r_a_v_o_exclam_exclam_exclam Y_e_a_h_exclam whiteLeftBackhandIndex whiteLeftBackhandIndex.cv01 whiteLeftBackhandIndex.cv02 whiteLeftBackhandIndex.cv03 whiteRightBackhandIndex whiteRightBackhandIndex.cv01 whiteRightBackhandIndex.cv02 whiteRightBackhandIndex.cv03  ] ;
} ornm;

