[cantarell-fonts/ufo-conversion] Centralize features again



commit 2d3817c30f9e84ab8ee7c07f75a09770b5b32f22
Author: Nikolaus Waxweiler <madigens gmail com>
Date:   Sun Feb 17 22:12:57 2019 +0000

    Centralize features again

 src/Cantarell-Bold.ufo/features.fea    | 499 +--------------------------------
 src/Cantarell-Light.ufo/features.fea   | 499 +--------------------------------
 src/Cantarell-Regular.ufo/features.fea | 499 +--------------------------------
 src/family.fea                         | 498 ++++++++++++++++++++++++++++++++
 4 files changed, 501 insertions(+), 1494 deletions(-)
---
diff --git a/src/Cantarell-Bold.ufo/features.fea b/src/Cantarell-Bold.ufo/features.fea
index 2ccd1eaa..bda7ea17 100644
--- a/src/Cantarell-Bold.ufo/features.fea
+++ b/src/Cantarell-Bold.ufo/features.fea
@@ -1,498 +1 @@
-# automatic
-@Uppercase = [ A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute K
 commaacc
 ent L LJ Lacute Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron 
Ncommaaccent Ndotaccent Ndotbelow Eng Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex 
Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave 
Odieresis Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow 
Ohorngrave Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek 
Oslash Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Thorn Q R Racute Rcaron Rcommaaccent 
Rdblgrave Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Saltillo Scaron Scarondotaccent 
Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Germandbls Schwa T Tbar Tcaron 
Tcedilla Tcommaaccent Tdotbelow Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis 
Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotb
 elow Ugr
 ave Uhookabove Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut 
Uinvertedbreve Umacron Umacrondieresis Uogonek Uring Utilde Utildeacute V W Wacute Wcircumflex Wdieresis 
Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron 
Zdotaccent Zdotbelow A-cy Be-cy Ve-cy Ge-cy Gje-cy Gheupturn-cy De-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy 
Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy El-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ef-cy 
Ha-cy Che-cy Tse-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Hardsign-cy Yeru-cy Lje-cy Nje-cy Dze-cy E-cy 
Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Iu-cy Ia-cy Dje-cy Yat-cy Yusbig-cy Fita-cy Izhitsa-cy Ghestroke-cy 
Ghemiddlehook-cy Zhedescender-cy Zedescender-cy Kadescender-cy Kaverticalstroke-cy Kabashkir-cy 
Endescender-cy Enghe-cy Esdescender-cy Ustraight-cy Ustraightstroke-cy Hadescender-cy Chedescender-cy 
Cheverticalstroke-cy Shha-cy Palochka-cy Zhebreve-cy Che
 khakassi
 an-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy Idieresis-cy 
Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy ];
-
-# Prefix: Languagesystems
-# automatic
-languagesystem DFLT dflt;
-languagesystem latn dflt;
-languagesystem latn NLD;
-languagesystem latn CAT;
-languagesystem latn ROM;
-languagesystem latn MOL;
-languagesystem latn KAZ;
-languagesystem latn TAT;
-languagesystem latn TRK;
-languagesystem latn CRT;
-languagesystem latn AZE;
-
-
-# Prefix: Include GDEF
-include(gdef.fea)
-
-
-feature aalt {
-# automatic
-feature locl;
-feature subs;
-feature sinf;
-feature sups;
-feature numr;
-feature dnom;
-feature frac;
-feature ordn;
-feature lnum;
-feature pnum;
-feature tnum;
-feature onum;
-feature case;
-feature zero;
-feature salt;
-feature ss01;
-
-} aalt;
-
-feature ccmp {
-# automatic
-lookup ccmp_Other_1 {
-       @CombiningTopAccents = [acutecomb brevecomb breveinvertedcomb caroncomb circumflexcomb 
commaturnedabovecomb dblgravecomb dieresiscomb dotaccentcomb gravecomb hookabovecomb hungarumlautcomb 
macroncomb ringcomb tildecomb verticallineabovecomb];
-       @CombiningNonTopAccents = [brevebelowcomb cedillacomb dieresisbelowcomb dotbelowcomb macronbelowcomb 
ogonekcomb verticallinebelowcomb horncomb slashlongcomb slashshortcomb strokelongcomb strokeshortcomb];
-       sub [i j]' @CombiningTopAccents by [idotless jdotless];
-       sub [i j]' @CombiningNonTopAccents @CombiningTopAccents by [idotless jdotless];
-       @Markscomb = [dieresiscomb dotaccentcomb gravecomb acutecomb hungarumlautcomb circumflexcomb 
caroncomb brevecomb ringcomb ringcomb_acutecomb tildecomb macroncomb hookabovecomb dblgravecomb 
breveinvertedcomb strokeshortcomb slashshortcomb slashlongcomb macroncomb.narrow ogonekcomb.tall brevecomb-cy 
descender-cy brevecomb_acutecomb brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb 
circumflexcomb_acutecomb circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb];
-       @MarkscombCase = [dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case breveinvertedcomb.case 
strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case ogonekcomb.tall.case 
brevecomb-cy.case descender-cy.case brevecomb_acutecomb.case brevecomb_gravecomb.case 
brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.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;
-
-lookup ccmp_Other_3 {
-       lookupflag 0;
-       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
-       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
-       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
-       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
-       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
-       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
-       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
-       sub macroncomb acutecomb by macroncomb_acutecomb;
-       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
-       sub macroncomb gravecomb by macroncomb_gravecomb;
-       sub ringcomb acutecomb by ringcomb_acutecomb;
-       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
-       sub tildecomb acutecomb by tildecomb_acutecomb;
-       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
-       sub tildecomb macroncomb by tildecomb_macroncomb;
-} ccmp_Other_3;
-
-lookup ccmp_Other_4 {
-       lookupflag 0;
-       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
-       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
-       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
-       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
-       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
-       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
-       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
-       sub macroncomb acutecomb by macroncomb_acutecomb;
-       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
-       sub macroncomb gravecomb by macroncomb_gravecomb;
-       sub ringcomb acutecomb by ringcomb_acutecomb;
-       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
-       sub tildecomb acutecomb by tildecomb_acutecomb;
-       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
-       sub tildecomb macroncomb by tildecomb_macroncomb;
-} ccmp_Other_4;
-
-lookup ccmp_latn_1 {
-       lookupflag 0;
-       sub brevecomb acutecomb by brevecomb_acutecomb;
-       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
-       sub brevecomb gravecomb by brevecomb_gravecomb;
-       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
-       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
-       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
-       sub brevecomb tildecomb by brevecomb_tildecomb;
-       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
-       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
-       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
-       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
-       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
-       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
-       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
-       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
-       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
-} ccmp_latn_1;
-
-lookup ccmp_latn_2 {
-       lookupflag 0;
-       sub brevecomb acutecomb by brevecomb_acutecomb;
-       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
-       sub brevecomb gravecomb by brevecomb_gravecomb;
-       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
-       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
-       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
-       sub brevecomb tildecomb by brevecomb_tildecomb;
-       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
-       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
-       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
-       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
-       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
-       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
-       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
-       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
-       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
-} ccmp_latn_2;
-
-script latn;
-
-} ccmp;
-
-feature locl {
-# automatic
-script latn;
-language NLD;
-sub iacute j' by jacute;
-sub Iacute J' by Jacute;
-language CAT;
-sub l periodcentered' l by periodcentered.loclCAT;
-sub L periodcentered' L by periodcentered.loclCAT.case;
-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;
-language KAZ;
-sub i by idotaccent;
-language TAT;
-sub i by idotaccent;
-language TRK;
-sub i by idotaccent;
-language CRT;
-sub i by idotaccent;
-language AZE;
-sub i by idotaccent;
-
-} 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;
-
-} subs;
-
-feature sinf {
-# automatic
-sub zero by zero.subs;
-sub one by one.subs;
-sub two by two.subs;
-sub three by three.subs;
-sub four by four.subs;
-sub five by five.subs;
-sub six by six.subs;
-sub seven by seven.subs;
-sub eight by eight.subs;
-sub nine by nine.subs;
-
-} sinf;
-
-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;
-
-} 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;
-sub N o period by numero;
-
-} ordn;
-
-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;
-sub bulletoperator.tf by bulletoperator;
-sub commercialMinusSign.tf by commercialMinusSign;
-sub divisionslash.tf by divisionslash;
-sub equivalence.tf by equivalence;
-sub notidentical.tf by notidentical;
-sub plus.tf by plus;
-sub minus.tf by minus;
-sub multiply.tf by multiply;
-sub divide.tf by divide;
-sub equal.tf by equal;
-sub notequal.tf by notequal;
-sub greater.tf by greater;
-sub less.tf by less;
-sub greaterequal.tf by greaterequal;
-sub lessequal.tf by lessequal;
-sub plusminus.tf by plusminus;
-sub approxequal.tf by approxequal;
-sub logicalnot.tf by logicalnot;
-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 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;
-sub bulletoperator by bulletoperator.tf;
-sub commercialMinusSign by commercialMinusSign.tf;
-sub divisionslash by divisionslash.tf;
-sub equivalence by equivalence.tf;
-sub notidentical by notidentical.tf;
-sub plus by plus.tf;
-sub minus by minus.tf;
-sub multiply by multiply.tf;
-sub divide by divide.tf;
-sub equal by equal.tf;
-sub notequal by notequal.tf;
-sub greater by greater.tf;
-sub less by less.tf;
-sub greaterequal by greaterequal.tf;
-sub lessequal by lessequal.tf;
-sub plusminus by plusminus.tf;
-sub approxequal by approxequal.tf;
-sub logicalnot by logicalnot.tf;
-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.tf by zero.tosf;
-sub one.tf by one.tosf;
-sub two.tf by two.tosf;
-sub three.tf by three.tosf;
-sub four.tf by four.tosf;
-sub five.tf by five.tosf;
-sub six.tf by six.tosf;
-sub seven.tf by seven.tosf;
-sub eight.tf by eight.tosf;
-sub nine.tf by nine.tosf;
-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 {
-# automatic
-sub periodcentered.loclCAT by periodcentered.loclCAT.case;
-sub dieresiscomb by dieresiscomb.case;
-sub dotaccentcomb by dotaccentcomb.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 ringcomb_acutecomb by ringcomb_acutecomb.case;
-sub tildecomb by tildecomb.case;
-sub macroncomb by macroncomb.case;
-sub hookabovecomb by hookabovecomb.case;
-sub dblgravecomb by dblgravecomb.case;
-sub breveinvertedcomb by breveinvertedcomb.case;
-sub strokeshortcomb by strokeshortcomb.case;
-sub slashshortcomb by slashshortcomb.case;
-sub slashlongcomb by slashlongcomb.case;
-sub macroncomb.narrow by macroncomb.narrow.case;
-sub ogonekcomb.tall by ogonekcomb.tall.case;
-sub brevecomb-cy by brevecomb-cy.case;
-sub descender-cy by descender-cy.case;
-sub brevecomb_acutecomb by brevecomb_acutecomb.case;
-sub brevecomb_gravecomb by brevecomb_gravecomb.case;
-sub brevecomb_hookabovecomb by brevecomb_hookabovecomb.case;
-sub brevecomb_tildecomb by brevecomb_tildecomb.case;
-sub circumflexcomb_acutecomb by circumflexcomb_acutecomb.case;
-sub circumflexcomb_gravecomb by circumflexcomb_gravecomb.case;
-sub circumflexcomb_hookabovecomb by circumflexcomb_hookabovecomb.case;
-sub circumflexcomb_tildecomb by circumflexcomb_tildecomb.case;
-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.tf by zero.lf;
-sub one.tf by one.lf;
-sub two.tf by two.lf;
-sub three.tf by three.lf;
-sub four.tf by four.lf;
-sub five.tf by five.lf;
-sub six.tf by six.lf;
-sub seven.tf by seven.lf;
-sub eight.tf by eight.lf;
-sub nine.tf 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 {
-# automatic
-sub f f i by f_f_i;
-sub f f l by f_f_l;
-sub f f by f_f;
-sub f i by fi;
-sub f l by fl;
-
-} liga;
-
-feature zero {
-# automatic
-sub zero.lf by zero.lf.zero;
-sub zero.osf by zero.osf.zero;
-sub zero.tf by zero.tf.zero;
-sub zero.tosf by zero.tosf.zero;
-sub zero by zero.zero;
-
-} zero;
-
-feature salt {
-# automatic
-sub six by six.ss01;
-sub nine by nine.ss01;
-
-} salt;
-
-feature ss01 {
-# automatic
-sub six by six.ss01;
-sub nine by nine.ss01;
-
-} ss01;
+include(family.fea)
\ No newline at end of file
diff --git a/src/Cantarell-Light.ufo/features.fea b/src/Cantarell-Light.ufo/features.fea
index 2ccd1eaa..bda7ea17 100644
--- a/src/Cantarell-Light.ufo/features.fea
+++ b/src/Cantarell-Light.ufo/features.fea
@@ -1,498 +1 @@
-# automatic
-@Uppercase = [ A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute K
 commaacc
 ent L LJ Lacute Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron 
Ncommaaccent Ndotaccent Ndotbelow Eng Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex 
Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave 
Odieresis Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow 
Ohorngrave Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek 
Oslash Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Thorn Q R Racute Rcaron Rcommaaccent 
Rdblgrave Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Saltillo Scaron Scarondotaccent 
Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Germandbls Schwa T Tbar Tcaron 
Tcedilla Tcommaaccent Tdotbelow Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis 
Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotb
 elow Ugr
 ave Uhookabove Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut 
Uinvertedbreve Umacron Umacrondieresis Uogonek Uring Utilde Utildeacute V W Wacute Wcircumflex Wdieresis 
Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron 
Zdotaccent Zdotbelow A-cy Be-cy Ve-cy Ge-cy Gje-cy Gheupturn-cy De-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy 
Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy El-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ef-cy 
Ha-cy Che-cy Tse-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Hardsign-cy Yeru-cy Lje-cy Nje-cy Dze-cy E-cy 
Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Iu-cy Ia-cy Dje-cy Yat-cy Yusbig-cy Fita-cy Izhitsa-cy Ghestroke-cy 
Ghemiddlehook-cy Zhedescender-cy Zedescender-cy Kadescender-cy Kaverticalstroke-cy Kabashkir-cy 
Endescender-cy Enghe-cy Esdescender-cy Ustraight-cy Ustraightstroke-cy Hadescender-cy Chedescender-cy 
Cheverticalstroke-cy Shha-cy Palochka-cy Zhebreve-cy Che
 khakassi
 an-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy Idieresis-cy 
Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy ];
-
-# Prefix: Languagesystems
-# automatic
-languagesystem DFLT dflt;
-languagesystem latn dflt;
-languagesystem latn NLD;
-languagesystem latn CAT;
-languagesystem latn ROM;
-languagesystem latn MOL;
-languagesystem latn KAZ;
-languagesystem latn TAT;
-languagesystem latn TRK;
-languagesystem latn CRT;
-languagesystem latn AZE;
-
-
-# Prefix: Include GDEF
-include(gdef.fea)
-
-
-feature aalt {
-# automatic
-feature locl;
-feature subs;
-feature sinf;
-feature sups;
-feature numr;
-feature dnom;
-feature frac;
-feature ordn;
-feature lnum;
-feature pnum;
-feature tnum;
-feature onum;
-feature case;
-feature zero;
-feature salt;
-feature ss01;
-
-} aalt;
-
-feature ccmp {
-# automatic
-lookup ccmp_Other_1 {
-       @CombiningTopAccents = [acutecomb brevecomb breveinvertedcomb caroncomb circumflexcomb 
commaturnedabovecomb dblgravecomb dieresiscomb dotaccentcomb gravecomb hookabovecomb hungarumlautcomb 
macroncomb ringcomb tildecomb verticallineabovecomb];
-       @CombiningNonTopAccents = [brevebelowcomb cedillacomb dieresisbelowcomb dotbelowcomb macronbelowcomb 
ogonekcomb verticallinebelowcomb horncomb slashlongcomb slashshortcomb strokelongcomb strokeshortcomb];
-       sub [i j]' @CombiningTopAccents by [idotless jdotless];
-       sub [i j]' @CombiningNonTopAccents @CombiningTopAccents by [idotless jdotless];
-       @Markscomb = [dieresiscomb dotaccentcomb gravecomb acutecomb hungarumlautcomb circumflexcomb 
caroncomb brevecomb ringcomb ringcomb_acutecomb tildecomb macroncomb hookabovecomb dblgravecomb 
breveinvertedcomb strokeshortcomb slashshortcomb slashlongcomb macroncomb.narrow ogonekcomb.tall brevecomb-cy 
descender-cy brevecomb_acutecomb brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb 
circumflexcomb_acutecomb circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb];
-       @MarkscombCase = [dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case breveinvertedcomb.case 
strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case ogonekcomb.tall.case 
brevecomb-cy.case descender-cy.case brevecomb_acutecomb.case brevecomb_gravecomb.case 
brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.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;
-
-lookup ccmp_Other_3 {
-       lookupflag 0;
-       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
-       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
-       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
-       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
-       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
-       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
-       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
-       sub macroncomb acutecomb by macroncomb_acutecomb;
-       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
-       sub macroncomb gravecomb by macroncomb_gravecomb;
-       sub ringcomb acutecomb by ringcomb_acutecomb;
-       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
-       sub tildecomb acutecomb by tildecomb_acutecomb;
-       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
-       sub tildecomb macroncomb by tildecomb_macroncomb;
-} ccmp_Other_3;
-
-lookup ccmp_Other_4 {
-       lookupflag 0;
-       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
-       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
-       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
-       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
-       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
-       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
-       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
-       sub macroncomb acutecomb by macroncomb_acutecomb;
-       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
-       sub macroncomb gravecomb by macroncomb_gravecomb;
-       sub ringcomb acutecomb by ringcomb_acutecomb;
-       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
-       sub tildecomb acutecomb by tildecomb_acutecomb;
-       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
-       sub tildecomb macroncomb by tildecomb_macroncomb;
-} ccmp_Other_4;
-
-lookup ccmp_latn_1 {
-       lookupflag 0;
-       sub brevecomb acutecomb by brevecomb_acutecomb;
-       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
-       sub brevecomb gravecomb by brevecomb_gravecomb;
-       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
-       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
-       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
-       sub brevecomb tildecomb by brevecomb_tildecomb;
-       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
-       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
-       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
-       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
-       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
-       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
-       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
-       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
-       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
-} ccmp_latn_1;
-
-lookup ccmp_latn_2 {
-       lookupflag 0;
-       sub brevecomb acutecomb by brevecomb_acutecomb;
-       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
-       sub brevecomb gravecomb by brevecomb_gravecomb;
-       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
-       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
-       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
-       sub brevecomb tildecomb by brevecomb_tildecomb;
-       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
-       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
-       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
-       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
-       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
-       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
-       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
-       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
-       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
-} ccmp_latn_2;
-
-script latn;
-
-} ccmp;
-
-feature locl {
-# automatic
-script latn;
-language NLD;
-sub iacute j' by jacute;
-sub Iacute J' by Jacute;
-language CAT;
-sub l periodcentered' l by periodcentered.loclCAT;
-sub L periodcentered' L by periodcentered.loclCAT.case;
-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;
-language KAZ;
-sub i by idotaccent;
-language TAT;
-sub i by idotaccent;
-language TRK;
-sub i by idotaccent;
-language CRT;
-sub i by idotaccent;
-language AZE;
-sub i by idotaccent;
-
-} 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;
-
-} subs;
-
-feature sinf {
-# automatic
-sub zero by zero.subs;
-sub one by one.subs;
-sub two by two.subs;
-sub three by three.subs;
-sub four by four.subs;
-sub five by five.subs;
-sub six by six.subs;
-sub seven by seven.subs;
-sub eight by eight.subs;
-sub nine by nine.subs;
-
-} sinf;
-
-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;
-
-} 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;
-sub N o period by numero;
-
-} ordn;
-
-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;
-sub bulletoperator.tf by bulletoperator;
-sub commercialMinusSign.tf by commercialMinusSign;
-sub divisionslash.tf by divisionslash;
-sub equivalence.tf by equivalence;
-sub notidentical.tf by notidentical;
-sub plus.tf by plus;
-sub minus.tf by minus;
-sub multiply.tf by multiply;
-sub divide.tf by divide;
-sub equal.tf by equal;
-sub notequal.tf by notequal;
-sub greater.tf by greater;
-sub less.tf by less;
-sub greaterequal.tf by greaterequal;
-sub lessequal.tf by lessequal;
-sub plusminus.tf by plusminus;
-sub approxequal.tf by approxequal;
-sub logicalnot.tf by logicalnot;
-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 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;
-sub bulletoperator by bulletoperator.tf;
-sub commercialMinusSign by commercialMinusSign.tf;
-sub divisionslash by divisionslash.tf;
-sub equivalence by equivalence.tf;
-sub notidentical by notidentical.tf;
-sub plus by plus.tf;
-sub minus by minus.tf;
-sub multiply by multiply.tf;
-sub divide by divide.tf;
-sub equal by equal.tf;
-sub notequal by notequal.tf;
-sub greater by greater.tf;
-sub less by less.tf;
-sub greaterequal by greaterequal.tf;
-sub lessequal by lessequal.tf;
-sub plusminus by plusminus.tf;
-sub approxequal by approxequal.tf;
-sub logicalnot by logicalnot.tf;
-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.tf by zero.tosf;
-sub one.tf by one.tosf;
-sub two.tf by two.tosf;
-sub three.tf by three.tosf;
-sub four.tf by four.tosf;
-sub five.tf by five.tosf;
-sub six.tf by six.tosf;
-sub seven.tf by seven.tosf;
-sub eight.tf by eight.tosf;
-sub nine.tf by nine.tosf;
-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 {
-# automatic
-sub periodcentered.loclCAT by periodcentered.loclCAT.case;
-sub dieresiscomb by dieresiscomb.case;
-sub dotaccentcomb by dotaccentcomb.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 ringcomb_acutecomb by ringcomb_acutecomb.case;
-sub tildecomb by tildecomb.case;
-sub macroncomb by macroncomb.case;
-sub hookabovecomb by hookabovecomb.case;
-sub dblgravecomb by dblgravecomb.case;
-sub breveinvertedcomb by breveinvertedcomb.case;
-sub strokeshortcomb by strokeshortcomb.case;
-sub slashshortcomb by slashshortcomb.case;
-sub slashlongcomb by slashlongcomb.case;
-sub macroncomb.narrow by macroncomb.narrow.case;
-sub ogonekcomb.tall by ogonekcomb.tall.case;
-sub brevecomb-cy by brevecomb-cy.case;
-sub descender-cy by descender-cy.case;
-sub brevecomb_acutecomb by brevecomb_acutecomb.case;
-sub brevecomb_gravecomb by brevecomb_gravecomb.case;
-sub brevecomb_hookabovecomb by brevecomb_hookabovecomb.case;
-sub brevecomb_tildecomb by brevecomb_tildecomb.case;
-sub circumflexcomb_acutecomb by circumflexcomb_acutecomb.case;
-sub circumflexcomb_gravecomb by circumflexcomb_gravecomb.case;
-sub circumflexcomb_hookabovecomb by circumflexcomb_hookabovecomb.case;
-sub circumflexcomb_tildecomb by circumflexcomb_tildecomb.case;
-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.tf by zero.lf;
-sub one.tf by one.lf;
-sub two.tf by two.lf;
-sub three.tf by three.lf;
-sub four.tf by four.lf;
-sub five.tf by five.lf;
-sub six.tf by six.lf;
-sub seven.tf by seven.lf;
-sub eight.tf by eight.lf;
-sub nine.tf 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 {
-# automatic
-sub f f i by f_f_i;
-sub f f l by f_f_l;
-sub f f by f_f;
-sub f i by fi;
-sub f l by fl;
-
-} liga;
-
-feature zero {
-# automatic
-sub zero.lf by zero.lf.zero;
-sub zero.osf by zero.osf.zero;
-sub zero.tf by zero.tf.zero;
-sub zero.tosf by zero.tosf.zero;
-sub zero by zero.zero;
-
-} zero;
-
-feature salt {
-# automatic
-sub six by six.ss01;
-sub nine by nine.ss01;
-
-} salt;
-
-feature ss01 {
-# automatic
-sub six by six.ss01;
-sub nine by nine.ss01;
-
-} ss01;
+include(family.fea)
\ No newline at end of file
diff --git a/src/Cantarell-Regular.ufo/features.fea b/src/Cantarell-Regular.ufo/features.fea
index 2ccd1eaa..bda7ea17 100644
--- a/src/Cantarell-Regular.ufo/features.fea
+++ b/src/Cantarell-Regular.ufo/features.fea
@@ -1,498 +1 @@
-# automatic
-@Uppercase = [ A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute K
 commaacc
 ent L LJ Lacute Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron 
Ncommaaccent Ndotaccent Ndotbelow Eng Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex 
Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave 
Odieresis Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow 
Ohorngrave Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek 
Oslash Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Thorn Q R Racute Rcaron Rcommaaccent 
Rdblgrave Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Saltillo Scaron Scarondotaccent 
Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Germandbls Schwa T Tbar Tcaron 
Tcedilla Tcommaaccent Tdotbelow Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis 
Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotb
 elow Ugr
 ave Uhookabove Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut 
Uinvertedbreve Umacron Umacrondieresis Uogonek Uring Utilde Utildeacute V W Wacute Wcircumflex Wdieresis 
Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron 
Zdotaccent Zdotbelow A-cy Be-cy Ve-cy Ge-cy Gje-cy Gheupturn-cy De-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy 
Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy El-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ef-cy 
Ha-cy Che-cy Tse-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Hardsign-cy Yeru-cy Lje-cy Nje-cy Dze-cy E-cy 
Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Iu-cy Ia-cy Dje-cy Yat-cy Yusbig-cy Fita-cy Izhitsa-cy Ghestroke-cy 
Ghemiddlehook-cy Zhedescender-cy Zedescender-cy Kadescender-cy Kaverticalstroke-cy Kabashkir-cy 
Endescender-cy Enghe-cy Esdescender-cy Ustraight-cy Ustraightstroke-cy Hadescender-cy Chedescender-cy 
Cheverticalstroke-cy Shha-cy Palochka-cy Zhebreve-cy Che
 khakassi
 an-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy Idieresis-cy 
Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy ];
-
-# Prefix: Languagesystems
-# automatic
-languagesystem DFLT dflt;
-languagesystem latn dflt;
-languagesystem latn NLD;
-languagesystem latn CAT;
-languagesystem latn ROM;
-languagesystem latn MOL;
-languagesystem latn KAZ;
-languagesystem latn TAT;
-languagesystem latn TRK;
-languagesystem latn CRT;
-languagesystem latn AZE;
-
-
-# Prefix: Include GDEF
-include(gdef.fea)
-
-
-feature aalt {
-# automatic
-feature locl;
-feature subs;
-feature sinf;
-feature sups;
-feature numr;
-feature dnom;
-feature frac;
-feature ordn;
-feature lnum;
-feature pnum;
-feature tnum;
-feature onum;
-feature case;
-feature zero;
-feature salt;
-feature ss01;
-
-} aalt;
-
-feature ccmp {
-# automatic
-lookup ccmp_Other_1 {
-       @CombiningTopAccents = [acutecomb brevecomb breveinvertedcomb caroncomb circumflexcomb 
commaturnedabovecomb dblgravecomb dieresiscomb dotaccentcomb gravecomb hookabovecomb hungarumlautcomb 
macroncomb ringcomb tildecomb verticallineabovecomb];
-       @CombiningNonTopAccents = [brevebelowcomb cedillacomb dieresisbelowcomb dotbelowcomb macronbelowcomb 
ogonekcomb verticallinebelowcomb horncomb slashlongcomb slashshortcomb strokelongcomb strokeshortcomb];
-       sub [i j]' @CombiningTopAccents by [idotless jdotless];
-       sub [i j]' @CombiningNonTopAccents @CombiningTopAccents by [idotless jdotless];
-       @Markscomb = [dieresiscomb dotaccentcomb gravecomb acutecomb hungarumlautcomb circumflexcomb 
caroncomb brevecomb ringcomb ringcomb_acutecomb tildecomb macroncomb hookabovecomb dblgravecomb 
breveinvertedcomb strokeshortcomb slashshortcomb slashlongcomb macroncomb.narrow ogonekcomb.tall brevecomb-cy 
descender-cy brevecomb_acutecomb brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb 
circumflexcomb_acutecomb circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb];
-       @MarkscombCase = [dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case breveinvertedcomb.case 
strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case ogonekcomb.tall.case 
brevecomb-cy.case descender-cy.case brevecomb_acutecomb.case brevecomb_gravecomb.case 
brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.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;
-
-lookup ccmp_Other_3 {
-       lookupflag 0;
-       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
-       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
-       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
-       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
-       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
-       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
-       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
-       sub macroncomb acutecomb by macroncomb_acutecomb;
-       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
-       sub macroncomb gravecomb by macroncomb_gravecomb;
-       sub ringcomb acutecomb by ringcomb_acutecomb;
-       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
-       sub tildecomb acutecomb by tildecomb_acutecomb;
-       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
-       sub tildecomb macroncomb by tildecomb_macroncomb;
-} ccmp_Other_3;
-
-lookup ccmp_Other_4 {
-       lookupflag 0;
-       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
-       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
-       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
-       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
-       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
-       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
-       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
-       sub macroncomb acutecomb by macroncomb_acutecomb;
-       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
-       sub macroncomb gravecomb by macroncomb_gravecomb;
-       sub ringcomb acutecomb by ringcomb_acutecomb;
-       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
-       sub tildecomb acutecomb by tildecomb_acutecomb;
-       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
-       sub tildecomb macroncomb by tildecomb_macroncomb;
-} ccmp_Other_4;
-
-lookup ccmp_latn_1 {
-       lookupflag 0;
-       sub brevecomb acutecomb by brevecomb_acutecomb;
-       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
-       sub brevecomb gravecomb by brevecomb_gravecomb;
-       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
-       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
-       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
-       sub brevecomb tildecomb by brevecomb_tildecomb;
-       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
-       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
-       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
-       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
-       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
-       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
-       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
-       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
-       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
-} ccmp_latn_1;
-
-lookup ccmp_latn_2 {
-       lookupflag 0;
-       sub brevecomb acutecomb by brevecomb_acutecomb;
-       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
-       sub brevecomb gravecomb by brevecomb_gravecomb;
-       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
-       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
-       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
-       sub brevecomb tildecomb by brevecomb_tildecomb;
-       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
-       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
-       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
-       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
-       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
-       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
-       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
-       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
-       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
-} ccmp_latn_2;
-
-script latn;
-
-} ccmp;
-
-feature locl {
-# automatic
-script latn;
-language NLD;
-sub iacute j' by jacute;
-sub Iacute J' by Jacute;
-language CAT;
-sub l periodcentered' l by periodcentered.loclCAT;
-sub L periodcentered' L by periodcentered.loclCAT.case;
-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;
-language KAZ;
-sub i by idotaccent;
-language TAT;
-sub i by idotaccent;
-language TRK;
-sub i by idotaccent;
-language CRT;
-sub i by idotaccent;
-language AZE;
-sub i by idotaccent;
-
-} 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;
-
-} subs;
-
-feature sinf {
-# automatic
-sub zero by zero.subs;
-sub one by one.subs;
-sub two by two.subs;
-sub three by three.subs;
-sub four by four.subs;
-sub five by five.subs;
-sub six by six.subs;
-sub seven by seven.subs;
-sub eight by eight.subs;
-sub nine by nine.subs;
-
-} sinf;
-
-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;
-
-} 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;
-sub N o period by numero;
-
-} ordn;
-
-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;
-sub bulletoperator.tf by bulletoperator;
-sub commercialMinusSign.tf by commercialMinusSign;
-sub divisionslash.tf by divisionslash;
-sub equivalence.tf by equivalence;
-sub notidentical.tf by notidentical;
-sub plus.tf by plus;
-sub minus.tf by minus;
-sub multiply.tf by multiply;
-sub divide.tf by divide;
-sub equal.tf by equal;
-sub notequal.tf by notequal;
-sub greater.tf by greater;
-sub less.tf by less;
-sub greaterequal.tf by greaterequal;
-sub lessequal.tf by lessequal;
-sub plusminus.tf by plusminus;
-sub approxequal.tf by approxequal;
-sub logicalnot.tf by logicalnot;
-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 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;
-sub bulletoperator by bulletoperator.tf;
-sub commercialMinusSign by commercialMinusSign.tf;
-sub divisionslash by divisionslash.tf;
-sub equivalence by equivalence.tf;
-sub notidentical by notidentical.tf;
-sub plus by plus.tf;
-sub minus by minus.tf;
-sub multiply by multiply.tf;
-sub divide by divide.tf;
-sub equal by equal.tf;
-sub notequal by notequal.tf;
-sub greater by greater.tf;
-sub less by less.tf;
-sub greaterequal by greaterequal.tf;
-sub lessequal by lessequal.tf;
-sub plusminus by plusminus.tf;
-sub approxequal by approxequal.tf;
-sub logicalnot by logicalnot.tf;
-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.tf by zero.tosf;
-sub one.tf by one.tosf;
-sub two.tf by two.tosf;
-sub three.tf by three.tosf;
-sub four.tf by four.tosf;
-sub five.tf by five.tosf;
-sub six.tf by six.tosf;
-sub seven.tf by seven.tosf;
-sub eight.tf by eight.tosf;
-sub nine.tf by nine.tosf;
-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 {
-# automatic
-sub periodcentered.loclCAT by periodcentered.loclCAT.case;
-sub dieresiscomb by dieresiscomb.case;
-sub dotaccentcomb by dotaccentcomb.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 ringcomb_acutecomb by ringcomb_acutecomb.case;
-sub tildecomb by tildecomb.case;
-sub macroncomb by macroncomb.case;
-sub hookabovecomb by hookabovecomb.case;
-sub dblgravecomb by dblgravecomb.case;
-sub breveinvertedcomb by breveinvertedcomb.case;
-sub strokeshortcomb by strokeshortcomb.case;
-sub slashshortcomb by slashshortcomb.case;
-sub slashlongcomb by slashlongcomb.case;
-sub macroncomb.narrow by macroncomb.narrow.case;
-sub ogonekcomb.tall by ogonekcomb.tall.case;
-sub brevecomb-cy by brevecomb-cy.case;
-sub descender-cy by descender-cy.case;
-sub brevecomb_acutecomb by brevecomb_acutecomb.case;
-sub brevecomb_gravecomb by brevecomb_gravecomb.case;
-sub brevecomb_hookabovecomb by brevecomb_hookabovecomb.case;
-sub brevecomb_tildecomb by brevecomb_tildecomb.case;
-sub circumflexcomb_acutecomb by circumflexcomb_acutecomb.case;
-sub circumflexcomb_gravecomb by circumflexcomb_gravecomb.case;
-sub circumflexcomb_hookabovecomb by circumflexcomb_hookabovecomb.case;
-sub circumflexcomb_tildecomb by circumflexcomb_tildecomb.case;
-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.tf by zero.lf;
-sub one.tf by one.lf;
-sub two.tf by two.lf;
-sub three.tf by three.lf;
-sub four.tf by four.lf;
-sub five.tf by five.lf;
-sub six.tf by six.lf;
-sub seven.tf by seven.lf;
-sub eight.tf by eight.lf;
-sub nine.tf 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 {
-# automatic
-sub f f i by f_f_i;
-sub f f l by f_f_l;
-sub f f by f_f;
-sub f i by fi;
-sub f l by fl;
-
-} liga;
-
-feature zero {
-# automatic
-sub zero.lf by zero.lf.zero;
-sub zero.osf by zero.osf.zero;
-sub zero.tf by zero.tf.zero;
-sub zero.tosf by zero.tosf.zero;
-sub zero by zero.zero;
-
-} zero;
-
-feature salt {
-# automatic
-sub six by six.ss01;
-sub nine by nine.ss01;
-
-} salt;
-
-feature ss01 {
-# automatic
-sub six by six.ss01;
-sub nine by nine.ss01;
-
-} ss01;
+include(family.fea)
\ No newline at end of file
diff --git a/src/family.fea b/src/family.fea
new file mode 100644
index 00000000..2ccd1eaa
--- /dev/null
+++ b/src/family.fea
@@ -0,0 +1,498 @@
+# automatic
+@Uppercase = [ A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute K
 commaacc
 ent L LJ Lacute Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron 
Ncommaaccent Ndotaccent Ndotbelow Eng Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex 
Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave 
Odieresis Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow 
Ohorngrave Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek 
Oslash Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Thorn Q R Racute Rcaron Rcommaaccent 
Rdblgrave Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Saltillo Scaron Scarondotaccent 
Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Germandbls Schwa T Tbar Tcaron 
Tcedilla Tcommaaccent Tdotbelow Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis 
Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotb
 elow Ugr
 ave Uhookabove Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut 
Uinvertedbreve Umacron Umacrondieresis Uogonek Uring Utilde Utildeacute V W Wacute Wcircumflex Wdieresis 
Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron 
Zdotaccent Zdotbelow A-cy Be-cy Ve-cy Ge-cy Gje-cy Gheupturn-cy De-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy 
Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy El-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ef-cy 
Ha-cy Che-cy Tse-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Hardsign-cy Yeru-cy Lje-cy Nje-cy Dze-cy E-cy 
Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Iu-cy Ia-cy Dje-cy Yat-cy Yusbig-cy Fita-cy Izhitsa-cy Ghestroke-cy 
Ghemiddlehook-cy Zhedescender-cy Zedescender-cy Kadescender-cy Kaverticalstroke-cy Kabashkir-cy 
Endescender-cy Enghe-cy Esdescender-cy Ustraight-cy Ustraightstroke-cy Hadescender-cy Chedescender-cy 
Cheverticalstroke-cy Shha-cy Palochka-cy Zhebreve-cy Che
 khakassi
 an-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy Idieresis-cy 
Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy ];
+
+# Prefix: Languagesystems
+# automatic
+languagesystem DFLT dflt;
+languagesystem latn dflt;
+languagesystem latn NLD;
+languagesystem latn CAT;
+languagesystem latn ROM;
+languagesystem latn MOL;
+languagesystem latn KAZ;
+languagesystem latn TAT;
+languagesystem latn TRK;
+languagesystem latn CRT;
+languagesystem latn AZE;
+
+
+# Prefix: Include GDEF
+include(gdef.fea)
+
+
+feature aalt {
+# automatic
+feature locl;
+feature subs;
+feature sinf;
+feature sups;
+feature numr;
+feature dnom;
+feature frac;
+feature ordn;
+feature lnum;
+feature pnum;
+feature tnum;
+feature onum;
+feature case;
+feature zero;
+feature salt;
+feature ss01;
+
+} aalt;
+
+feature ccmp {
+# automatic
+lookup ccmp_Other_1 {
+       @CombiningTopAccents = [acutecomb brevecomb breveinvertedcomb caroncomb circumflexcomb 
commaturnedabovecomb dblgravecomb dieresiscomb dotaccentcomb gravecomb hookabovecomb hungarumlautcomb 
macroncomb ringcomb tildecomb verticallineabovecomb];
+       @CombiningNonTopAccents = [brevebelowcomb cedillacomb dieresisbelowcomb dotbelowcomb macronbelowcomb 
ogonekcomb verticallinebelowcomb horncomb slashlongcomb slashshortcomb strokelongcomb strokeshortcomb];
+       sub [i j]' @CombiningTopAccents by [idotless jdotless];
+       sub [i j]' @CombiningNonTopAccents @CombiningTopAccents by [idotless jdotless];
+       @Markscomb = [dieresiscomb dotaccentcomb gravecomb acutecomb hungarumlautcomb circumflexcomb 
caroncomb brevecomb ringcomb ringcomb_acutecomb tildecomb macroncomb hookabovecomb dblgravecomb 
breveinvertedcomb strokeshortcomb slashshortcomb slashlongcomb macroncomb.narrow ogonekcomb.tall brevecomb-cy 
descender-cy brevecomb_acutecomb brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb 
circumflexcomb_acutecomb circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb];
+       @MarkscombCase = [dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case breveinvertedcomb.case 
strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case ogonekcomb.tall.case 
brevecomb-cy.case descender-cy.case brevecomb_acutecomb.case brevecomb_gravecomb.case 
brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.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;
+
+lookup ccmp_Other_3 {
+       lookupflag 0;
+       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
+       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
+       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
+       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
+       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
+       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
+       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
+       sub macroncomb acutecomb by macroncomb_acutecomb;
+       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
+       sub macroncomb gravecomb by macroncomb_gravecomb;
+       sub ringcomb acutecomb by ringcomb_acutecomb;
+       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
+       sub tildecomb acutecomb by tildecomb_acutecomb;
+       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
+       sub tildecomb macroncomb by tildecomb_macroncomb;
+} ccmp_Other_3;
+
+lookup ccmp_Other_4 {
+       lookupflag 0;
+       sub acutecomb dotaccentcomb by acutecomb_dotaccentcomb;
+       sub caroncomb dotaccentcomb by caroncomb_dotaccentcomb;
+       sub dieresiscomb acutecomb by dieresiscomb_acutecomb;
+       sub dieresiscomb caroncomb by dieresiscomb_caroncomb;
+       sub dieresiscomb gravecomb by dieresiscomb_gravecomb;
+       sub dieresiscomb macroncomb by dieresiscomb_macroncomb;
+       sub dotaccentcomb macroncomb by dotaccentcomb_macroncomb;
+       sub macroncomb acutecomb by macroncomb_acutecomb;
+       sub macroncomb dieresiscomb by macroncomb_dieresiscomb;
+       sub macroncomb gravecomb by macroncomb_gravecomb;
+       sub ringcomb acutecomb by ringcomb_acutecomb;
+       sub ringcomb.case acutecomb.case by ringcomb_acutecomb.case;
+       sub tildecomb acutecomb by tildecomb_acutecomb;
+       sub tildecomb dieresiscomb by tildecomb_dieresiscomb;
+       sub tildecomb macroncomb by tildecomb_macroncomb;
+} ccmp_Other_4;
+
+lookup ccmp_latn_1 {
+       lookupflag 0;
+       sub brevecomb acutecomb by brevecomb_acutecomb;
+       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
+       sub brevecomb gravecomb by brevecomb_gravecomb;
+       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
+       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
+       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
+       sub brevecomb tildecomb by brevecomb_tildecomb;
+       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
+       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
+       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
+       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
+       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
+       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
+       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
+       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
+       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
+} ccmp_latn_1;
+
+lookup ccmp_latn_2 {
+       lookupflag 0;
+       sub brevecomb acutecomb by brevecomb_acutecomb;
+       sub brevecomb.case acutecomb.case by brevecomb_acutecomb.case;
+       sub brevecomb gravecomb by brevecomb_gravecomb;
+       sub brevecomb.case gravecomb.case by brevecomb_gravecomb.case;
+       sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
+       sub brevecomb.case hookabovecomb.case by brevecomb_hookabovecomb.case;
+       sub brevecomb tildecomb by brevecomb_tildecomb;
+       sub brevecomb.case tildecomb.case by brevecomb_tildecomb.case;
+       sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
+       sub circumflexcomb.case acutecomb.case by circumflexcomb_acutecomb.case;
+       sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
+       sub circumflexcomb.case gravecomb.case by circumflexcomb_gravecomb.case;
+       sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
+       sub circumflexcomb.case hookabovecomb.case by circumflexcomb_hookabovecomb.case;
+       sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
+       sub circumflexcomb.case tildecomb.case by circumflexcomb_tildecomb.case;
+} ccmp_latn_2;
+
+script latn;
+
+} ccmp;
+
+feature locl {
+# automatic
+script latn;
+language NLD;
+sub iacute j' by jacute;
+sub Iacute J' by Jacute;
+language CAT;
+sub l periodcentered' l by periodcentered.loclCAT;
+sub L periodcentered' L by periodcentered.loclCAT.case;
+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;
+language KAZ;
+sub i by idotaccent;
+language TAT;
+sub i by idotaccent;
+language TRK;
+sub i by idotaccent;
+language CRT;
+sub i by idotaccent;
+language AZE;
+sub i by idotaccent;
+
+} 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;
+
+} subs;
+
+feature sinf {
+# automatic
+sub zero by zero.subs;
+sub one by one.subs;
+sub two by two.subs;
+sub three by three.subs;
+sub four by four.subs;
+sub five by five.subs;
+sub six by six.subs;
+sub seven by seven.subs;
+sub eight by eight.subs;
+sub nine by nine.subs;
+
+} sinf;
+
+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;
+
+} 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;
+sub N o period by numero;
+
+} ordn;
+
+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;
+sub bulletoperator.tf by bulletoperator;
+sub commercialMinusSign.tf by commercialMinusSign;
+sub divisionslash.tf by divisionslash;
+sub equivalence.tf by equivalence;
+sub notidentical.tf by notidentical;
+sub plus.tf by plus;
+sub minus.tf by minus;
+sub multiply.tf by multiply;
+sub divide.tf by divide;
+sub equal.tf by equal;
+sub notequal.tf by notequal;
+sub greater.tf by greater;
+sub less.tf by less;
+sub greaterequal.tf by greaterequal;
+sub lessequal.tf by lessequal;
+sub plusminus.tf by plusminus;
+sub approxequal.tf by approxequal;
+sub logicalnot.tf by logicalnot;
+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 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;
+sub bulletoperator by bulletoperator.tf;
+sub commercialMinusSign by commercialMinusSign.tf;
+sub divisionslash by divisionslash.tf;
+sub equivalence by equivalence.tf;
+sub notidentical by notidentical.tf;
+sub plus by plus.tf;
+sub minus by minus.tf;
+sub multiply by multiply.tf;
+sub divide by divide.tf;
+sub equal by equal.tf;
+sub notequal by notequal.tf;
+sub greater by greater.tf;
+sub less by less.tf;
+sub greaterequal by greaterequal.tf;
+sub lessequal by lessequal.tf;
+sub plusminus by plusminus.tf;
+sub approxequal by approxequal.tf;
+sub logicalnot by logicalnot.tf;
+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.tf by zero.tosf;
+sub one.tf by one.tosf;
+sub two.tf by two.tosf;
+sub three.tf by three.tosf;
+sub four.tf by four.tosf;
+sub five.tf by five.tosf;
+sub six.tf by six.tosf;
+sub seven.tf by seven.tosf;
+sub eight.tf by eight.tosf;
+sub nine.tf by nine.tosf;
+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 {
+# automatic
+sub periodcentered.loclCAT by periodcentered.loclCAT.case;
+sub dieresiscomb by dieresiscomb.case;
+sub dotaccentcomb by dotaccentcomb.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 ringcomb_acutecomb by ringcomb_acutecomb.case;
+sub tildecomb by tildecomb.case;
+sub macroncomb by macroncomb.case;
+sub hookabovecomb by hookabovecomb.case;
+sub dblgravecomb by dblgravecomb.case;
+sub breveinvertedcomb by breveinvertedcomb.case;
+sub strokeshortcomb by strokeshortcomb.case;
+sub slashshortcomb by slashshortcomb.case;
+sub slashlongcomb by slashlongcomb.case;
+sub macroncomb.narrow by macroncomb.narrow.case;
+sub ogonekcomb.tall by ogonekcomb.tall.case;
+sub brevecomb-cy by brevecomb-cy.case;
+sub descender-cy by descender-cy.case;
+sub brevecomb_acutecomb by brevecomb_acutecomb.case;
+sub brevecomb_gravecomb by brevecomb_gravecomb.case;
+sub brevecomb_hookabovecomb by brevecomb_hookabovecomb.case;
+sub brevecomb_tildecomb by brevecomb_tildecomb.case;
+sub circumflexcomb_acutecomb by circumflexcomb_acutecomb.case;
+sub circumflexcomb_gravecomb by circumflexcomb_gravecomb.case;
+sub circumflexcomb_hookabovecomb by circumflexcomb_hookabovecomb.case;
+sub circumflexcomb_tildecomb by circumflexcomb_tildecomb.case;
+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.tf by zero.lf;
+sub one.tf by one.lf;
+sub two.tf by two.lf;
+sub three.tf by three.lf;
+sub four.tf by four.lf;
+sub five.tf by five.lf;
+sub six.tf by six.lf;
+sub seven.tf by seven.lf;
+sub eight.tf by eight.lf;
+sub nine.tf 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 {
+# automatic
+sub f f i by f_f_i;
+sub f f l by f_f_l;
+sub f f by f_f;
+sub f i by fi;
+sub f l by fl;
+
+} liga;
+
+feature zero {
+# automatic
+sub zero.lf by zero.lf.zero;
+sub zero.osf by zero.osf.zero;
+sub zero.tf by zero.tf.zero;
+sub zero.tosf by zero.tosf.zero;
+sub zero by zero.zero;
+
+} zero;
+
+feature salt {
+# automatic
+sub six by six.ss01;
+sub nine by nine.ss01;
+
+} salt;
+
+feature ss01 {
+# automatic
+sub six by six.ss01;
+sub nine by nine.ss01;
+
+} ss01;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]