intel-one-mono/sources/instances/postscript/IntelOneMono-Light.ufo/features.fea

368 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
@lcMarks = [acutecmb gravecmb hungarumlautcmb circumflexcmb caroncmb brevecmb tildecmb macroncmb dieresiscmb dotaccentcmb ringcmb ];
@ucMarks = [acutecmb.cap gravecmb.cap hungarumlautcmb.cap circumflexcmb.cap caroncmb.cap brevecmb.cap tildecmb.cap macroncmb.cap dieresiscmb.cap dotaccentcmb.cap ringcmb.cap];
# Marks Below
@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 uppercase counterparts have no unicode.
lookup Decomp {
sub hlinebelow by h macronlowmod;
sub jcaron by j caron;
} Decomp;
# Replace double above accents by combined drawings.
lookup DblMarks {
sub dieresiscmb acutecmb by dieresisacute;
sub dieresiscmb gravecmb by dieresisgrave;
sub dieresiscmb caroncmb by dieresiscaron;
sub dieresiscmb macroncmb by dieresismacron;
sub brevecmb acutecmb by breveacute;
sub brevecmb gravecmb by brevegrave;
sub brevecmb hookcmb by brevehook;
sub brevecmb tildecmb by brevetilde;
sub circumflexcmb acutecmb by circumflexacute;
sub circumflexcmb gravecmb by circumflexgrave;
sub circumflexcmb hookcmb by circumflexhook;
sub circumflexcmb tildecmb by circumflextilde;
# capital forms
sub dieresiscmb.cap acutecmb.cap by dieresisacute.cap;
sub dieresiscmb.cap gravecmb.cap by dieresisgrave.cap;
sub dieresiscmb.cap caroncmb.cap by dieresiscaron.cap;
sub dieresiscmb.cap macroncmb.cap by dieresismacron.cap;
sub brevecmb.cap acutecmb.cap by breveacute.cap;
sub brevecmb.cap gravecmb.cap by brevegrave.cap;
sub brevecmb.cap hookcmb.cap by brevehook.cap;
sub brevecmb.cap tildecmb.cap by brevetilde.cap;
sub circumflexcmb.cap acutecmb.cap by circumflexacute.cap;
sub circumflexcmb.cap gravecmb.cap by circumflexgrave.cap;
sub circumflexcmb.cap hookcmb.cap by circumflexhook.cap;
sub circumflexcmb.cap tildecmb.cap by circumflextilde.cap;
} DblMarks;
# Replace combining marks that follow a uppercase letter by their uppercase form
lookup CapitalMarks {
sub [@ltrUC] [@lcMarks @belowMarks dotbelowcmb] [@lcMarks]' by [@ucMarks];
sub [@ltrUC] [@lcMarks]' by [@ucMarks];
} CapitalMarks;
# Replace letters with dotless counterparts when followed by a combining mark
lookup Dotless {
sub [i j]' [@belowMarks dotbelowcmb] [@lcMarks] by [dotlessi dotlessj];
sub [i j]' [@lcMarks] by [dotlessi dotlessj];
} Dotless;
# Replace e ogonek with pre-drawn 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;
# ---------------------
# Contextual Alternates
# ---------------------
feature calt {
# shifts colon to align with math symbols when used together
sub colon' [plus equal greater less hyphen] by colon.fig;
sub [plus equal less greater hyphen] colon' by colon.fig;
sub colon' [colon colon.fig] by colon.fig;
sub colon.fig colon' by colon.fig;
} calt;
# --------------
# 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:37:56 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 310 507> mark @mark_aboveLC;
pos base [c] <anchor 330 507> mark @mark_aboveLC;
pos base [dotlessi] <anchor 317 502> mark @mark_aboveLC;
pos base [dotlessj] <anchor 366 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 302 502> mark @mark_aboveLC;
pos base [m] <anchor 310 502> mark @mark_aboveLC;
pos base [n] <anchor 306 502> mark @mark_aboveLC;
pos base [o] <anchor 307 507> mark @mark_aboveLC;
pos base [p] <anchor 329 502> mark @mark_aboveLC;
pos base [s] <anchor 325 507> mark @mark_aboveLC;
pos base [u] <anchor 307 502> mark @mark_aboveLC;
pos base [z] <anchor 324 502> mark @mark_aboveLC;
} aboveLC;
lookup aboveUC{
pos base [A] <anchor 307 691> mark @mark_aboveUC;
pos base [C] <anchor 330 691> mark @mark_aboveUC;
pos base [E] <anchor 335 691> mark @mark_aboveUC;
pos base [Eogonek] <anchor 335 691> mark @mark_aboveUC;
pos base [G] <anchor 352 696> mark @mark_aboveUC;
pos base [I] <anchor 307 691> mark @mark_aboveUC;
pos base [J] <anchor 472 691> mark @mark_aboveUC;
pos base [M] <anchor 307 691> mark @mark_aboveUC;
pos base [N] <anchor 313 691> mark @mark_aboveUC;
pos base [O] <anchor 307 696> mark @mark_aboveUC;
pos base [P] <anchor 324 691> mark @mark_aboveUC;
pos base [S] <anchor 313 696> mark @mark_aboveUC;
pos base [U] <anchor 307 691> mark @mark_aboveUC;
pos base [Z] <anchor 306 691> mark @mark_aboveUC;
} aboveUC;
lookup below{
pos base [C] <anchor 331 -40> mark @mark_below;
pos base [Dcroat] <anchor 299 -30> mark @mark_below;
pos base [E] <anchor 335 -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 308 -40> mark @mark_below;
pos base [S] <anchor 309 -35> 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 306 -35> mark @mark_below;
pos base [c] <anchor 323 -40> mark @mark_below;
pos base [dcroat] <anchor 322 -35> mark @mark_below;
pos base [dotlessi] <anchor 324 -35> mark @mark_below;
pos base [e] <anchor 319 -35> mark @mark_below;
pos base [h] <anchor 311 -35> mark @mark_below;
pos base [o] <anchor 307 -40> mark @mark_below;
pos base [s] <anchor 298 -40> mark @mark_below;
pos base [u] <anchor 296 -35> mark @mark_below;
pos base [x] <anchor 306 -35> mark @mark_below;
pos base [z] <anchor 324 -35> mark @mark_below;
} below;
lookup belowcedilla{
pos base [Z] <anchor 306 -10> mark @mark_belowcedilla;
pos base [z] <anchor 324 -10> mark @mark_belowcedilla;
} belowcedilla;
lookup belowogonek{
pos base [A] <anchor 534 -10> mark @mark_belowogonek;
pos base [E] <anchor 457 -10> mark @mark_belowogonek;
pos base [I] <anchor 307 -9> mark @mark_belowogonek;
pos base [O] <anchor 315 -15> mark @mark_belowogonek;
pos base [U] <anchor 326 -15> mark @mark_belowogonek;
pos base [a] <anchor 472 -10> mark @mark_belowogonek;
pos base [dotlessi] <anchor 324 -10> mark @mark_belowogonek;
pos base [e] <anchor 383 -10> mark @mark_belowogonek;
pos base [o] <anchor 315 -15> mark @mark_belowogonek;
pos base [u] <anchor 483 -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;