intel-one-mono/sources/instances/postscript/IntelOneMono-Regular.ufo/features.fea
2023-08-04 14:53:31 -04:00

335 lines
14 KiB
Text

# ----------------------------
# INTEL ONE MONO OPENTYPE CODE
# ----------------------------
# ----------------
# Language Systems
# ----------------
languagesystem DFLT dflt;
languagesystem latn dflt;
languagesystem latn TRK;
languagesystem latn AZE;
languagesystem latn CRT;
languagesystem latn CAT;
# -------
# Classes
# -------
# Base Letters
@ltrUC = [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z uni1E9E AE OE Schwa Eng Thorn Eth Dcroat Hbar Tbar Lslash Oslash Aring Ohorn Uhorn I];
@ltrLC = [a b c d e f g h i j k l m n o p q r s t u v w x y z germandbls ae oe schwa eng thorn eth dcroat hbar tbar lslash oslash aring ohorn uhorn dotlessi];
# Figures
@fig = [zero one two three four five six seven eight nine];
@figSup = [zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup];
@figInf = [zero.inf one.inf two.inf three.inf four.inf five.inf six.inf seven.inf eight.inf nine.inf];
@figNum = [zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num];
@figDen = [zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den];
# Marks Above - no grave
@deadMarks = [acute hungarumlaut circumflex caron breve tilde macron dieresis dotaccent ring ];
@lcMarks = [acutecmb hungarumlautcmb circumflexcmb caroncmb brevecmb tildecmb macroncmb dieresiscmb dotaccentcmb ringcmb ];
@ucMarks = [acutecmb.cap hungarumlautcmb.cap circumflexcmb.cap caroncmb.cap brevecmb.cap tildecmb.cap macroncmb.cap dieresiscmb.cap dotaccentcmb.cap ringcmb.cap];
# Marks Below
@deadbelowMarks = [uniA788 macronlowmod cedilla ogonek];
@belowMarks = [circumflexbelowcmb macronbelowcmb cedillacmb ogonekcmb];
# ---------------
# Localized Forms
# ---------------
feature locl {
script latn;
language TRK;
lookup iTurkish {
sub i by idotaccent;
} iTurkish;
language AZE;
lookup iTurkish;
language CRT;
lookup iTurkish;
language CAT;
sub l periodcentered' l by middotcat;
sub L periodcentered' L by middotcat.cap;
# try fusing them
sub L middotcat.cap by L.dot;
sub L middotcat by L.dot;
sub l middotcat by l.dot;
} locl;
# ---------------------------------
# Glyph Composition / Decomposition
# ---------------------------------
feature ccmp {
# Decompose unicode lowercase characters whose capital counterparts have no unicode.
lookup Decomp {
sub hlinebelow by h macronlowmod;
sub jcaron by j caron;
} Decomp;
# Replace marks that follow a letter and another mark with their combining forms.
# grave is not included; we prioritize its use as a symbol for programming, which should not fuse with letters.
lookup DblMarks {
sub [@ltrLC] [@deadMarks @deadbelowMarks dotbelowcmb] [@deadMarks @deadbelowMarks]' by [@lcMarks @belowMarks];
sub [@ltrUC] [@deadMarks @deadbelowMarks dotbelowcmb] [@deadMarks @deadbelowMarks]' by [@ucMarks @belowMarks];
sub [@ltrUC] [@lcMarks @deadbelowMarks dotbelowcmb] [@lcMarks]' by [@ucMarks];
} DblMarks;
# Replace marks that follow a letter with their combining forms.
lookup CmbMarks {
# grave is not included; we prioritize its use as a symbol for programming, which should not fuse with letters.
sub [@ltrLC] [@deadMarks @deadbelowMarks]' by [@lcMarks @belowMarks];
sub [@ltrUC] [@deadMarks @deadbelowMarks]' by [@ucMarks @belowMarks];
sub [@ltrUC] [@lcMarks]' by [@ucMarks];
} CmbMarks;
# Replace letters with dotless counterparts when followed by a combining mark.
lookup Dotless {
sub [i j]' [@belowMarks dotbelowcmb] [@lcMarks gravecmb] by [dotlessi dotlessj];
sub [i j]' [@lcMarks gravecmb] by [dotlessi dotlessj];
} Dotless;
# Replace e ogonek with eogonek.
lookup eogonek {
sub e ogonekcmb by eogonek;
} eogonek;
} ccmp;
# ----------
# Numerators
# ----------
feature numr {
sub @fig by @figNum;
} numr;
# ------------
# Denominators
# ------------
feature dnom {
sub @fig by @figDen;
} dnom;
# -----------
# Superscript
# -----------
feature sups {
sub @fig by @figSup;
} sups;
# ---------------------
# Subscript & Inferiors
# ---------------------
feature subs {
sub @fig by @figInf;
} subs;
feature sinf {
sub @fig by @figInf;
} sinf;
# --------------
# Stylistic Sets
# --------------
feature ss11 {
featureNames {
name "Raised Colon (Figures Only)"; # Windows English
name 1 0 0 "Raised Colon (Figures Only)"; # Mac English
};
lookup FigureColonContextual {
sub @fig colon' @fig by colon.fig;
} FigureColonContextual;
} ss11;
feature ss12 {
featureNames {
name "Raised Colon (Global)"; # Windows English
name 1 0 0 "Raised Colon (Global)"; # Mac English
};
lookup FigureColon {
sub colon by colon.fig;
} FigureColon;
} ss12;
# --------------------
# Stylistic Alternates
# --------------------
feature salt {
lookup FigureColon; # SS12
} salt;
# ---------------------------------------------------------------------
# MARK | Generated: November 23, 2022 - 02:38:03 PM by 'markFeature.py'
# ---------------------------------------------------------------------
markClass [acutecmb caroncmb circumflexcmb dieresiscmb dotaccentcmb gravecmb macroncmb tildecmb] <anchor 0 502> @mark_aboveLC;
markClass [acutecmb.cap caroncmb.cap circumflexcmb.cap dieresiscmb.cap dotaccentcmb.cap gravecmb.cap macroncmb.cap tildecmb.cap] <anchor 0 691> @mark_aboveUC;
markClass [dieresisbelowcmb dotbelowcmb macronbelowcmb] <anchor 0 -35> @mark_below;
markClass [cedillacmb] <anchor 0 -10> @mark_belowcedilla;
markClass [ogonekcmb] <anchor 0 -10> @mark_belowogonek;
feature mark {
lookup aboveLC{
pos base [a] <anchor 306 507> mark @mark_aboveLC;
pos base [c] <anchor 325 507> mark @mark_aboveLC;
pos base [dotlessi] <anchor 318 502> mark @mark_aboveLC;
pos base [dotlessj] <anchor 377 502> mark @mark_aboveLC;
pos base [e] <anchor 318 507> mark @mark_aboveLC;
pos base [eogonek] <anchor 318 507> mark @mark_aboveLC;
pos base [g] <anchor 306 504> mark @mark_aboveLC;
pos base [m] <anchor 309 502> mark @mark_aboveLC;
pos base [n] <anchor 307 502> mark @mark_aboveLC;
pos base [o] <anchor 307 507> mark @mark_aboveLC;
pos base [p] <anchor 326 502> mark @mark_aboveLC;
pos base [s] <anchor 321 507> mark @mark_aboveLC;
pos base [u] <anchor 311 502> mark @mark_aboveLC;
pos base [z] <anchor 316 502> mark @mark_aboveLC;
} aboveLC;
lookup aboveUC{
pos base [A] <anchor 304 691> mark @mark_aboveUC;
pos base [C] <anchor 341 693> mark @mark_aboveUC;
pos base [E] <anchor 329 691> mark @mark_aboveUC;
pos base [Eogonek] <anchor 329 691> mark @mark_aboveUC;
pos base [G] <anchor 346 694> mark @mark_aboveUC;
pos base [I] <anchor 307 691> mark @mark_aboveUC;
pos base [J] <anchor 471 691> mark @mark_aboveUC;
pos base [M] <anchor 309 691> mark @mark_aboveUC;
pos base [N] <anchor 312 691> mark @mark_aboveUC;
pos base [O] <anchor 308 696> mark @mark_aboveUC;
pos base [P] <anchor 324 691> mark @mark_aboveUC;
pos base [S] <anchor 315 696> mark @mark_aboveUC;
pos base [U] <anchor 307 691> mark @mark_aboveUC;
pos base [Z] <anchor 309 691> mark @mark_aboveUC;
} aboveUC;
lookup below{
pos base [C] <anchor 338 -40> mark @mark_below;
pos base [Dcroat] <anchor 300 -32> mark @mark_below;
pos base [E] <anchor 329 -35> mark @mark_below;
pos base [H] <anchor 307 -35> mark @mark_below;
pos base [I] <anchor 307 -35> mark @mark_below;
pos base [O] <anchor 309 -40> mark @mark_below;
pos base [S] <anchor 304 -37> mark @mark_below;
pos base [U] <anchor 307 -40> mark @mark_below;
pos base [X] <anchor 307 -35> mark @mark_below;
pos base [Z] <anchor 309 -35> mark @mark_below;
pos base [c] <anchor 319 -38> mark @mark_below;
pos base [dcroat] <anchor 325 -33> mark @mark_below;
pos base [dotlessi] <anchor 323 -35> mark @mark_below;
pos base [e] <anchor 319 -37> mark @mark_below;
pos base [h] <anchor 313 -35> mark @mark_below;
pos base [o] <anchor 307 -40> mark @mark_below;
pos base [s] <anchor 299 -40> mark @mark_below;
pos base [u] <anchor 303 -35> mark @mark_below;
pos base [x] <anchor 306 -35> mark @mark_below;
pos base [z] <anchor 316 -35> mark @mark_below;
} below;
lookup belowcedilla{
pos base [Z] <anchor 309 -10> mark @mark_belowcedilla;
pos base [z] <anchor 316 -10> mark @mark_belowcedilla;
} belowcedilla;
lookup belowogonek{
pos base [A] <anchor 519 -10> mark @mark_belowogonek;
pos base [E] <anchor 460 -10> mark @mark_belowogonek;
pos base [I] <anchor 307 -9> mark @mark_belowogonek;
pos base [O] <anchor 317 -15> mark @mark_belowogonek;
pos base [U] <anchor 321 -15> mark @mark_belowogonek;
pos base [a] <anchor 469 -10> mark @mark_belowogonek;
pos base [dotlessi] <anchor 323 -10> mark @mark_belowogonek;
pos base [e] <anchor 391 -10> mark @mark_belowogonek;
pos base [o] <anchor 314 -15> mark @mark_belowogonek;
pos base [u] <anchor 480 -10> mark @mark_belowogonek;
} belowogonek;
} mark;
@BASES = [A C Dcroat E Eogonek G H I J M N O P S U X Z a c dcroat dotlessi dotlessj e eogonek g h m n o p s u x z];
@MARKS = [@mark_aboveLC @mark_aboveUC @mark_below @mark_belowcedilla @mark_belowogonek];
table GDEF {
GlyphClassDef @BASES,,@MARKS,;
} GDEF;
# --------------
# All Alternates
# --------------
feature aalt {
sub germandbls from [germandbls uni1E9E];
sub uni1E9E from [uni1E9E germandbls];
sub colon from [colon colon.fig];
sub colon.fig from [colon.fig colon];
sub eight from [eight eight.den eight.sup eight.num eight.inf];
sub eight.inf from [eight.inf eight eight.den eight.sup eight.num];
sub eight.num from [eight.num eight.inf eight eight.den eight.sup];
sub eight.sup from [eight.sup eight.num eight.inf eight eight.den];
sub eight.den from [eight.den eight.sup eight.num eight.inf eight];
sub five from [five five.inf five.num five.den five.sup];
sub five.sup from [five.sup five five.inf five.num five.den];
sub five.den from [five.den five.sup five five.inf five.num];
sub five.num from [five.num five.den five.sup five five.inf];
sub five.inf from [five.inf five.num five.den five.sup five];
sub four from [four four.sup four.num four.den four.inf];
sub four.inf from [four.inf four four.sup four.num four.den];
sub four.den from [four.den four.inf four four.sup four.num];
sub four.num from [four.num four.den four.inf four four.sup];
sub four.sup from [four.sup four.num four.den four.inf four];
sub nine from [nine nine.den nine.inf nine.num nine.sup];
sub nine.sup from [nine.sup nine nine.den nine.inf nine.num];
sub nine.num from [nine.num nine.sup nine nine.den nine.inf];
sub nine.inf from [nine.inf nine.num nine.sup nine nine.den];
sub nine.den from [nine.den nine.inf nine.num nine.sup nine];
sub one from [one one.den one.num one.inf one.sup];
sub one.sup from [one.sup one one.den one.num one.inf];
sub one.inf from [one.inf one.sup one one.den one.num];
sub one.num from [one.num one.inf one.sup one one.den];
sub one.den from [one.den one.num one.inf one.sup one];
sub seven from [seven seven.inf seven.num seven.sup seven.den];
sub seven.den from [seven.den seven seven.inf seven.num seven.sup];
sub seven.sup from [seven.sup seven.den seven seven.inf seven.num];
sub seven.num from [seven.num seven.sup seven.den seven seven.inf];
sub seven.inf from [seven.inf seven.num seven.sup seven.den seven];
sub six from [six six.num six.sup six.den six.inf];
sub six.inf from [six.inf six six.num six.sup six.den];
sub six.den from [six.den six.inf six six.num six.sup];
sub six.sup from [six.sup six.den six.inf six six.num];
sub six.num from [six.num six.sup six.den six.inf six];
sub three from [three three.inf three.den three.num three.sup];
sub three.sup from [three.sup three three.inf three.den three.num];
sub three.num from [three.num three.sup three three.inf three.den];
sub three.den from [three.den three.num three.sup three three.inf];
sub three.inf from [three.inf three.den three.num three.sup three];
sub two from [two two.inf two.sup two.num two.den];
sub two.den from [two.den two two.inf two.sup two.num];
sub two.num from [two.num two.den two two.inf two.sup];
sub two.sup from [two.sup two.num two.den two two.inf];
sub two.inf from [two.inf two.sup two.num two.den two];
sub zero from [zero zero.sup zero.num zero.den zero.inf];
sub zero.inf from [zero.inf zero zero.sup zero.num zero.den];
sub zero.den from [zero.den zero.inf zero zero.sup zero.num];
sub zero.num from [zero.num zero.den zero.inf zero zero.sup];
sub zero.sup from [zero.sup zero.num zero.den zero.inf zero];
} aalt;