Files
zeekay 25edbb3620 fix(zen): refit zen-wide to the LUX wordmark, 1.56x -> 1.40x
The preset was fitted to a licensed display face and then used beside the drawn
LUX mark. Against that mark it renders 824px where the mark is 741px,
91.1% residual. Refit to our own mark: 1.40x is 739px and 17.6%.

Flattening the U's baseline overshoot takes it to 16.8% — Zen's round
forms drop 16 units below the baseline, correct type design, and the
drawn mark is dead flat. That is an outline operation (sites/_shape.py),
not a font setting, so it applies to the cut wordmark and not the preset.

Also: retag 45 binaries to identify as Zen, add publish.yml (this package
had none — 1.8.1 and 1.8.2 were hand-published), and the fitting tools.
2026-08-23 16:35:55 -07:00

4663 lines
58 KiB
Plaintext

{
.appVersion = "3434";
.formatVersion = 3;
axes = (
{
name = Weight;
tag = wght;
}
);
classes = (
{
automatic = 1;
code = "A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde Adieresis Adotbelow Agrave Ahookabove Amacron Aogonek Aring Atilde AE B C Cacute Ccaron Ccedilla Ccircumflex Cdotaccent D Dcaron Dcroat Eth E Eacute Ecaron Ecircumflex Ecircumflexacute Ecircumflexdotbelow Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edieresis Edotaccent Edotbelow Egrave Ehookabove Emacron Eogonek Etilde Schwa F G Gbreve Gcaron Gcircumflex Gcommaaccent Gdotaccent Gmacron Gstroke H Hbar Hcircumflex I Iacute Icircumflex Idieresis Idotaccent Idotbelow Igrave Ihookabove Imacron Iogonek Itilde J Jacute Jcircumflex K Kcaron Kcommaaccent L Lacute Lcaron Lcommaaccent Lslash M N Nacute Ncaron Ncommaaccent Ntilde Eng O Oacute Ocircumflex Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odieresis Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow Ohorngrave Ohornhookabove Ohorntilde Ohungarumlaut Omacron Oslash Otilde OE P Thorn Q R Racute Rcaron Rcommaaccent S Sacute Scaron Scedilla Scircumflex Scommaaccent Germandbls T Tbar Tcaron Tcedilla Tcommaaccent U Uacute Ubreve Ucircumflex Udieresis Udotbelow Ugrave Uhookabove Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut Umacron Uogonek Uring Utilde V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ydotbelow Ygrave Yhookabove Ytilde Z Zacute Zcaron Zdotaccent Saltillo Lcommaaccent.loclMAH Ncommaaccent.loclMAH R.ss04 Racute.ss04 Rcaron.ss04 Rcommaaccent.ss04 G.ss06 Gbreve.ss06 Gcircumflex.ss06 Gcommaaccent.ss06 Gdotaccent.ss06 Gmacron.ss06 Abrevedotbelow.ss08 Adieresis.ss08 Adotbelow.ss08 Cdotaccent.ss08 Ecircumflexdotbelow.ss08 Edieresis.ss08 Edotaccent.ss08 Edotbelow.ss08 Gdotaccent.ss08 Idieresis.ss08 Idotaccent.ss08 Idotbelow.ss08 Ocircumflexdotbelow.ss08 Odieresis.ss08 Ohorndotbelow.ss08 Udieresis.ss08 Udotbelow.ss08 Uhorndotbelow.ss08 Wdieresis.ss08 Ydieresis.ss08 Ydotbelow.ss08 Zdotaccent.ss08 Gdotaccent.ss06.ss08 A-cy Be-cy Ve-cy Ge-cy Gje-cy Geupturn-cy Gestroke-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 Tse-cy Che-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Yeru-cy Hardsign-cy Lje-cy Nje-cy Dze-cy E-cy Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Yu-cy Ya-cy Dje-cy Yat-cy Yusbig-cy Fita-cy Izhitsa-cy Zhedescender-cy Kadescender-cy Endescender-cy Ustraight-cy Ustraightstroke-cy Hadescender-cy Chedescender-cy Shha-cy Palochka-cy Schwa-cy Imacron-cy Obarred-cy Umacron-cy Io-cy.ss08 Yi-cy.ss08 Lambda Omega eulerconstant";
name = Uppercase;
},
{
code = "zero one two three four five six seven eight nine zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior onethird twothirds onehalf onequarter threequarters oneeighth threeeighths fiveeighths seveneighths
";
name = Numeral;
}
);
customParameters = (
{
name = "Use Typo Metrics";
value = 1;
},
{
name = "Write lastChange";
value = 0;
},
{
name = "Write DisplayStrings";
value = 0;
},
{
name = "Variable Font Origin";
value = "574EE4B9-5C1A-4E7E-9985-C08FACB65BD8";
},
{
name = "Axis Mappings";
value = {
wght = {
100 = 100;
200 = 200;
300 = 300;
400 = 400;
500 = 500;
600 = 600;
700 = 700;
800 = 800;
900 = 900;
};
};
},
{
name = "Family Alignment Zones";
value = (
{
pos = 710;
size = 16;
},
{
pos = 530;
size = 12;
},
{
pos = 0;
size = -16;
},
{
pos = -150;
size = -12;
}
);
},
{
name = fsType;
value = (
);
},
{
name = isFixedPitch;
value = 1;
},
{
name = panose;
value = (
2,
1,
0,
9,
0,
0,
0,
0,
0,
0
);
},
{
name = "meta Table";
value = (
{
data = Latn;
tag = dlng;
},
{
data = Cyr;
tag = slng;
}
);
}
);
date = "2025-12-05 15:28:17 +0000";
familyName = "Zen Mono";
featurePrefixes = (
{
automatic = 1;
code = "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 MAH;
languagesystem latn NLD;
";
name = Languagesystems;
}
);
features = (
{
code = "feature locl;
feature subs;
feature sinf;
feature sups;
feature numr;
feature dnom;
feature frac;
feature ordn;
feature case;
feature ss02;
feature ss03;
feature ss04;
feature ss05;
feature ss06;
feature ss07;
feature ss08;
feature ss09;
feature ss10;
sub bracketleft from [bracketleft.alt bracketleft.alt.white];
sub bracketright from [bracketright.alt bracketright.alt.white];
sub braceleft from [braceleft.alt braceleft.alt.white];
sub braceright from [braceright.alt braceright.alt.white];";
tag = aalt;
},
{
automatic = 1;
code = "lookup ccmp_DFLT_1 {
@CombiningTopAccents = [acutecomb brevecomb caroncomb circumflexcomb commaturnedabovecomb dieresiscomb dotaccentcomb gravecomb hookabovecomb hungarumlautcomb macroncomb ringcomb tildecomb];
lookupflag UseMarkFilteringSet @CombiningTopAccents;
sub i' @CombiningTopAccents by idotless;
sub j' @CombiningTopAccents by jdotless;
} ccmp_DFLT_1;
lookup ccmp_DFLT_2 {
lookupflag 0;
sub brevecomb acutecomb by brevecomb_acutecomb;
sub brevecomb gravecomb by brevecomb_gravecomb;
sub brevecomb hookabovecomb by brevecomb_hookabovecomb;
sub brevecomb tildecomb by brevecomb_tildecomb;
sub circumflexcomb acutecomb by circumflexcomb_acutecomb;
sub circumflexcomb gravecomb by circumflexcomb_gravecomb;
sub circumflexcomb hookabovecomb by circumflexcomb_hookabovecomb;
sub circumflexcomb tildecomb by circumflexcomb_tildecomb;
} ccmp_DFLT_2;
lookup ccmp_Other_1 {
lookupflag 0;
@Markscomb = [strokeshortcomb slashshortcomb slashlongcomb];
@MarkscombCase = [strokeshortcomb.case slashshortcomb.case slashlongcomb.case];
sub @Markscomb @Markscomb' by @MarkscombCase;
sub @Uppercase @Markscomb' by @MarkscombCase;
} ccmp_Other_1;
lookup ccmp_Other_2 {
lookupflag 0;
sub @Markscomb' @MarkscombCase by @MarkscombCase;
sub @MarkscombCase @Markscomb' by @MarkscombCase;
} ccmp_Other_2;
";
tag = ccmp;
},
{
automatic = 1;
code = "script latn;
language AZE;
lookup locl_latn_0 {
sub i by idotaccent;
} locl_latn_0;
language CRT;
lookup locl_latn_0;
language KAZ;
lookup locl_latn_0;
language TAT;
lookup locl_latn_0;
language TRK;
lookup locl_latn_0;
script latn;
language ROM;
lookup locl_latn_1 {
sub Scedilla by Scommaaccent;
sub scedilla by scommaaccent;
sub Tcedilla by Tcommaaccent;
sub tcedilla by tcommaaccent;
} locl_latn_1;
language MOL;
lookup locl_latn_1;
script latn;
language MAH;
lookup locl_latn_2 {
sub Lcommaaccent by Lcommaaccent.loclMAH;
sub Ncommaaccent by Ncommaaccent.loclMAH;
sub lcommaaccent by lcommaaccent.loclMAH;
sub ncommaaccent by ncommaaccent.loclMAH;
sub commaaccentcomb by commaaccentcomb.loclMAH;
} locl_latn_2;
script latn;
language NLD;
lookup locl_latn_3 {
sub iacute j' by jacute;
sub Iacute J' by Jacute;
} locl_latn_3;
";
tag = locl;
},
{
automatic = 1;
code = "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;
";
tag = subs;
},
{
automatic = 1;
code = "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;
";
tag = sinf;
},
{
automatic = 1;
code = "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;
";
tag = sups;
},
{
automatic = 1;
code = "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;
";
tag = numr;
},
{
automatic = 1;
code = "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;
";
tag = dnom;
},
{
automatic = 1;
code = "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;
";
tag = frac;
},
{
automatic = 1;
code = "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;
";
tag = ordn;
},
{
automatic = 1;
code = "sub strokeshortcomb by strokeshortcomb.case;
sub slashshortcomb by slashshortcomb.case;
sub slashlongcomb by slashlongcomb.case;
";
tag = case;
},
{
automatic = 1;
code = "sub a by a.ss02;
sub aacute by aacute.ss02;
sub abreve by abreve.ss02;
sub abreveacute by abreveacute.ss02;
sub abrevedotbelow by abrevedotbelow.ss02;
sub abrevegrave by abrevegrave.ss02;
sub abrevetilde by abrevetilde.ss02;
sub acaron by acaron.ss02;
sub acircumflex by acircumflex.ss02;
sub acircumflexacute by acircumflexacute.ss02;
sub acircumflexdotbelow by acircumflexdotbelow.ss02;
sub acircumflexgrave by acircumflexgrave.ss02;
sub acircumflextilde by acircumflextilde.ss02;
sub adieresis by adieresis.ss02;
sub adotbelow by adotbelow.ss02;
sub agrave by agrave.ss02;
sub amacron by amacron.ss02;
sub aogonek by aogonek.ss02;
sub aring by aring.ss02;
sub atilde by atilde.ss02;
";
labels = (
{
language = dflt;
value = "Alt a";
}
);
tag = ss02;
},
{
automatic = 1;
code = "sub l by l.ss03;
sub lacute by lacute.ss03;
sub lcaron by lcaron.ss03;
sub lcommaaccent by lcommaaccent.ss03;
sub lslash by lslash.ss03;
";
labels = (
{
language = dflt;
value = "Alt l";
}
);
tag = ss03;
},
{
automatic = 1;
code = "sub R by R.ss04;
sub Racute by Racute.ss04;
sub Rcaron by Rcaron.ss04;
sub Rcommaaccent by Rcommaaccent.ss04;
";
labels = (
{
language = dflt;
value = "Alt R";
}
);
tag = ss04;
},
{
automatic = 1;
code = "sub g by g.ss05;
sub gbreve by gbreve.ss05;
sub gcaron by gcaron.ss05;
sub gcircumflex by gcircumflex.ss05;
sub gcommaaccent by gcommaaccent.ss05;
sub gdotaccent by gdotaccent.ss05;
sub gmacron by gmacron.ss05;
sub gstroke by gstroke.ss05;
";
labels = (
{
language = dflt;
value = "Alt g";
}
);
tag = ss05;
},
{
automatic = 1;
code = "sub G by G.ss06;
sub Gbreve by Gbreve.ss06;
sub Gcircumflex by Gcircumflex.ss06;
sub Gcommaaccent by Gcommaaccent.ss06;
sub Gdotaccent by Gdotaccent.ss06;
sub Gmacron by Gmacron.ss06;
";
labels = (
{
language = dflt;
value = "Alt G";
}
);
tag = ss06;
},
{
automatic = 1;
code = "sub upArrow by upArrow.ss07;
sub northEastArrow by northEastArrow.ss07;
sub rightArrow by rightArrow.ss07;
sub southEastArrow by southEastArrow.ss07;
sub downArrow by downArrow.ss07;
sub southWestArrow by southWestArrow.ss07;
sub leftArrow by leftArrow.ss07;
sub northWestArrow by northWestArrow.ss07;
sub leftRightArrow by leftRightArrow.ss07;
sub upDownArrow by upDownArrow.ss07;
";
labels = (
{
language = dflt;
value = "Alt arrows";
}
);
tag = ss07;
},
{
automatic = 1;
code = "sub Abrevedotbelow by Abrevedotbelow.ss08;
sub Adieresis by Adieresis.ss08;
sub Adotbelow by Adotbelow.ss08;
sub Cdotaccent by Cdotaccent.ss08;
sub Ecircumflexdotbelow by Ecircumflexdotbelow.ss08;
sub Edieresis by Edieresis.ss08;
sub Edotaccent by Edotaccent.ss08;
sub Edotbelow by Edotbelow.ss08;
sub Gdotaccent by Gdotaccent.ss08;
sub Idieresis by Idieresis.ss08;
sub Idotaccent by Idotaccent.ss08;
sub Idotbelow by Idotbelow.ss08;
sub Ocircumflexdotbelow by Ocircumflexdotbelow.ss08;
sub Odieresis by Odieresis.ss08;
sub Ohorndotbelow by Ohorndotbelow.ss08;
sub Udieresis by Udieresis.ss08;
sub Udotbelow by Udotbelow.ss08;
sub Uhorndotbelow by Uhorndotbelow.ss08;
sub Wdieresis by Wdieresis.ss08;
sub Ydieresis by Ydieresis.ss08;
sub Ydotbelow by Ydotbelow.ss08;
sub Zdotaccent by Zdotaccent.ss08;
sub Gdotaccent.ss06 by Gdotaccent.ss06.ss08;
sub abrevedotbelow by abrevedotbelow.ss08;
sub acircumflexdotbelow by acircumflexdotbelow.ss08;
sub adieresis by adieresis.ss08;
sub adotbelow by adotbelow.ss08;
sub cdotaccent by cdotaccent.ss08;
sub ecircumflexdotbelow by ecircumflexdotbelow.ss08;
sub edieresis by edieresis.ss08;
sub edotaccent by edotaccent.ss08;
sub edotbelow by edotbelow.ss08;
sub gdotaccent by gdotaccent.ss08;
sub i by i.ss08;
sub idieresis by idieresis.ss08;
sub idotaccent by idotaccent.ss08;
sub idotbelow by idotbelow.ss08;
sub iogonek by iogonek.ss08;
sub j by j.ss08;
sub ocircumflexdotbelow by ocircumflexdotbelow.ss08;
sub odieresis by odieresis.ss08;
sub ohorndotbelow by ohorndotbelow.ss08;
sub udieresis by udieresis.ss08;
sub udotbelow by udotbelow.ss08;
sub uhorndotbelow by uhorndotbelow.ss08;
sub wdieresis by wdieresis.ss08;
sub ydieresis by ydieresis.ss08;
sub ydotbelow by ydotbelow.ss08;
sub zdotaccent by zdotaccent.ss08;
sub abrevedotbelow.ss02 by abrevedotbelow.ss02.ss08;
sub acircumflexdotbelow.ss02 by acircumflexdotbelow.ss02.ss08;
sub adieresis.ss02 by adieresis.ss02.ss08;
sub adotbelow.ss02 by adotbelow.ss02.ss08;
sub gdotaccent.ss05 by gdotaccent.ss05.ss08;
sub Io-cy by Io-cy.ss08;
sub Yi-cy by Yi-cy.ss08;
sub io-cy by io-cy.ss08;
sub i-cy by i-cy.ss08;
sub yi-cy by yi-cy.ss08;
sub je-cy by je-cy.ss08;
sub period by period.ss08;
sub colon by colon.ss08;
sub semicolon by semicolon.ss08;
sub ellipsis by ellipsis.ss08;
sub exclam by exclam.ss08;
sub exclamdown by exclamdown.ss08;
sub question by question.ss08;
sub questiondown by questiondown.ss08;
sub periodcentered by periodcentered.ss08;
sub dieresiscomb by dieresiscomb.ss08;
sub dotaccentcomb by dotaccentcomb.ss08;
sub dotbelowcomb by dotbelowcomb.ss08;
sub dieresis by dieresis.ss08;
sub dotaccent by dotaccent.ss08;
";
labels = (
{
language = dflt;
value = "Rounded dot";
}
);
tag = ss08;
},
{
automatic = 1;
code = "sub zero by zero.ss09;
";
labels = (
{
language = dflt;
value = "Non-slashed zero";
}
);
tag = ss09;
},
{
code = "sub parenleft by parenleft.alt;
sub parenright by parenright.alt;
sub bracketleft by bracketleft.alt;
sub bracketright by bracketright.alt;
sub guillemetleft by guillemetleft.alt;
sub guillemetright by guillemetright.alt;
sub less by less.alt;
sub greater by greater.alt;
sub less.alt less.alt by guillemetleft.alt;
sub greater.alt greater.alt by guillemetright.alt;
";
labels = (
{
language = dflt;
value = "Alternative enclosing shapes";
}
);
tag = ss10;
},
{
code = "# </>
lookup less_slash_greater.liga {
sub SPC SPC greater' by less_slash_greater.liga;
sub SPC slash' greater by SPC;
sub less' slash greater by SPC;
} less_slash_greater.liga;
# ~=
lookup asciitilde_equal.liga {
sub SPC equal' by asciitilde_equal.liga;
sub asciitilde' equal by SPC;
} asciitilde_equal.liga;
# !?
lookup exclam_question.liga {
sub SPC question' by exclam_question.liga;
sub exclam' question by SPC;
} exclam_question.liga;
# ###
lookup numbersign_numbersign_numbersign.liga {
ignore sub numbersign numbersign' numbersign numbersign;
ignore sub numbersign' numbersign numbersign numbersign;
sub SPC SPC numbersign' by numbersign_numbersign_numbersign.liga;
sub SPC numbersign' numbersign by SPC;
sub numbersign' numbersign numbersign by SPC;
} numbersign_numbersign_numbersign.liga;
# %%
lookup percent_percent.liga {
sub SPC percent' by percent_percent.liga;
sub percent' percent by SPC;
} percent_percent.liga;
# ~@
lookup asciitilde_at.liga {
sub SPC at' by asciitilde_at.liga;
sub asciitilde' at by SPC;
} asciitilde_at.liga;
# |}
lookup bar_braceright.liga {
ignore sub bar bar' braceright;
ignore sub bar' bar braceright;
sub SPC braceright' by bar_braceright.liga;
sub bar' braceright by SPC;
} bar_braceright.liga;
# {|
lookup braceleft_bar.liga {
ignore sub braceleft braceleft' bar;
ignore sub braceleft' bar bar;
sub SPC bar' by braceleft_bar.liga;
sub braceleft' bar by SPC;
} braceleft_bar.liga;
# /=
lookup slash_equal.liga {
ignore sub slash slash' equal;
ignore sub equal slash' equal;
ignore sub slash' equal equal;
sub SPC equal' by slash_equal.liga;
sub slash' equal by SPC;
} slash_equal.liga;
# ...
lookup period_period_period.liga {
ignore sub period period' period period;
ignore sub period' period period period;
sub SPC SPC period' by period_period_period.liga;
sub SPC period' period by SPC;
sub period' period period by SPC;
} period_period_period.liga;
# <!--
lookup less_exclam_hyphen_hyphen.liga {
ignore sub less less' exclam hyphen hyphen;
ignore sub parenleft question less' exclam hyphen hyphen;
ignore sub less' exclam hyphen hyphen hyphen;
sub SPC SPC SPC hyphen' by less_exclam_hyphen_hyphen.liga;
sub SPC SPC hyphen' hyphen by SPC;
sub SPC exclam' hyphen hyphen by SPC;
sub less' exclam hyphen hyphen by SPC;
} less_exclam_hyphen_hyphen.liga;
# <<-
lookup less_less_hyphen.liga {
ignore sub less less' less hyphen;
ignore sub less' less hyphen hyphen;
sub SPC SPC hyphen' by less_less_hyphen.liga;
sub SPC less' hyphen by SPC;
sub less' less hyphen by SPC;
} less_less_hyphen.liga;
# <-
lookup less_hyphen.liga {
ignore sub less less' hyphen;
ignore sub less' hyphen hyphen;
ignore sub less' hyphen @Numeral greater;
ignore sub less' hyphen @Numeral @Numeral greater;
ignore sub less' hyphen @Numeral @Numeral @Numeral greater;
ignore sub less' hyphen less;
ignore sub less' hyphen bar;
ignore sub less' hyphen greater;
sub SPC hyphen' by less_hyphen.liga;
sub less' hyphen by SPC;
} less_hyphen.liga;
# <>
lookup less_greater.liga {
ignore sub less less' greater;
ignore sub less' greater greater;
sub SPC greater' by less_greater.liga;
sub less' greater by SPC;
} less_greater.liga;
# <=>
lookup less_equal_greater.liga {
ignore sub less less' equal greater;
ignore sub parenleft question less' equal greater;
ignore sub less' equal greater greater;
sub SPC SPC greater' by less_equal_greater.liga;
sub SPC equal' greater by SPC;
sub less' equal greater by SPC;
} less_equal_greater.liga;
# <->
lookup less_hyphen_greater.liga {
ignore sub less less' hyphen greater;
ignore sub less' hyphen greater greater;
sub SPC SPC greater' by less_hyphen_greater.liga;
sub SPC hyphen' greater by SPC;
sub less' hyphen greater by SPC;
} less_hyphen_greater.liga;
# <|||
lookup less_bar_bar_bar.liga {
ignore sub less less' bar bar bar;
ignore sub less' bar bar bar bar;
sub SPC SPC SPC bar' by less_bar_bar_bar.liga;
sub SPC SPC bar' bar by SPC;
sub SPC bar' bar bar by SPC;
sub less' bar bar bar by SPC;
} less_bar_bar_bar.liga;
# <||
lookup less_bar_bar.liga {
ignore sub less less' bar bar;
ignore sub less' bar bar bar;
ignore sub less' bar bar greater;
sub SPC SPC bar' by less_bar_bar.liga;
sub SPC bar' bar by SPC;
sub less' bar bar by SPC;
} less_bar_bar.liga;
# <|
lookup less_bar.liga {
ignore sub less less' bar;
ignore sub less' bar bar bar;
ignore sub less' bar greater;
sub SPC bar' by less_bar.liga;
sub less' bar by SPC;
} less_bar.liga;
# ->>
lookup hyphen_greater_greater.liga {
ignore sub hyphen hyphen' greater greater;
ignore sub hyphen' greater greater greater;
sub SPC SPC greater' by hyphen_greater_greater.liga;
sub SPC greater' greater by SPC;
sub hyphen' greater greater by SPC;
} hyphen_greater_greater.liga;
# -->
lookup hyphen_hyphen_greater.liga {
ignore sub bracketleft hyphen' hyphen greater;
ignore sub hyphen hyphen' hyphen greater;
ignore sub hyphen' hyphen greater greater;
sub SPC SPC greater' by hyphen_hyphen_greater.liga;
sub SPC hyphen' greater by SPC;
sub hyphen' hyphen greater by SPC;
} hyphen_hyphen_greater.liga;
# ->
lookup hyphen_greater.liga {
ignore sub bracketleft hyphen' greater;
ignore sub hyphen hyphen' greater;
ignore sub greater hyphen' greater;
ignore sub bar hyphen' greater;
ignore sub hyphen' greater greater;
ignore sub plus hyphen' greater;
sub SPC greater' by hyphen_greater.liga;
sub hyphen' greater by SPC;
} hyphen_greater.liga;
# >=
lookup greater_equal.liga {
ignore sub greater greater' equal;
ignore sub greater' equal equal;
ignore sub greater' equal greater;
ignore sub greater' equal less;
sub SPC equal' by greater_equal.liga;
sub greater' equal by SPC;
} greater_equal.liga;
# <=
lookup less_equal.liga {
ignore sub less' equal less;
ignore sub less' equal bar;
ignore sub less less' equal;
ignore sub parenleft question less' equal;
ignore sub less' equal equal;
sub SPC equal' by less_equal.liga;
sub less' equal by SPC;
} less_equal.liga;
# <<=
lookup less_less_equal.liga {
ignore sub less' less equal equal;
ignore sub less less' less equal;
sub SPC equal' by less_less_equal.liga;
sub SPC less' equal by SPC;
sub less' less equal by SPC;
} less_less_equal.liga;
# <==
lookup less_equal_equal.liga {
ignore sub less less' equal equal;
ignore sub parenleft question less' equal equal;
ignore sub less' equal equal equal;
ignore sub less' equal equal greater;
sub SPC SPC equal' by less_equal_equal.liga;
sub SPC equal' equal by SPC;
sub less' equal equal by SPC;
} less_equal_equal.liga;
# <|>
lookup less_bar_greater.liga {
ignore sub less less' bar greater;
ignore sub less' bar greater greater;
sub SPC SPC greater' by less_bar_greater.liga;
sub SPC bar' greater by SPC;
sub less' bar greater by SPC;
} less_bar_greater.liga;
# !=
lookup exclam_equal.liga {
ignore sub exclam exclam' equal;
ignore sub parenleft question exclam' equal;
ignore sub parenleft question less exclam' equal;
ignore sub equal exclam' equal;
ignore sub exclam' equal equal;
sub SPC equal' by exclam_equal.liga;
sub exclam' equal by SPC;
} exclam_equal.liga;
# !==
lookup exclam_equal_equal.liga{
ignore sub exclam exclam' equal equal;
ignore sub parenleft question exclam' equal equal;
ignore sub parenleft question less exclam' equal equal;
ignore sub exclam' equal equal equal;
sub SPC SPC equal' by exclam_equal_equal.liga;
sub SPC equal' equal by SPC;
sub exclam' equal equal by SPC;
} exclam_equal_equal.liga;
# =>
lookup equal_greater.liga {
ignore sub bracketleft equal' greater;
ignore sub equal equal' greater;
ignore sub greater equal' greater;
ignore sub bar equal' greater;
ignore sub parenleft question less equal' greater;
ignore sub parenleft question equal' greater;
ignore sub equal' greater equal;
ignore sub equal' greater greater;
sub SPC greater' by equal_greater.liga;
sub equal' greater by SPC;
} equal_greater.liga;
# ==
lookup equal_equal.liga {
ignore sub equal equal' equal;
ignore sub parenleft question less equal' equal;
ignore sub parenleft question equal' equal;
ignore sub equal' equal equal;
ignore sub equal' equal greater;
sub SPC equal' by equal_equal.liga;
sub equal' equal by SPC;
} equal_equal.liga;
# ===
lookup equal_equal_equal.liga {
ignore sub equal equal' equal equal;
ignore sub parenleft question equal' equal equal;
ignore sub less equal' equal equal;
ignore sub equal' equal equal equal;
ignore sub equal' equal equal greater;
sub SPC SPC equal' by equal_equal_equal.liga;
sub SPC equal' equal by SPC;
sub equal' equal equal by SPC;
} equal_equal_equal.liga;
# |||>
lookup bar_bar_bar_greater.liga {
ignore sub bar bar' bar bar greater;
ignore sub bar' bar bar greater greater;
sub SPC SPC SPC greater' by bar_bar_bar_greater.liga;
sub SPC SPC bar' greater by SPC;
sub SPC bar' bar greater by SPC;
sub bar' bar bar greater by SPC;
} bar_bar_bar_greater.liga;
# ||>
lookup bar_bar_greater.liga {
ignore sub bar bar' bar greater;
ignore sub less bar' bar greater;
ignore sub bar' bar greater greater;
sub SPC SPC greater' by bar_bar_greater.liga;
sub SPC bar' greater by SPC;
sub bar' bar greater by SPC;
} bar_bar_greater.liga;
# |>
lookup bar_greater.liga {
ignore sub bar bar' greater;
ignore sub bar' greater greater;
sub SPC greater' by bar_greater.liga;
sub bar' greater by SPC;
} bar_greater.liga;
#
# |=
lookup bar_equal.liga {
ignore sub bar bar' equal;
ignore sub bar' equal greater;
ignore sub bar' equal equal;
sub SPC equal' by bar_equal.liga;
sub bar' equal by SPC;
} bar_equal.liga;
# |=
lookup bar_bar_equal.liga {
ignore sub bar bar bar' equal;
ignore sub bar' equal greater;
ignore sub bar' equal equal;
sub SPC SPC equal' by bar_bar_equal.liga;
sub SPC bar' equal by SPC;
sub bar' bar equal by SPC;
} bar_bar_equal.liga;
# --
lookup hyphen_hyphen.liga {
ignore sub bracketleft hyphen' hyphen greater;
ignore sub parenleft question less exclam hyphen' hyphen;
ignore sub hyphen hyphen' hyphen;
ignore sub less hyphen' hyphen;
ignore sub hyphen' hyphen hyphen;
sub SPC hyphen' by hyphen_hyphen.liga;
sub hyphen' hyphen by SPC;
} hyphen_hyphen.liga;
# <--
lookup less_hyphen_hyphen.liga {
ignore sub less less' hyphen hyphen;
ignore sub less' hyphen hyphen hyphen;
sub SPC SPC hyphen' by less_hyphen_hyphen.liga;
sub SPC hyphen' hyphen by SPC;
sub less' hyphen hyphen by SPC;
} less_hyphen_hyphen.liga;
# ---
lookup hyphen_hyphen_hyphen.liga {
ignore sub bracketleft hyphen' hyphen hyphen greater;
ignore sub hyphen hyphen' hyphen hyphen;
ignore sub hyphen' hyphen hyphen hyphen;
sub SPC SPC hyphen' by hyphen_hyphen_hyphen.liga;
sub SPC hyphen' hyphen by SPC;
sub hyphen' hyphen hyphen by SPC;
} hyphen_hyphen_hyphen.liga;
# ??
lookup question_question.liga {
ignore sub question question' question;
ignore sub question' question question;
sub SPC question' by question_question.liga;
sub question' question by SPC;
} question_question.liga;
# ???
lookup question_question_question.liga {
ignore sub question question' question question;
ignore sub question' question question question;
sub SPC SPC question' by question_question_question.liga;
sub SPC question' question by SPC;
sub question' question question by SPC;
} question_question_question.liga;
# =/=
lookup equal_slash_equal.liga {
ignore sub equal equal' slash equal;
ignore sub parenleft question equal' slash equal;
ignore sub equal' slash equal equal;
sub SPC SPC equal' by equal_slash_equal.liga;
sub SPC slash' equal by SPC;
sub equal' slash equal by SPC;
} equal_slash_equal.liga;
# <-<
lookup less_hyphen_less.liga {
ignore sub less less' hyphen less;
ignore sub less' hyphen less less;
sub SPC SPC less' by less_hyphen_less.liga;
sub SPC hyphen' less by SPC;
sub less' hyphen less by SPC;
} less_hyphen_less.liga;
# <=<
lookup less_equal_less.liga {
ignore sub less less' equal less;
ignore sub parenleft question less' equal less;
ignore sub less' equal less less;
sub SPC SPC less' by less_equal_less.liga;
sub SPC equal' less by SPC;
sub less' equal less by SPC;
} less_equal_less.liga;
# <==>
lookup less_equal_equal_greater.liga {
ignore sub less less' equal equal greater;
ignore sub parenleft question less' equal equal greater;
ignore sub less' equal equal greater greater;
sub SPC SPC greater' by less_equal_equal_greater.liga;
sub SPC SPC equal' greater by SPC;
sub SPC equal' equal greater by SPC;
sub less' equal equal greater by SPC;
} less_equal_equal_greater.liga;
# ==>
lookup equal_equal_greater.liga {
ignore sub bracketleft equal' equal greater;
ignore sub equal equal' equal greater;
ignore sub parenleft question less equal' equal greater;
ignore sub parenleft question equal' equal greater;
ignore sub equal' equal greater greater;
sub SPC SPC greater' by equal_equal_greater.liga;
sub SPC equal' greater by SPC;
sub equal' equal greater by SPC;
} equal_equal_greater.liga;
# =>>
lookup equal_greater_greater.liga {
ignore sub equal equal' greater greater;
ignore sub parenleft question equal' greater greater;
ignore sub equal' greater greater greater;
sub SPC SPC greater' by equal_greater_greater.liga;
sub SPC greater' greater by SPC;
sub equal' greater greater by SPC;
} equal_greater_greater.liga;
# >=>
lookup greater_equal_greater.liga {
ignore sub greater greater' equal greater;
ignore sub greater' equal greater greater;
sub SPC SPC greater' by greater_equal_greater.liga;
sub SPC equal' greater by SPC;
sub greater' equal greater by SPC;
} greater_equal_greater.liga;
# >>=
lookup greater_greater_equal.liga {
ignore sub greater greater' greater equal;
ignore sub greater' greater equal equal;
sub SPC SPC equal' by greater_greater_equal.liga;
sub SPC greater' equal by SPC;
sub greater' greater equal by SPC;
} greater_greater_equal.liga;
# >>-
lookup greater_greater_hyphen.liga {
ignore sub greater greater' greater hyphen;
ignore sub greater' greater hyphen hyphen;
sub SPC SPC hyphen' by greater_greater_hyphen.liga;
sub SPC greater' hyphen by SPC;
sub greater' greater hyphen by SPC;
} greater_greater_hyphen.liga;
# >-
lookup greater_hyphen.liga {
ignore sub greater greater' hyphen;
ignore sub greater' hyphen hyphen;
ignore sub greater' hyphen greater;
ignore sub greater' hyphen less;
sub SPC hyphen' by greater_hyphen.liga;
sub greater' hyphen by SPC;
} greater_hyphen.liga;
# >->
lookup greater_hyphen_greater.liga {
ignore sub greater greater' hyphen greater;
ignore sub greater' hyphen greater greater;
sub SPC SPC greater' by greater_hyphen_greater.liga;
sub SPC hyphen' greater by SPC;
sub greater' hyphen greater by SPC;
} greater_hyphen_greater.liga;
# <~
lookup less_asciitilde.liga {
ignore sub less less' asciitilde;
ignore sub less' asciitilde asciitilde;
ignore sub less' asciitilde greater;
sub SPC asciitilde' by less_asciitilde.liga;
sub less' asciitilde by SPC;
} less_asciitilde.liga;
# ~~
lookup asciitilde_asciitilde.liga {
ignore sub asciitilde asciitilde' asciitilde;
ignore sub less asciitilde' asciitilde;
ignore sub asciitilde' asciitilde asciitilde;
ignore sub asciitilde' asciitilde greater;
sub SPC asciitilde' by asciitilde_asciitilde.liga;
sub asciitilde' asciitilde by SPC;
} asciitilde_asciitilde.liga;
# <~>
lookup less_asciitilde_greater.liga {
ignore sub less less' asciitilde greater;
ignore sub less' asciitilde greater greater;
sub SPC SPC greater' by less_asciitilde_greater.liga;
sub SPC asciitilde' greater by SPC;
sub less' asciitilde greater by SPC;
} less_asciitilde_greater.liga;
# -<
lookup hyphen_less.liga {
ignore sub hyphen hyphen' less;
ignore sub less hyphen' less;
ignore sub greater hyphen' less;
ignore sub hyphen' less less;
sub SPC less' by hyphen_less.liga;
sub hyphen' less by SPC;
} hyphen_less.liga;
# -<<
lookup hyphen_less_less.liga {
ignore sub hyphen hyphen' less less;
ignore sub hyphen' less less less;
sub SPC SPC less' by hyphen_less_less.liga;
sub SPC less' less by SPC;
sub hyphen' less less by SPC;
} hyphen_less_less.liga;
# =<<
lookup equal_less_less.liga {
ignore sub equal equal' less less;
ignore sub parenleft question equal' less less;
ignore sub equal' less less less;
sub SPC SPC less' by equal_less_less.liga;
sub SPC less' less by SPC;
sub equal' less less by SPC;
} equal_less_less.liga;
# |->
lookup bar_hyphen_greater.liga {
ignore sub bar bar' hyphen greater;
ignore sub bar' hyphen greater greater;
sub SPC SPC greater' by bar_hyphen_greater.liga;
sub SPC hyphen' greater by SPC;
sub bar' hyphen greater by SPC;
} bar_hyphen_greater.liga;
# <~~
lookup less_asciitilde_asciitilde.liga {
ignore sub less less' asciitilde asciitilde;
ignore sub less' asciitilde asciitilde asciitilde;
ignore sub less' asciitilde asciitilde greater;
sub SPC SPC asciitilde' by less_asciitilde_asciitilde.liga;
sub SPC asciitilde' asciitilde by SPC;
sub less' asciitilde asciitilde by SPC;
} less_asciitilde_asciitilde.liga;
# -~
lookup hyphen_asciitilde.liga {
ignore sub hyphen hyphen' asciitilde;
ignore sub hyphen' asciitilde asciitilde;
ignore sub hyphen' asciitilde greater;
sub SPC asciitilde' by hyphen_asciitilde.liga;
sub hyphen' asciitilde by SPC;
} hyphen_asciitilde.liga;
# ~~>
lookup asciitilde_asciitilde_greater.liga {
ignore sub asciitilde asciitilde' asciitilde greater;
ignore sub asciitilde' asciitilde greater greater;
sub SPC SPC greater' by asciitilde_asciitilde_greater.liga;
sub SPC asciitilde' greater by SPC;
sub asciitilde' asciitilde greater by SPC;
} asciitilde_asciitilde_greater.liga;
# ~>
lookup asciitilde_greater.liga {
ignore sub asciitilde asciitilde' greater;
ignore sub asciitilde' greater greater;
sub SPC greater' by asciitilde_greater.liga;
sub asciitilde' greater by SPC;
} asciitilde_greater.liga;
# ~-
lookup asciitilde_hyphen.liga {
ignore sub asciitilde asciitilde' hyphen;
ignore sub asciitilde' hyphen hyphen;
sub SPC hyphen' by asciitilde_hyphen.liga;
sub asciitilde' hyphen by SPC;
} asciitilde_hyphen.liga;
# :=
lookup colon_equal.liga {
sub SPC equal' by colon_equal.liga;
sub colon' equal by SPC;
} colon_equal.liga;
# ..=
lookup period_period_equal.liga {
sub SPC SPC equal' by period_period_equal.liga;
sub SPC period' equal by SPC;
sub period' period equal by SPC;
} period_period_equal.liga;
# .=
lookup period_equal.liga {
ignore sub period period' equal;
ignore sub period' period equal;
sub SPC equal' by period_equal.liga;
sub period' equal by SPC;
} period_equal.liga;
";
labels = (
{
language = dflt;
value = "Coding ligatures";
}
);
notes = "# --->
lookup hyphen_hyphen_hyphen_greater.liga {
ignore sub bracketleft hyphen' hyphen hyphen greater;
ignore sub hyphen hyphen' hyphen greater;
ignore sub hyphen' hyphen greater greater;
sub SPC SPC SPC greater' by hyphen_hyphen_hyphen_greater.liga;
sub SPC SPC hyphen' greater by SPC;
sub SPC hyphen' hyphen greater by SPC;
sub hyphen' hyphen hyphen greater by SPC;
} hyphen_hyphen_hyphen_greater.liga;
lookup intial_run {
sub @Default' @Default by @Initial;
} intial_run;
lookup medial_run {
sub @Medial @Initial' by @Medial;
sub @Initial @Initial' by @Medial;
} medial_run;
lookup final_run {
sub @Initial @Default' by @Final;
sub @Medial @Default' by @Final;
} final_run;
# [|
lookup bracketleft_bar.liga {
ignore sub bracketleft bracketleft' bar;
sub SPC bar' by bracketleft_bar.liga;
sub bracketleft' bar by SPC;
} bracketleft_bar.liga;
# |]
lookup bar_bracketright.liga {
ignore sub bar' bracketright bracketright;
sub SPC bracketright' by bar_bracketright.liga;
sub bar' bracketright by SPC;
} bar_bracketright.liga;
# ***
lookup asterisk_asterisk_asterisk.liga {
ignore sub asterisk asterisk' asterisk asterisk;
ignore sub asterisk' asterisk asterisk asterisk;
sub SPC SPC asterisk' by asterisk_asterisk_asterisk.liga;
sub SPC asterisk' asterisk by SPC;
sub asterisk' asterisk asterisk by SPC;
} asterisk_asterisk_asterisk.liga;
# .?
lookup period_question.liga {
ignore sub period period' question;
ignore sub period' question question;
sub SPC question' by period_question.liga;
sub period' question by SPC;
} period_question.liga;
# ..
lookup period_period.liga {
ignore sub period period' period;
ignore sub period' period period;
ignore sub period' period less;
sub SPC period' by period_period.liga;
sub period' period by SPC;
} period_period.liga;
# ..<
lookup period_period_less.liga {
ignore sub period period' period less;
ignore sub period' period less less;
sub SPC SPC less' by period_period_less.liga;
sub SPC period' less by SPC;
sub period' period less by SPC;
} period_period_less.liga;
# <#--
lookup less_numbersign_hyphen_hyphen.liga {
ignore sub less less' numbersign hyphen hyphen;
ignore sub less' numbersign hyphen hyphen hyphen;
sub SPC SPC SPC hyphen' by less_numbersign_hyphen_hyphen.liga;
sub SPC SPC hyphen' hyphen by SPC;
sub SPC numbersign' hyphen hyphen by SPC;
sub less' numbersign hyphen hyphen by SPC;
} less_numbersign_hyphen_hyphen.liga;
# <<~
lookup less_less_asciitilde.liga {
ignore sub less less' less asciitilde;
ignore sub less' less asciitilde asciitilde;
sub SPC SPC asciitilde' by less_less_asciitilde.liga;
sub SPC less' asciitilde by SPC;
sub less' less asciitilde by SPC;
} less_less_asciitilde.liga;
# -|
lookup hyphen_bar.liga {
ignore sub hyphen hyphen' bar;
ignore sub less hyphen' bar;
ignore sub hyphen' bar bar;
sub SPC bar' by hyphen_bar.liga;
sub hyphen' bar by SPC;
} hyphen_bar.liga;
# _|_
lookup underscore_bar_underscore.liga {
ignore sub underscore underscore' bar underscore;
ignore sub underscore' bar underscore underscore;
sub SPC SPC underscore' by underscore_bar_underscore.liga;
sub SPC bar' underscore by SPC;
sub underscore' bar underscore by SPC;
} underscore_bar_underscore.liga;
# !!
lookup exclam_exclam.liga {
ignore sub exclam exclam' exclam;
ignore sub parenleft question exclam' exclam;
ignore sub parenleft question less exclam' exclam;
ignore sub exclam' exclam exclam;
sub SPC exclam' by exclam_exclam.liga;
sub exclam' exclam by SPC;
} exclam_exclam.liga;
# =!=
lookup equal_exclam_equal.liga{
ignore sub equal equal' exclam equal;
ignore sub parenleft question equal' exclam equal;
ignore sub equal' exclam equal equal;
sub SPC SPC equal' by equal_exclam_equal.liga;
sub SPC exclam' equal by SPC;
sub equal' exclam equal by SPC;
} equal_exclam_equal.liga;
# ::
lookup colon_colon.liga {
ignore sub colon colon' colon;
ignore sub colon' colon colon;
ignore sub colon' colon equal;
sub SPC colon' by colon_colon.liga;
sub colon' colon by SPC;
} colon_colon.liga;
# ;;
lookup semicolon_semicolon.liga {
ignore sub semicolon semicolon' semicolon;
ignore sub semicolon' semicolon semicolon;
sub SPC semicolon' by semicolon_semicolon.liga;
sub semicolon' semicolon by SPC;
} semicolon_semicolon.liga;
# ;;;
lookup semicolon_semicolon_semicolon.liga {
ignore sub semicolon semicolon' semicolon semicolon;
ignore sub semicolon' semicolon semicolon semicolon;
sub SPC SPC semicolon' by semicolon_semicolon_semicolon.liga;
sub SPC semicolon' semicolon by SPC;
sub semicolon' semicolon semicolon by SPC;
} semicolon_semicolon_semicolon.liga;
# :::
lookup colon_colon_colon.liga {
ignore sub colon colon' colon colon;
ignore sub colon' colon colon colon;
sub SPC SPC colon' by colon_colon_colon.liga;
sub SPC colon' colon by SPC;
sub colon' colon colon by SPC;
} colon_colon_colon.liga;
||-
lookup bar_bar_hyphen.liga {
ignore sub bar bar' bar hyphen hyphen;
ignore sub bar' bar bar hyphen;
sub SPC SPC hyphen' by bar_bar_hyphen.liga;
sub SPC bar' hyphen by SPC;
sub bar' bar hyphen by SPC;
} bar_bar_hyphen.liga;
# ||
lookup bar_bar.liga {
ignore sub bar bar' bar;
ignore sub bar' bar bar;
ignore sub bracketleft bar' bar;
ignore sub bar' bar bracketright;
sub SPC bar' by bar_bar.liga;
sub bar' bar by SPC;
} bar_bar.liga;
# |-
lookup bar_hyphen.liga {
ignore sub bar bar' hyphen;
ignore sub bar' hyphen hyphen;
ignore sub bar' hyphen greater;
sub SPC hyphen' by bar_hyphen.liga;
sub bar' hyphen by SPC;
} bar_hyphen.liga;
# ?.
lookup question_period.liga {
ignore sub question question' period;
ignore sub question' period period;
sub SPC period' by question_period.liga;
sub question' period by SPC;
} question_period.liga;
# <-|
lookup less_hyphen_bar.liga {
ignore sub less less' hyphen bar;
ignore sub less' hyphen bar bar;
sub SPC SPC bar' by less_hyphen_bar.liga;
sub SPC hyphen' bar by SPC;
sub less' hyphen bar by SPC;
} less_hyphen_bar.liga;
# <=|
lookup less_equal_bar.liga {
ignore sub less less' equal bar;
ignore sub parenleft question less' equal bar;
ignore sub less' equal bar bar;
sub SPC SPC bar' by less_equal_bar.liga;
sub SPC equal' bar by SPC;
sub less' equal bar by SPC;
} less_equal_bar.liga;
# |=>
lookup bar_equal_greater.liga {
ignore sub bar bar' equal greater;
ignore sub bar' equal greater greater;
sub SPC SPC greater' by bar_equal_greater.liga;
sub SPC equal' greater by SPC;
sub bar' equal greater by SPC;
} bar_equal_greater.liga;
# : @UppercaseRelated :
lookup colon_UppercaseRelated_colon {
ignore sub @UppercaseRelated colon' @NotUppercaseRelated;
ignore sub @NotUppercaseRelated colon' @UppercaseRelated;
sub @UppercaseRelated colon' by colon.case;
sub colon' @UppercaseRelated by colon.case;
} colon_UppercaseRelated_colon;
";
tag = ss11;
}
);
fontMaster = (
{
axesValues = (
100
);
customParameters = (
{
name = hheaAscender;
value = 1005;
},
{
name = hheaDescender;
value = -295;
},
{
name = hheaLineGap;
value = 0;
},
{
name = typoAscender;
value = 1005;
},
{
name = typoDescender;
value = -295;
},
{
name = typoLineGap;
value = 0;
},
{
name = winAscent;
value = 1088;
},
{
name = winDescent;
value = 394;
},
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 100;
}
);
}
);
guides = (
{
pos = (552,36);
},
{
angle = 78;
pos = (244,0);
},
{
angle = 78;
pos = (96,530);
}
);
iconName = Light;
id = "EE2FFE84-06F1-4AFB-BBEC-60D09A436D14";
metricValues = (
{
over = 16;
pos = 710;
},
{
over = 12;
pos = 530;
},
{
over = -16;
},
{
over = -12;
pos = -150;
},
{
pos = 12;
}
);
name = "Thin Italic";
stemValues = (
32,
30,
32,
30
);
userData = {
GSCornerRadius = 88;
GSExtrudeAngle = 30;
GSExtrudeOffset = 15;
GSOffsetHorizontal = 10;
GSOffsetProportional = 1;
GSOffsetVertical = -15;
};
},
{
axesValues = (
400
);
customParameters = (
{
name = hheaAscender;
value = 1005;
},
{
name = hheaDescender;
value = -295;
},
{
name = hheaLineGap;
value = 0;
},
{
name = typoAscender;
value = 1005;
},
{
name = typoDescender;
value = -295;
},
{
name = typoLineGap;
value = 0;
},
{
name = winAscent;
value = 1088;
},
{
name = winDescent;
value = 394;
},
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 400;
}
);
}
);
guides = (
{
pos = (52,342);
},
{
angle = 78;
pos = (45,0);
},
{
pos = (-1,0);
},
{
angle = 78;
pos = (244,0);
}
);
id = "574EE4B9-5C1A-4E7E-9985-C08FACB65BD8";
metricValues = (
{
over = 16;
pos = 710;
},
{
over = 12;
pos = 530;
},
{
over = -16;
},
{
over = -12;
pos = -150;
},
{
pos = 12;
}
);
name = Italic;
stemValues = (
90,
84,
84,
80
);
},
{
axesValues = (
900
);
customParameters = (
{
name = hheaAscender;
value = 1005;
},
{
name = hheaDescender;
value = -295;
},
{
name = hheaLineGap;
value = 0;
},
{
name = typoAscender;
value = 1005;
},
{
name = typoDescender;
value = -295;
},
{
name = typoLineGap;
value = 0;
},
{
name = winAscent;
value = 1088;
},
{
name = winDescent;
value = 394;
},
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 900;
}
);
}
);
guides = (
{
pos = (251,376);
},
{
pos = (317,48);
},
{
angle = 78;
pos = (67,540);
},
{
angle = 78;
pos = (244,0);
}
);
iconName = Bold;
id = "58B1DC7A-69F8-4375-AD2E-AC5103CCF536";
metricValues = (
{
over = 16;
pos = 710;
},
{
over = 12;
pos = 540;
},
{
over = -16;
},
{
over = -12;
pos = -150;
},
{
pos = 12;
}
);
name = "Black Italic";
stemValues = (
154,
142,
132,
126
);
}
);
instances = (
{
axesValues = (
100
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 100;
}
);
}
);
instanceInterpolations = {
"EE2FFE84-06F1-4AFB-BBEC-60D09A436D14" = 1;
};
isItalic = 1;
name = "Thin Italic";
weightClass = 100;
},
{
axesValues = (
200
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 200;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 0.33333;
"EE2FFE84-06F1-4AFB-BBEC-60D09A436D14" = 0.66667;
};
isItalic = 1;
name = "ExtraLight Italic";
weightClass = 200;
},
{
axesValues = (
300
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 300;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 0.66667;
"EE2FFE84-06F1-4AFB-BBEC-60D09A436D14" = 0.33333;
};
isItalic = 1;
name = "Light Italic";
weightClass = 300;
},
{
axesValues = (
400
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 400;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 1;
};
isItalic = 1;
name = Italic;
},
{
axesValues = (
500
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 500;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 0.8;
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = 0.2;
};
isItalic = 1;
name = "Medium Italic";
weightClass = 500;
},
{
axesValues = (
600
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 600;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 0.6;
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = 0.4;
};
isItalic = 1;
name = "SemiBold Italic";
weightClass = 600;
},
{
axesValues = (
700
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 700;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 0.4;
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = 0.6;
};
isBold = 1;
isItalic = 1;
name = "Bold Italic";
weightClass = 700;
},
{
axesValues = (
800
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 800;
}
);
}
);
instanceInterpolations = {
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = 0.2;
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = 0.8;
};
isItalic = 1;
name = "ExtraBold Italic";
weightClass = 800;
},
{
axesValues = (
900
);
customParameters = (
{
name = "Axis Location";
value = (
{
Axis = Weight;
Location = 900;
}
);
}
);
instanceInterpolations = {
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = 1;
};
isItalic = 1;
name = "Black Italic";
weightClass = 900;
}
);
kerningLTR = {
"EE2FFE84-06F1-4AFB-BBEC-60D09A436D14" = {
"@MMK_L_B" = {
t = -20;
};
"@MMK_L_C" = {
"@MMK_R_T" = -15;
};
"@MMK_L_F" = {
"@MMK_R_J" = -60;
"@MMK_R_t" = -10;
"@MMK_R_x" = -10;
};
"@MMK_L_G" = {
"@MMK_R_T" = -10;
};
"@MMK_L_L" = {
"@MMK_R_O" = -30;
"@MMK_R_T" = -100;
"@MMK_R_V" = -80;
"@MMK_R_Y" = -70;
"@MMK_R_t" = -30;
"@MMK_R_v" = -40;
};
"@MMK_L_O" = {
"@MMK_R_A" = -20;
"@MMK_R_T" = -20;
"@MMK_R_V" = -15;
"@MMK_R_X" = -40;
"@MMK_R_comma" = -20;
"@MMK_R_f" = -10;
"@MMK_R_j" = -20;
"@MMK_R_period" = -20;
"@MMK_R_v" = -15;
};
"@MMK_L_P" = {
"@MMK_R_A" = -50;
"@MMK_R_J" = -80;
"@MMK_R_o" = -20;
};
"@MMK_L_R" = {
"@MMK_R_V" = -30;
"@MMK_R_o" = -12;
};
"@MMK_L_T" = {
"@MMK_R_J" = -130;
"@MMK_R_O" = -20;
"@MMK_R_a" = -20;
"@MMK_R_f" = -20;
"@MMK_R_o" = -70;
"@MMK_R_v" = -10;
"@MMK_R_x" = -20;
A = -70;
};
"@MMK_L_U" = {
"@MMK_R_A" = -10;
};
"@MMK_L_V" = {
"@MMK_R_A" = -50;
"@MMK_R_J" = -80;
"@MMK_R_O" = -15;
"@MMK_R_a" = -20;
"@MMK_R_o" = -50;
};
"@MMK_L_X" = {
"@MMK_R_O" = -40;
"@MMK_R_o" = -50;
"@MMK_R_v" = -30;
};
"@MMK_L_Y" = {
"@MMK_R_a" = -40;
"@MMK_R_n" = -20;
"@MMK_R_o" = -50;
"@MMK_R_u" = -10;
J = -50;
};
"@MMK_L_Z" = {
"@MMK_R_O" = -20;
};
"@MMK_L_d" = {
"@MMK_R_j" = -10;
};
"@MMK_L_f" = {
"@MMK_R_a" = -20;
"@MMK_R_o" = -30;
};
"@MMK_L_l" = {
"@MMK_R_a" = -5;
"@MMK_R_o" = -10;
"@MMK_R_u" = -5;
"@MMK_R_v" = -10;
};
"@MMK_L_n" = {
"@MMK_R_T" = -40;
"@MMK_R_V" = -20;
"@MMK_R_X" = -10;
"@MMK_R_Y" = -40;
"@MMK_R_f" = -15;
"@MMK_R_o" = 0;
"@MMK_R_v" = -20;
"@MMK_R_x" = -10;
};
"@MMK_L_o" = {
"@MMK_R_A" = -10;
"@MMK_R_T" = -70;
"@MMK_R_V" = -50;
"@MMK_R_Y" = -50;
"@MMK_R_f" = -20;
"@MMK_R_j" = -10;
"@MMK_R_v" = -25;
"@MMK_R_x" = -30;
};
"@MMK_L_period" = {
"@MMK_R_O" = -20;
};
"@MMK_L_r" = {
"@MMK_R_A" = -30;
"@MMK_R_comma" = -60;
"@MMK_R_f" = -10;
"@MMK_R_j" = -20;
"@MMK_R_period" = -40;
};
"@MMK_L_topQ" = {
"@MMK_R_comma" = -40;
};
"@MMK_L_u" = {
"@MMK_R_Y" = -20;
};
"@MMK_L_v" = {
"@MMK_R_A" = -50;
"@MMK_R_O" = -15;
"@MMK_R_T" = -10;
"@MMK_R_a" = -20;
"@MMK_R_o" = -25;
};
"@MMK_L_x" = {
"@MMK_R_O" = -10;
"@MMK_R_T" = -20;
"@MMK_R_a" = -10;
"@MMK_R_j" = -10;
"@MMK_R_o" = -30;
"@MMK_R_u" = -20;
};
F = {
"@MMK_R_f" = -10;
"@MMK_R_j" = -20;
};
r = {
"@MMK_R_o" = -40;
};
};
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = {
"@MMK_L_A" = {
"@MMK_R_J" = -10;
"@MMK_R_O" = -20;
"@MMK_R_T" = -100;
"@MMK_R_U" = -10;
"@MMK_R_V" = -50;
"@MMK_R_o" = -10;
"@MMK_R_v" = -50;
};
"@MMK_L_B" = {
"@MMK_R_T" = -20;
"@MMK_R_V" = -20;
"@MMK_R_f" = -20;
"@MMK_R_j" = -10;
t = -20;
};
"@MMK_L_C" = {
"@MMK_R_T" = -15;
};
"@MMK_L_F" = {
"@MMK_R_J" = -60;
"@MMK_R_t" = -10;
"@MMK_R_x" = -10;
};
"@MMK_L_G" = {
"@MMK_R_T" = -10;
};
"@MMK_L_L" = {
"@MMK_R_O" = -30;
"@MMK_R_T" = -100;
"@MMK_R_V" = -80;
"@MMK_R_Y" = -70;
"@MMK_R_t" = -30;
"@MMK_R_v" = -40;
};
"@MMK_L_O" = {
"@MMK_R_A" = -20;
"@MMK_R_T" = -20;
"@MMK_R_V" = -15;
"@MMK_R_X" = -40;
"@MMK_R_comma" = -20;
"@MMK_R_f" = -10;
"@MMK_R_j" = -20;
"@MMK_R_period" = -20;
"@MMK_R_v" = -15;
};
"@MMK_L_P" = {
"@MMK_R_A" = -50;
"@MMK_R_J" = -80;
"@MMK_R_o" = -20;
};
"@MMK_L_R" = {
"@MMK_R_V" = -30;
"@MMK_R_o" = -12;
};
"@MMK_L_T" = {
"@MMK_R_J" = -130;
"@MMK_R_O" = -20;
"@MMK_R_a" = -20;
"@MMK_R_f" = -20;
"@MMK_R_o" = -70;
"@MMK_R_v" = -10;
"@MMK_R_x" = -20;
A = -70;
};
"@MMK_L_U" = {
"@MMK_R_A" = -10;
};
"@MMK_L_V" = {
"@MMK_R_A" = -50;
"@MMK_R_J" = -80;
"@MMK_R_O" = -15;
"@MMK_R_a" = -20;
"@MMK_R_o" = -50;
};
"@MMK_L_X" = {
"@MMK_R_O" = -40;
"@MMK_R_o" = -50;
"@MMK_R_v" = -30;
};
"@MMK_L_Y" = {
"@MMK_R_a" = -40;
"@MMK_R_n" = -20;
"@MMK_R_o" = -50;
"@MMK_R_u" = -10;
J = -50;
};
"@MMK_L_Z" = {
"@MMK_R_O" = -20;
};
"@MMK_L_d" = {
"@MMK_R_j" = -10;
};
"@MMK_L_f" = {
"@MMK_R_a" = -20;
"@MMK_R_o" = -30;
};
"@MMK_L_l" = {
"@MMK_R_a" = -5;
"@MMK_R_o" = -10;
"@MMK_R_u" = -5;
"@MMK_R_v" = -10;
};
"@MMK_L_n" = {
"@MMK_R_T" = -40;
"@MMK_R_V" = -20;
"@MMK_R_X" = -10;
"@MMK_R_Y" = -40;
"@MMK_R_f" = -15;
"@MMK_R_o" = 0;
"@MMK_R_v" = -20;
"@MMK_R_x" = -10;
};
"@MMK_L_o" = {
"@MMK_R_A" = -10;
"@MMK_R_T" = -70;
"@MMK_R_V" = -50;
"@MMK_R_Y" = -50;
"@MMK_R_f" = -20;
"@MMK_R_j" = -10;
"@MMK_R_v" = -25;
"@MMK_R_x" = -30;
};
"@MMK_L_period" = {
"@MMK_R_O" = -20;
};
"@MMK_L_r" = {
"@MMK_R_A" = -30;
"@MMK_R_comma" = -60;
"@MMK_R_f" = -10;
"@MMK_R_j" = -20;
"@MMK_R_period" = -40;
};
"@MMK_L_topQ" = {
"@MMK_R_comma" = -40;
};
"@MMK_L_u" = {
"@MMK_R_Y" = -20;
};
"@MMK_L_v" = {
"@MMK_R_A" = -50;
"@MMK_R_O" = -15;
"@MMK_R_T" = -10;
"@MMK_R_a" = -20;
"@MMK_R_o" = -25;
};
"@MMK_L_x" = {
"@MMK_R_O" = -10;
"@MMK_R_T" = -20;
"@MMK_R_a" = -10;
"@MMK_R_j" = -10;
"@MMK_R_o" = -30;
"@MMK_R_u" = -20;
};
F = {
"@MMK_R_f" = -10;
"@MMK_R_j" = -20;
};
r = {
"@MMK_R_o" = -40;
};
};
};
metrics = (
{
type = "cap height";
},
{
type = "x-height";
},
{
type = baseline;
},
{
type = descender;
},
{
type = "italic angle";
}
);
properties = (
{
key = copyrights;
values = (
{
language = dflt;
value = "Copyright 2026 Hanzo AI, Inc. (https://git.hanzo.ai/hanzoai/font)";
}
);
},
{
key = designers;
values = (
{
language = dflt;
value = "Hanzo AI, Inc.";
}
);
},
{
key = designerURL;
value = "https://hanzo.ai";
},
{
key = licenses;
values = (
{
language = dflt;
value = "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://openfontlicense.org";
}
);
},
{
key = licenseURL;
value = "https://openfontlicense.org";
},
{
key = manufacturers;
values = (
{
language = dflt;
value = "Hanzo AI, Inc.";
}
);
},
{
key = manufacturerURL;
value = "https://hanzo.ai";
},
{
key = vendorID;
value = "HNZO";
}
);
stems = (
{
name = Upper_H;
},
{
name = Lower_H;
},
{
horizontal = 1;
name = Upper_V;
},
{
horizontal = 1;
name = Lower_V;
}
);
unitsPerEm = 1000;
userData = {
GSDimensionPlugin.Dimensions = {
"37DC72B3-BCF2-46ED-AAD5-F0285A86700E" = {
HH = "150";
HV = "170";
OH = "150";
OV = "180";
nV = "164";
nd = "140";
oH = "140";
oV = "174";
tH = "130";
};
"574EE4B9-5C1A-4E7E-9985-C08FACB65BD8" = {
HH = "84";
HV = "86";
OH = "84";
OV = "90";
cydeH = "74";
nV = "84";
nd = "74";
oH = "80";
oV = "88";
tH = "74";
};
"58B1DC7A-69F8-4375-AD2E-AC5103CCF536" = {
HH = "158";
HV = "180";
OH = "154";
OV = "184";
cydeH = "125";
nV = "170";
nd = "142";
oH = "146";
oV = "176";
tH = "130";
};
"EE2FFE84-06F1-4AFB-BBEC-60D09A436D14" = {
HH = "30";
HV = "32";
OH = "32";
OV = "34";
nV = "30";
nd = "30";
oH = "30";
oV = "32";
tH = "28";
};
m01 = {
HH = "86";
HV = "88";
OH = "86";
OV = "92";
nV = "86";
nd = "76";
oH = "82";
oV = "90";
tH = "76";
};
};
backdropGlyphLib = {
A = (
(
O,
0,
0
)
);
AE = (
(
A,
0,
0
),
(
E,
0,
0
),
(
OE,
1,
0
)
);
B = (
(
D,
1,
0
),
(
E,
1,
0
),
(
H,
0,
0
),
(
P,
0,
0
),
(
R,
0,
0
),
(
Germandbls,
0,
0
),
(
germandbls,
0,
0
),
(
three,
0,
0
),
(
eight,
0,
0
),
(
E,
1,
0
)
);
C = (
(
D,
0,
0
),
(
G,
1,
0
),
(
O,
1,
0
),
(
Q,
0,
0
)
);
D = (
(
B,
0,
0
),
(
C,
0,
0
),
(
E,
1,
0
),
(
G,
0,
0
),
(
O,
0,
0
),
(
Q,
0,
0
)
);
E = (
(
B,
1,
0
),
(
D,
0,
0
),
(
F,
1,
0
),
(
H,
0,
0
),
(
C,
1,
0
)
);
Eng = (
(
N,
1,
0
),
(
j,
1,
0
)
);
F = (
(
E,
1,
0
),
(
H,
0,
0
)
);
G = (
(
A,
0,
0
),
(
C,
0,
0
),
(
D,
0,
0
),
(
H,
0,
0
),
(
O,
1,
0
),
(
Q,
0,
0
),
(
x,
0,
0
)
);
Germandbls = (
(
B,
0,
0
),
(
S,
0,
0
),
(
T,
0,
0
),
(
germandbls,
0,
0
),
(
three,
1,
0
)
);
H = (
(
B,
0,
0
),
(
D,
0,
0
),
(
E,
0,
0
),
(
F,
0,
0
),
(
I,
0,
0
),
(
J,
0,
0
),
(
K,
0,
0
),
(
L,
0,
0
),
(
M,
0,
0
),
(
N,
1,
0
),
(
P,
0,
0
),
(
R,
0,
0
),
(
U,
1,
0
)
);
I = (
(
B,
0,
0
),
(
D,
0,
0
),
(
E,
0,
0
),
(
F,
0,
0
),
(
H,
0,
0
),
(
J,
0,
0
),
(
K,
0,
0
),
(
L,
0,
0
),
(
M,
0,
0
),
(
N,
0,
0
),
(
P,
0,
0
),
(
R,
0,
0
),
(
T,
1,
0
),
(
U,
0,
0
),
(
Y,
1,
0
),
(
i,
0,
0
),
(
l,
1,
0
),
(
one,
1,
0
)
);
I.ss01 = (
(
T,
1,
0
)
);
IJ = (
(
I,
0,
0
),
(
J,
1,
0
),
(
U,
1,
0
)
);
J = (
(
I,
1,
0
),
(
U,
0,
0
)
);
K = (
(
B,
0,
0
),
(
H,
0,
0
),
(
I,
1,
0
),
(
R,
0,
0
),
(
X,
0,
0
),
(
Y,
0,
0
)
);
L = (
(
E,
0,
0
),
(
H,
0,
0
),
(
I,
0,
0
)
);
Lcaron = (
(
dcaron,
1,
0
)
);
M = (
(
H,
0,
0
),
(
I,
0,
0
),
(
O,
1,
0
),
(
N,
0,
0
),
(
V,
0,
0
),
(
W,
0,
0
)
);
N = (
(
H,
1,
0
),
(
I,
0,
0
),
(
M,
0,
0
),
(
U,
1,
0
)
);
O = (
(
C,
1,
0
),
(
D,
0,
0
),
(
G,
0,
0
),
(
Q,
0,
0
),
(
zero,
0,
0
),
(
H,
0,
0
)
);
OE = (
(
E,
0,
0
),
(
O,
0,
0
),
(
OE,
0,
0
)
);
Oslash = (
(
O,
1,
0
),
(
Q,
0,
0
)
);
P = (
(
B,
1,
0
),
(
F,
1,
0
),
(
R,
1,
0
)
);
Q = (
(
C,
0,
0
),
(
D,
0,
0
),
(
G,
0,
0
),
(
O,
1,
0
),
(
R,
0,
0
)
);
R = (
(
B,
0,
0
),
(
F,
0,
0
),
(
P,
0,
0
),
(
Q,
0,
0
),
(
X,
0,
0
),
(
P,
1,
0
)
);
R.001 = (
(
A,
1,
0
)
);
S = (
(
C,
0,
0
),
(
eight,
0,
0
)
);
Saltillo = (
(
acute,
1,
0
)
);
Schwa = (
(
C,
1,
0
)
);
T = (
(
H,
0,
0
),
(
I,
1,
0
),
(
Y,
1,
0
)
);
Thorn = (
(
D,
0,
0
),
(
H,
0,
0
),
(
I,
0,
0
),
(
P,
1,
0
)
);
U = (
(
H,
0,
0
),
(
N,
1,
0
),
(
O,
0,
0
),
(
V,
0,
0
)
);
V = (
(
U,
0,
0
),
(
W,
0,
0
),
(
X,
0,
0
),
(
Y,
0,
0
)
);
W = (
(
M,
0,
0
),
(
V,
0,
0
)
);
X = (
(
K,
0,
0
),
(
N,
0,
0
),
(
R,
0,
0
),
(
V,
0,
0
),
(
Y,
1,
0
),
(
Z,
1,
0
)
);
Y = (
(
I,
0,
0
),
(
T,
1,
0
),
(
U,
0,
0
),
(
V,
1,
0
),
(
W,
0,
0
),
(
X,
0,
0
)
);
Z = (
(
L,
0,
0
),
(
T,
0,
0
),
(
X,
0,
0
)
);
a = (
(
e,
0,
0
)
);
a.002 = (
(
d,
1,
0
)
);
acutecomb = (
(
circumflexcomb,
1,
0
)
);
ae = (
(
a,
0,
0
),
(
e,
0,
0
),
(
o,
0,
0
),
(
oe,
1,
0
)
);
ampersand = (
(
E,
0,
0
),
(
t,
0,
0
),
(
eight,
0,
0
),
(
O,
1,
0
)
);
asterisk = (
(
bracketleft,
0,
0
),
(
numbersign,
1,
0
)
);
at = (
(
a,
0,
0
)
);
b = (
(
c,
0,
0
),
(
e,
0,
0
),
(
h,
1,
0
),
(
k,
0,
0
),
(
l,
0,
0
),
(
o,
0,
0
),
(
p,
0,
0
)
);
blacklenticularbracketright = (
(
cornerbracketleft,
1,
0
)
);
braceleft = (
(
bracketleft,
0,
0
)
);
brevecomb = (
(
acute,
1,
0
)
);
c = (
(
b,
0,
0
),
(
d,
0,
0
),
(
e,
1,
0
),
(
g,
0,
0
),
(
o,
0,
0
),
(
p,
0,
0
),
(
q,
0,
0
)
);
cent = (
(
c,
1,
0
)
);
circumflexcomb = (
(
acutecomb,
1,
0
)
);
comma = (
(
period,
1,
0
)
);
commaaccentcomb = (
(
cedilla,
1,
0
)
);
d = (
(
c,
0,
0
),
(
eth,
0,
0
),
(
e,
0,
0
),
(
l,
0,
0
),
(
o,
1,
0
),
(
q,
1,
0
)
);
dcaron = (
(
acute,
1,
0
)
);
dollar = (
(
S,
1,
0
)
);
dotaccentcomb = (
(
acutecomb,
1,
0
)
);
e = (
(
b,
0,
0
),
(
c,
0,
0
),
(
d,
0,
0
),
(
g,
1,
0
),
(
o,
0,
0
),
(
p,
0,
0
),
(
q,
0,
0
)
);
eight = (
(
B,
0,
0
),
(
zero,
1,
0
),
(
three,
1,
0
),
(
six,
0,
0
),
(
nine,
0,
0
)
);
eng = (
(
j,
1,
0
),
(
m,
0,
0
),
(
n,
1,
0
)
);
estimated = (
(
e,
0,
0
)
);
eth = (
(
d,
0,
0
),
(
o,
0,
0
)
);
euro = (
(
C,
0,
0
)
);
exclam = (
(
I,
0,
0
),
(
T,
0,
0
),
(
one,
0,
0
),
(
period,
0,
0
),
(
question,
0,
0
)
);
f = (
(
l,
0,
0
),
(
longs,
0,
0
),
(
germandbls,
0,
0
),
(
t,
1,
0
)
);
five = (
(
six,
0,
0
),
(
three,
1,
0
)
);
florin = (
(
f,
1,
0
)
);
four = (
(
one,
1,
0
),
(
two,
1,
0
)
);
franc = (
(
F,
1,
0
)
);
g = (
(
c,
0,
0
),
(
e,
0,
0
),
(
o,
1,
0
),
(
q,
0,
0
)
);
germandbls = (
(
B,
0,
0
),
(
b,
0,
0
),
(
f,
0,
0
),
(
s,
0,
0
),
(
longs,
1,
0
),
(
three,
0,
0
)
);
h = (
(
b,
0,
0
),
(
k,
0,
0
),
(
l,
0,
0
),
(
m,
0,
0
),
(
n,
1,
0
),
(
r,
0,
0
)
);
hyphen = (
(
H,
1,
0
)
);
i = (
(
I,
0,
0
),
(
j,
0,
0
),
(
l,
0,
0
),
(
n,
0,
0
)
);
idotless = (
(
I,
0,
0
),
(
i,
0,
0
),
(
j,
0,
0
),
(
uni0237,
0,
0
),
(
l,
0,
0
),
(
n,
0,
0
)
);
j = (
(
i,
1,
0
),
(
l,
0,
0
),
(
n,
0,
0
)
);
k = (
(
b,
1,
0
),
(
h,
0,
0
),
(
l,
0,
0
),
(
x,
1,
0
),
(
o,
1,
0
)
);
l = (
(
I,
1,
0
),
(
b,
0,
0
),
(
h,
0,
0
),
(
k,
0,
0
),
(
i,
0,
0
),
(
one,
1,
0
)
);
lcaron = (
(
dcaron,
1,
0
)
);
less = (
(
plus,
0,
0
)
);
longs = (
(
f,
1,
0
),
(
l,
0,
0
),
(
germandbls,
0,
0
)
);
m = (
(
h,
0,
0
),
(
n,
1,
0
),
(
r,
0,
0
),
(
w,
0,
0
)
);
mu = (
(
u,
1,
0
)
);
n = (
(
h,
0,
0
),
(
m,
0,
0
),
(
r,
0,
0
),
(
u,
1,
0
),
(
v,
0,
0
)
);
nine = (
(
zero,
1,
0
),
(
six,
1,
0
),
(
eight,
1,
0
)
);
o = (
(
b,
0,
0
),
(
c,
0,
0
),
(
d,
0,
0
),
(
eth,
0,
0
),
(
e,
0,
0
),
(
g,
1,
0
),
(
p,
0,
0
),
(
q,
0,
0
),
(
o,
1,
0
)
);
oe = (
(
ae,
1,
0
),
(
e,
0,
0
),
(
o,
0,
0
)
);
ogonekcomb = (
(
cedilla,
1,
0
)
);
one = (
(
I,
1,
0
),
(
l,
1,
0
)
);
oslash = (
(
o,
1,
0
)
);
p = (
(
b,
1,
0
),
(
c,
0,
0
),
(
e,
0,
0
),
(
n,
0,
0
),
(
o,
0,
0
)
);
paragraph = (
(
P,
1,
0
)
);
parenleft = (
(
braceleft,
0,
0
),
(
bracketleft,
1,
0
)
);
product = (
(
H,
1,
0
)
);
q = (
(
d,
1,
0
),
(
c,
0,
0
),
(
e,
0,
0
),
(
g,
0,
0
),
(
o,
1,
0
)
);
question = (
(
two,
0,
0
),
(
period,
0,
0
),
(
exclam,
0,
0
),
(
S,
0,
0
),
(
exclam,
0,
0
),
(
question,
0,
0
),
(
two,
0,
0
)
);
r = (
(
h,
0,
0
),
(
m,
0,
0
),
(
n,
1,
0
)
);
ringcomb = (
(
circumflexcomb,
1,
0
),
(
adieresis,
1,
0
)
);
rupeeIndian = (
(
ruble,
0,
0
)
);
s = (
(
o,
1,
0
)
);
semicolon = (
(
colon,
1,
0
)
);
seven = (
(
T,
0,
0
),
(
zero,
1,
0
)
);
six = (
(
zero,
0,
0
),
(
five,
0,
0
),
(
eight,
0,
0
),
(
nine,
0,
0
)
);
slash = (
(
V,
0,
0
)
);
sterling = (
(
euro,
1,
0
)
);
t = (
(
f,
1,
0
),
(
l,
0,
0
)
);
tcaron = (
(
lcaron,
1,
0
)
);
thorn = (
(
b,
0,
0
),
(
h,
0,
0
),
(
p,
0,
0
),
(
thorn,
0,
0
),
(
Thorn,
1,
0
)
);
three = (
(
B,
0,
0
),
(
eight,
1,
0
)
);
tildecomb = (
(
acutecomb,
1,
0
)
);
two = (
(
question,
1,
0
),
(
two,
1,
0
),
(
two,
1,
0
)
);
u = (
(
n,
1,
0
),
(
v,
0,
0
)
);
uni0237 = (
(
i,
0,
0
),
(
idotless,
1,
0
),
(
l,
0,
0
),
(
n,
0,
0
)
);
uni20B9 = (
(
R,
1,
0
)
);
uni20BD = (
(
P,
1,
0
)
);
uni20BF = (
(
B,
1,
0
)
);
v = (
(
n,
0,
0
),
(
w,
0,
0
),
(
x,
0,
0
),
(
y,
0,
0
)
);
w = (
(
v,
1,
0
),
(
m,
0,
0
)
);
x = (
(
k,
1,
0
),
(
v,
0,
0
),
(
z,
0,
0
)
);
y = (
(
v,
1,
0
)
);
yen = (
(
Y,
1,
0
)
);
z = (
(
x,
1,
0
)
);
zero = (
(
O,
1,
0
)
);
};
};
versionMajor = 1;
versionMinor = 700;
}