+++ /dev/null
-@FIGR = [zero one two three four five six seven eight nine];
-@NUMR = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr];
-@DNOM = [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];
-
-@SUPS = [@NUMR];
-@SUBS = [@DNOM];
-
-@PERIOD = [comma period ellipsis];
-@COLON = [colon semicolon];
-@GREEKCOLON = [uni037E anoteleia];
-@DASH = [hyphen endash emdash];
-@GUILLEMET = [guillemotleft guillemotright guilsinglleft guilsinglright];
-@MATH = [plus less equal greater asciitilde logicalnot periodcentered multiply divide minus uni2219 infinity approxequal notequal];
-@BASEQUOTE = [quotesinglbase quotedblbase];
-@ASCIIQUOTE = [quotedbl quotesingle asterisk asciicircum degree];
-@FANCYQUOTE = [quoteleft quoteright quotedblleft quotedblright];
-@QUESTION = [question];
-@QUESTIONDN = [questiondown];
-@SLASH = [slash];
-@BACKSLASH = [backslash];
-
-@BRACKET_ = [parenleft bracketleft braceleft uni2770 uni2772];
-@_BRACKET = [parenright bracketright braceright uni2771 uni2773];
-
-
-languagesystem DFLT dflt;
-languagesystem latn dflt;
-languagesystem latn ROM;
-languagesystem latn MOL;
-languagesystem latn ISM;
-languagesystem latn KSM;
-languagesystem latn LSM;
-languagesystem latn NSM;
-languagesystem latn SKS;
-languagesystem latn SSM;
-languagesystem grek dflt;
-languagesystem cyrl dflt;
-
-
-feature aalt
-{
- sub Eng from [Eng.locl];
- sub Scedilla from [uni0218];
- sub scedilla from [uni0219];
- sub uni0162 from [uni021A];
- sub uni0163 from [uni021B];
-
- sub zero from [zero.zero];
- sub uni2070 from [uni2070.zero];
- sub uni2080 from [uni2080.zero];
- sub zero.numr from [zero.numr.zero];
- sub zero.dnom from [zero.dnom.zero];
-
- sub exclamdown from [exclamdown.case];
- sub questiondown from [questiondown.case];
-} aalt;
-
-
-feature locl
-{
- # Note: The explicit notation with exclude_dflt
- # is necessary to prevent FontForge from adding
- # the lookups to the dflt language.
-
- script latn;
- language ROM exclude_dflt;
- lookup loclCommaaccent
- {
- sub Scedilla by uni0218;
- sub scedilla by uni0219;
- sub uni0162 by uni021A;
- sub uni0163 by uni021B;
- } loclCommaaccent;
- language MOL exclude_dflt;
- lookup loclCommaaccent;
-
- language ISM exclude_dflt;
- lookup loclEng
- {
- sub Eng by Eng.locl;
- } loclEng;
- language KSM exclude_dflt;
- lookup loclEng;
- language LSM exclude_dflt;
- lookup loclEng;
- language NSM exclude_dflt;
- lookup loclEng;
- language SKS exclude_dflt;
- lookup loclEng;
- language SSM exclude_dflt;
- lookup loclEng;
-} locl;
-
-
-feature dlig
-{
- lookup dligCrossbar
- {
- sub f' f by f.dlig;
- sub t' t by t.dlig;
- } dligCrossbar;
-
- lookup dligTittle
- {
- sub f i by f_i;
- sub f j by f_j;
- } dligTittle;
-} dlig;
-
-
-feature frac
-{
- # Trailblazer Algorithm
- # Example input: 00 000/000 000/000/000
-
- # Start leftward numerator trail, originating from any slash
- # Result: 00 '''/000 '''/'''/000
-
- lookup fracNumr0 { sub @FIGR' slash by @NUMR; } fracNumr0;
- lookup fracNumr1 { sub @FIGR' @NUMR by @NUMR; } fracNumr1;
- lookup fracNumr2 { sub @FIGR' @NUMR by @NUMR; } fracNumr2;
- lookup fracNumr3 { sub @FIGR' @NUMR by @NUMR; } fracNumr3;
- lookup fracNumr4 { sub @FIGR' @NUMR by @NUMR; } fracNumr4;
- lookup fracNumr5 { sub @FIGR' @NUMR by @NUMR; } fracNumr5;
- lookup fracNumr6 { sub @FIGR' @NUMR by @NUMR; } fracNumr6;
- lookup fracNumr7 { sub @FIGR' @NUMR by @NUMR; } fracNumr7;
- lookup fracNumr8 { sub @FIGR' @NUMR by @NUMR; } fracNumr8;
- lookup fracNumr9 { sub @FIGR' @NUMR by @NUMR; } fracNumr9;
-
- # Trails that touch a figure or slash on their left end are invalid,
- # mark them by replacing the numerators with denominators
- # Result: 00 '''/000 '''/.../000
-
- lookup fracMark { sub [slash @FIGR @DNOM] @NUMR' by @DNOM; } fracMark;
-
- # Replace any valid slash with a fraction glyph
- # Result: 00 '''|000 '''/.../000
-
- lookup fracSlash { sub @NUMR slash' @FIGR by slash.frac; } fracSlash;
-
- # Change marked trails back to figures
- # Result: 00 '''|000 '''/000/000
-
- lookup fracUnMark { sub @DNOM by @FIGR; } fracUnMark;
-
- # Change trails not originating from a fraction glyph back to figures
- # Result: 00 '''|000 000/000/000
-
- lookup fracUnNumr0 { sub @NUMR' slash by @FIGR; } fracUnNumr0;
- lookup fracUnNumr1 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr1;
- lookup fracUnNumr2 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr2;
- lookup fracUnNumr3 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr3;
- lookup fracUnNumr4 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr4;
- lookup fracUnNumr5 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr5;
- lookup fracUnNumr6 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr6;
- lookup fracUnNumr7 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr7;
- lookup fracUnNumr8 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr8;
- lookup fracUnNumr9 { sub @NUMR' @FIGR by @FIGR; } fracUnNumr9;
-
- # Insert the denominators
- # Result: 00 '''|... 000/000/000
-
- lookup fracDnom { sub [slash.frac @DNOM] @FIGR' by @DNOM; } fracDnom;
-
- # Move the fraction closer to a leading figure
- # Result: 00'''|... 000/000/000
-
- sub @FIGR [space uni00A0]' @NUMR by [space.frac uni00A0.frac];
-} frac;
-
-
-feature sups
-{
- sub @FIGR by @SUPS;
-} sups;
-
-
-feature subs
-{
- lookup subsSub
- {
- sub @FIGR by @SUBS;
- } subsSub;
-} subs;
-
-
-feature sinf
-{
- lookup subsSub;
- lookup sinfPos
- {
- pos [@SUBS zero.dnom.zero] <0 -120 0 0>;
- } sinfPos;
-} sinf;
-
-
-feature zero
-{
- @zeroEmpty = [zero uni2070 uni2080 zero.numr zero.dnom];
- @zeroSlash = [zero.zero uni2070.zero uni2080.zero zero.numr.zero zero.dnom.zero];
-
- sub @zeroEmpty by @zeroSlash;
-} zero;