1
1
mirror of https://github.com/i-tu/Hasklig.git synced 2024-08-15 21:40:42 +03:00

Place basic features ahead of alternate lookups

Fixes "Stylistic Alternates" usage bug in Photoshop
This commit is contained in:
Miguel Sousa 2017-08-14 01:54:23 -07:00
parent b2fb112d9b
commit bd41a18075
2 changed files with 295 additions and 315 deletions

View File

@ -73,59 +73,6 @@ languagesystem grek dflt; # Greek default
languagesystem cyrl dflt; # Cyrillic default
languagesystem cyrl SRB; # Serbian
#--------------------------------------
lookup A_LC_ALT {
sub @A_LC by @A_LC_ALT;
} A_LC_ALT;
lookup G_LC_ALT {
sub @G_LC by @G_LC_ALT;
} G_LC_ALT;
lookup ENG_UC_SAMI { # preferred Eng shape for Sami languages
sub Eng by Eng.a;
} ENG_UC_SAMI;
#lookup BETA_LC_ALT {
# sub beta by beta.a;
#} BETA_LC_ALT;
#
#lookup THETA_LC_ALT {
# sub theta by theta.a;
#} THETA_LC_ALT;
#
#lookup PHI_LC_ALT {
# sub phi by phi.a;
#} PHI_LC_ALT;
lookup BREVE_CYR { #preferred breve shape for Cyrillic script
sub [brevecmb brevecmb.cap] by [brevecmb.cyr brevecmb.cyrcap]; # combining marks
} BREVE_CYR;
#lookup BE_LC_SRB {
# sub be by be.srb;
#} BE_LC_SRB;
lookup ZERO_SLASH {
sub [zero zero.onum zero.cap] by [zero.0 zero.0o zero.0c];
} ZERO_SLASH;
lookup HYPHEN_ALT {
sub [hyphen sfthyphen hyphentwo] by [hyphen.a sfthyphen.a hyphentwo.a];
} HYPHEN_ALT;
lookup ASTERISK_ALT {
sub asterisk by asterisk.a;
} ASTERISK_ALT;
lookup DOLLAR_ALT {
sub dollar by dollar.a;
} DOLLAR_ALT;
lookup ONE_ALT {
sub one by one.a;
} ONE_ALT;
#--------------------------------------
#feature aalt { # Access All Alternates
# feature locl;
@ -152,21 +99,28 @@ lookup ONE_ALT {
feature locl { # Localized Forms
script latn;
language NSM exclude_dflt;
lookup ENG_UC_SAMI;
lookup ENG_UC_SAMI { # preferred Eng shape for Sami languages
sub Eng by Eng.a;
} ENG_UC_SAMI;
language SKS exclude_dflt;
lookup ENG_UC_SAMI;
# script grek;
# sub [acutecmb gravecmb commaturnedabovecmb commaabovecmb] by [tonoscmb variacmb aspercmb leniscmb]; # combining marks
# language dflt;
# sub [acutecmb gravecmb commaturnedabovecmb commaabovecmb] by [tonoscmb variacmb aspercmb leniscmb]; # combining marks
#
# script cyrl;
# lookup BREVE_CYR;
# language dflt;
# lookup BREVE_CYR { #preferred breve shape for Cyrillic script
# sub [brevecmb brevecmb.cap] by [brevecmb.cyr brevecmb.cyrcap]; # combining marks
# } BREVE_CYR;
#
# language SRB include_dflt;
# lookup BE_LC_SRB;
# lookup BE_LC_SRB {
# sub be by be.srb;
# } BE_LC_SRB;
} locl;
@ -275,6 +229,131 @@ feature ccmp { # Glyph Composition / Decomposition
} ccmp;
#--------------------------------------
feature numr { # Numerators
lookup NUMR {
sub @FIGURES_LINING by @FIGURES_NUMERATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_NUMERATOR;
} NUMR;
} numr;
#--------------------------------------
feature dnom { # Denominators
sub @FIGURES_LINING by @FIGURES_DENOMINATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_DENOMINATOR;
} dnom;
#--------------------------------------
feature frac { # Fractions
@SPACE_DEFAULT = [space nbspace];
@SPACE_FRAC = [space.frac nbspace.frac];
@SLASH = [slash.frac fraction divisionslash];
lookup NUMR;
sub slash by slash.frac;
sub @FIGURES_NUMERATOR @SPACE_DEFAULT' by @SPACE_FRAC;
lookup ADJUST_WIDTHS_FRAC {
pos @SLASH <-300 0 -600 0>;
} ADJUST_WIDTHS_FRAC;
sub [fraction divisionslash slash.frac @FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR] [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
sub @FIGURES_DENOMINATOR @SPACE_FRAC [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
} frac;
#--------------------------------------
feature ordn {
lookup SUPERIOR_LETTERS_MINISCULE {
sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR;
sub [egrave eacute eogonek schwa hhook] by [egrave.sups eacute.sups eogonek.sups schwa.sups hhook.sups];
} SUPERIOR_LETTERS_MINISCULE;
} ordn;
#--------------------------------------
feature sups { # Superscript
lookup SUPERIOR_LETTERS_MINISCULE;
lookup SUPERIOR_NUMERALS_SORTS {
sub @FIGURES_LINING by @FIGURES_SUPERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR;
} SUPERIOR_NUMERALS_SORTS;
lookup SUPERIOR_SORTS {
sub [colon hyphen endash emdash] by [colon.sups hyphen.sups endash.sups emdash.sups];
} SUPERIOR_SORTS;
} sups;
#--------------------------------------
feature subs { # Subscript
lookup INFERIOR {
sub @FIGURES_LINING by @FIGURES_INFERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR;
} INFERIOR;
} subs;
#--------------------------------------
feature sinf { # Scientific Inferiors
lookup INFERIOR;
} sinf;
#--------------------------------------
feature onum { # Oldstyle (Text) Figures
sub @FIGURES_LINING by @FIGURES_OLDSTYLE;
} onum;
#--------------------------------------
feature case { # Case-Sensitive Forms
sub @MARKS_CMB_ALL by @MARKS_CMB_ALL_CASE;
sub @FIGURES_LINING by @FIGURES_CASE;
sub @FIGURES_OLDSTYLE by @FIGURES_CASE;
sub one.a by one.ac;
sub ijacute by IJacute;
sub at by at.case;
# sub anoteleia by anoteleia.cap;
} case;
#--------------------------------------
lookup A_LC_ALT {
sub @A_LC by @A_LC_ALT;
} A_LC_ALT;
lookup G_LC_ALT {
sub @G_LC by @G_LC_ALT;
} G_LC_ALT;
#lookup BETA_LC_ALT {
# sub beta by beta.a;
#} BETA_LC_ALT;
#
#lookup THETA_LC_ALT {
# sub theta by theta.a;
#} THETA_LC_ALT;
#
#lookup PHI_LC_ALT {
# sub phi by phi.a;
#} PHI_LC_ALT;
lookup ZERO_SLASH {
sub [zero zero.onum zero.cap] by [zero.0 zero.0o zero.0c];
} ZERO_SLASH;
lookup HYPHEN_ALT {
sub [hyphen sfthyphen hyphentwo] by [hyphen.a sfthyphen.a hyphentwo.a];
} HYPHEN_ALT;
lookup ASTERISK_ALT {
sub asterisk by asterisk.a;
} ASTERISK_ALT;
lookup DOLLAR_ALT {
sub dollar by dollar.a;
} DOLLAR_ALT;
lookup ONE_ALT {
sub one by one.a;
} ONE_ALT;
#--------------------------------------
feature cv01 { # Character Variant 1 (alternate lowercase a)
cvParameters {
@ -376,18 +455,18 @@ feature cv06 { # Character Variant 6 (Sami uppercase Eng)
#} cv10;
#--------------------------------------
feature cv11 { # Character Variant 11 (Cyrillic breve)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "Cyrillic breve [\02D8]"; # English US
name 3 1 0x0408 "\03BA\03C5\03C1\03B9\03BB\03BB\03B9\03BA\03CC \03B2\03C1\03B1\03C7\03CD [\02D8]"; # Greek
name 3 1 0x0419 "\043A\0438\0440\0438\043B\043B\0438\0447\0435\0441\043A\0430\044F \043A\0440\0430\0442\043A\0430 [\02D8]"; # Russian
};
};
lookup BREVE_CYR;
} cv11;
#feature cv11 { # Character Variant 11 (Cyrillic breve)
# cvParameters {
# FeatUILabelNameID {
# name 3 1 0x0409 "Cyrillic breve [\02D8]"; # English US
# name 3 1 0x0408 "\03BA\03C5\03C1\03B9\03BB\03BB\03B9\03BA\03CC \03B2\03C1\03B1\03C7\03CD [\02D8]"; # Greek
# name 3 1 0x0419 "\043A\0438\0440\0438\043B\043B\0438\0447\0435\0441\043A\0430\044F \043A\0440\0430\0442\043A\0430 [\02D8]"; # Russian
# };
# };
#
# lookup BREVE_CYR;
#
#} cv11;
#--------------------------------------
feature cv12 { # Character Variant 12 (slashed zero)
@ -459,95 +538,6 @@ feature cv17 { # Character Variant 17 (alternate numeral one)
} cv17;
#--------------------------------------
feature numr { # Numerators
lookup NUMR {
sub @FIGURES_LINING by @FIGURES_NUMERATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_NUMERATOR;
sub one.a by one.numr;
} NUMR;
} numr;
#--------------------------------------
feature dnom { # Denominators
sub @FIGURES_LINING by @FIGURES_DENOMINATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_DENOMINATOR;
sub one.a by one.dnom;
} dnom;
#--------------------------------------
feature frac { # Fractions
@SPACE_DEFAULT = [space nbspace];
@SPACE_FRAC = [space.frac nbspace.frac];
@SLASH = [slash.frac fraction divisionslash];
lookup NUMR;
sub slash by slash.frac;
sub @FIGURES_NUMERATOR @SPACE_DEFAULT' by @SPACE_FRAC;
lookup ADJUST_WIDTHS_FRAC {
pos @SLASH <-300 0 -600 0>;
} ADJUST_WIDTHS_FRAC;
sub [fraction divisionslash slash.frac @FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR] [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
sub @FIGURES_DENOMINATOR @SPACE_FRAC [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
} frac;
#--------------------------------------
feature ordn {
lookup SUPERIOR_LETTERS_MINISCULE {
sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR;
sub [egrave eacute schwa] by [egrave.sups eacute.sups schwa.sups];
} SUPERIOR_LETTERS_MINISCULE;
} ordn;
#--------------------------------------
feature sups { # Superscript
lookup SUPERIOR_LETTERS_MINISCULE;
lookup SUPERIOR_NUMERALS_SORTS {
sub @FIGURES_LINING by @FIGURES_SUPERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR;
sub one.a by one.sups;
} SUPERIOR_NUMERALS_SORTS;
lookup SUPERIOR_SORTS {
sub [colon hyphen endash emdash] by [colon.sups hyphen.sups endash.sups emdash.sups];
} SUPERIOR_SORTS;
} sups;
#--------------------------------------
feature subs { # Subscript
lookup INFERIOR {
sub @FIGURES_LINING by @FIGURES_INFERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR;
sub one.a by one.subs;
} INFERIOR;
} subs;
#--------------------------------------
feature sinf { # Scientific Inferiors
lookup INFERIOR;
} sinf;
#--------------------------------------
feature onum { # Oldstyle (Text) Figures
sub @FIGURES_LINING by @FIGURES_OLDSTYLE;
sub one.a by one.ao;
} onum;
#--------------------------------------
feature case { # Case-Sensitive Forms
sub @MARKS_CMB_ALL by @MARKS_CMB_ALL_CASE;
sub @FIGURES_LINING by @FIGURES_CASE;
sub @FIGURES_OLDSTYLE by @FIGURES_CASE;
sub one.a by one.ac;
sub ijacute by IJacute;
sub at by at.case;
# sub anoteleia by anoteleia.cap;
} case;
#--------------------------------------
feature ss01 { # Stylistic Set 1 (typographic alternates)
featureNames {

View File

@ -61,11 +61,11 @@ dieresisacutecmb.cap dieresisgravecmb.cap dieresismacroncmb.cap dieresiscaroncmb
@G_LC = [g gacute gcircumflex gbreve gdotaccent gcommaaccent gcaron gmacron gtilde g.sups];
@G_LC_ALT = [g.a gacute.a gcircumflex.a gbreve.a gdotaccent.a gcommaaccent.a gcaron.a gmacron.a gtilde.a g.supa];
@I_LC = [i dotlessi igrave iacute icircumflex itilde idieresis imacron icaron iogonek ihoi idotbelow ibreve istroke iogonek.d istroke.d iukran i.sups];
@I_LC_ALT = [i.a dotlessi.a igrave.a iacute.a icircumflex.a itilde.a idieresis.a imacron.a icaron.a iogonek.a ihoi.a idotbelow.a ibreve.a istroke.a iogonek.da istroke.da iukran.a i.supa];
@I_LC = [i dotlessi igrave iacute icircumflex itilde idieresis imacron icaron iogonek ihoi idotbelow ibreve istroke iogonek.d istroke.d iukran yi i.sups];
@I_LC_ALT = [i.a dotlessi.a igrave.a iacute.a icircumflex.a itilde.a idieresis.a imacron.a icaron.a iogonek.a ihoi.a idotbelow.a ibreve.a istroke.a iogonek.da istroke.da iukran.a yi.a i.supa];
@L_LC = [l lacute lcaron lcommaaccent ldotbelow ldotbelowmacron llinebelow lslash ldot lcat lmiddletilde lbelt];
@L_LC_ALT = [l.a lacute.a lcaron.a lcommaaccent.a ldotbelow.a ldotbelowmacron.a llinebelow.a lslash.a ldot.a lcat.a lmiddletilde.a lbelt.a];
@L_LC = [l lacute lcaron lcommaaccent ldotbelow ldotbelowmacron llinebelow lslash ldot lcat lmiddletilde lbelt palochka];
@L_LC_ALT = [l.a lacute.a lcaron.a lcommaaccent.a ldotbelow.a ldotbelowmacron.a llinebelow.a lslash.a ldot.a lcat.a lmiddletilde.a lbelt.a palochka.a];
#--------------------------------------
languagesystem DFLT dflt; # Default
@ -80,64 +80,6 @@ languagesystem grek dflt; # Greek default
languagesystem cyrl dflt; # Cyrillic default
languagesystem cyrl SRB; # Serbian
#--------------------------------------
lookup A_LC_ALT {
sub @A_LC by @A_LC_ALT;
} A_LC_ALT;
lookup G_LC_ALT {
sub @G_LC by @G_LC_ALT;
} G_LC_ALT;
lookup I_LC_ALT { # includes i & l alternates
sub @I_LC by @I_LC_ALT;
sub @L_LC by @L_LC_ALT;
} I_LC_ALT;
lookup ENG_UC_SAMI { # preferred Eng shape for Sami languages
sub Eng by Eng.a;
} ENG_UC_SAMI;
lookup BETA_LC_ALT {
sub beta by beta.a;
} BETA_LC_ALT;
lookup THETA_LC_ALT {
sub theta by theta.a;
} THETA_LC_ALT;
lookup PHI_LC_ALT {
sub phi by phi.a;
} PHI_LC_ALT;
lookup BREVE_CYR { #preferred breve shape for Cyrillic script
sub [brevecmb brevecmb.cap] by [brevecmb.cyr brevecmb.cyrcap]; # combining marks
} BREVE_CYR;
lookup BE_LC_SRB {
sub be by be.srb;
} BE_LC_SRB;
lookup ZERO_SLASH {
sub [zero zero.onum zero.cap] by [zero.0 zero.0o zero.0c];
} ZERO_SLASH;
lookup HYPHEN_ALT {
sub [hyphen sfthyphen hyphentwo] by [hyphen.a sfthyphen.a hyphentwo.a];
} HYPHEN_ALT;
lookup ASTERISK_ALT {
sub asterisk by asterisk.a;
} ASTERISK_ALT;
lookup DOLLAR_ALT {
sub dollar by dollar.a;
} DOLLAR_ALT;
lookup ONE_ALT {
sub one by one.a;
} ONE_ALT;
#--------------------------------------
#feature aalt { # Access All Alternates
# feature locl;
@ -164,21 +106,28 @@ lookup ONE_ALT {
feature locl { # Localized Forms
script latn;
language NSM exclude_dflt;
lookup ENG_UC_SAMI;
lookup ENG_UC_SAMI { # preferred Eng shape for Sami languages
sub Eng by Eng.a;
} ENG_UC_SAMI;
language SKS exclude_dflt;
lookup ENG_UC_SAMI;
script grek;
sub [acutecmb gravecmb commaturnedabovecmb commaabovecmb] by [tonoscmb variacmb aspercmb leniscmb]; # combining marks
language dflt;
sub [acutecmb gravecmb commaturnedabovecmb commaabovecmb] by [tonoscmb variacmb aspercmb leniscmb]; # combining marks
script cyrl;
lookup BREVE_CYR;
language dflt;
lookup BREVE_CYR { #preferred breve shape for Cyrillic script
sub [brevecmb brevecmb.cap] by [brevecmb.cyr brevecmb.cyrcap]; # combining marks
} BREVE_CYR;
language SRB include_dflt;
lookup BE_LC_SRB;
lookup BE_LC_SRB {
sub be by be.srb;
} BE_LC_SRB;
} locl;
@ -288,6 +237,136 @@ feature ccmp { # Glyph Composition / Decomposition
} ccmp;
#--------------------------------------
feature numr { # Numerators
lookup NUMR {
sub @FIGURES_LINING by @FIGURES_NUMERATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_NUMERATOR;
} NUMR;
} numr;
#--------------------------------------
feature dnom { # Denominators
sub @FIGURES_LINING by @FIGURES_DENOMINATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_DENOMINATOR;
} dnom;
#--------------------------------------
feature frac { # Fractions
@SPACE_DEFAULT = [space nbspace];
@SPACE_FRAC = [space.frac nbspace.frac];
@SLASH = [slash.frac fraction divisionslash];
lookup NUMR;
sub slash by slash.frac;
sub @FIGURES_NUMERATOR @SPACE_DEFAULT' by @SPACE_FRAC;
lookup ADJUST_WIDTHS_FRAC {
pos @SLASH <-300 0 -600 0>;
} ADJUST_WIDTHS_FRAC;
sub [fraction divisionslash slash.frac @FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR] [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
sub @FIGURES_DENOMINATOR @SPACE_FRAC [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
} frac;
#--------------------------------------
feature ordn {
lookup SUPERIOR_LETTERS_MINISCULE {
sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR;
sub [egrave eacute eogonek schwa hhook] by [egrave.sups eacute.sups eogonek.sups schwa.sups hhook.sups];
} SUPERIOR_LETTERS_MINISCULE;
} ordn;
#--------------------------------------
feature sups { # Superscript
lookup SUPERIOR_LETTERS_MINISCULE;
lookup SUPERIOR_NUMERALS_SORTS {
sub @FIGURES_LINING by @FIGURES_SUPERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR;
} SUPERIOR_NUMERALS_SORTS;
lookup SUPERIOR_SORTS {
sub [colon hyphen endash emdash] by [colon.sups hyphen.sups endash.sups emdash.sups];
} SUPERIOR_SORTS;
} sups;
#--------------------------------------
feature subs { # Subscript
lookup INFERIOR {
sub @FIGURES_LINING by @FIGURES_INFERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR;
} INFERIOR;
} subs;
#--------------------------------------
feature sinf { # Scientific Inferiors
lookup INFERIOR;
} sinf;
#--------------------------------------
feature onum { # Oldstyle (Text) Figures
sub @FIGURES_LINING by @FIGURES_OLDSTYLE;
} onum;
#--------------------------------------
feature case { # Case-Sensitive Forms
sub @MARKS_CMB_ALL by @MARKS_CMB_ALL_CASE;
sub @FIGURES_LINING by @FIGURES_CASE;
sub @FIGURES_OLDSTYLE by @FIGURES_CASE;
sub one.a by one.ac;
sub ijacute by IJacute;
sub at by at.case;
sub anoteleia by anoteleia.cap;
} case;
#--------------------------------------
lookup A_LC_ALT {
sub @A_LC by @A_LC_ALT;
} A_LC_ALT;
lookup G_LC_ALT {
sub @G_LC by @G_LC_ALT;
} G_LC_ALT;
lookup I_LC_ALT { # includes i & l alternates
sub @I_LC by @I_LC_ALT;
sub @L_LC by @L_LC_ALT;
} I_LC_ALT;
lookup BETA_LC_ALT {
sub beta by beta.a;
} BETA_LC_ALT;
lookup THETA_LC_ALT {
sub theta by theta.a;
} THETA_LC_ALT;
lookup PHI_LC_ALT {
sub phi by phi.a;
} PHI_LC_ALT;
lookup ZERO_SLASH {
sub [zero zero.onum zero.cap] by [zero.0 zero.0o zero.0c];
} ZERO_SLASH;
lookup HYPHEN_ALT {
sub [hyphen sfthyphen hyphentwo] by [hyphen.a sfthyphen.a hyphentwo.a];
} HYPHEN_ALT;
lookup ASTERISK_ALT {
sub asterisk by asterisk.a;
} ASTERISK_ALT;
lookup DOLLAR_ALT {
sub dollar by dollar.a;
} DOLLAR_ALT;
lookup ONE_ALT {
sub one by one.a;
} ONE_ALT;
#--------------------------------------
feature cv01 { # Character Variant 1 (alternate lowercase a)
cvParameters {
@ -484,95 +563,6 @@ feature cv17 { # Character Variant 17 (alternate numeral one)
} cv17;
#--------------------------------------
feature numr { # Numerators
lookup NUMR {
sub @FIGURES_LINING by @FIGURES_NUMERATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_NUMERATOR;
sub one.a by one.numr;
} NUMR;
} numr;
#--------------------------------------
feature dnom { # Denominators
sub @FIGURES_LINING by @FIGURES_DENOMINATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_DENOMINATOR;
sub one.a by one.dnom;
} dnom;
#--------------------------------------
feature frac { # Fractions
@SPACE_DEFAULT = [space nbspace];
@SPACE_FRAC = [space.frac nbspace.frac];
@SLASH = [slash.frac fraction divisionslash];
lookup NUMR;
sub slash by slash.frac;
sub @FIGURES_NUMERATOR @SPACE_DEFAULT' by @SPACE_FRAC;
lookup ADJUST_WIDTHS_FRAC {
pos @SLASH <-300 0 -600 0>;
} ADJUST_WIDTHS_FRAC;
sub [fraction divisionslash slash.frac @FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR] [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
sub @FIGURES_DENOMINATOR @SPACE_FRAC [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
} frac;
#--------------------------------------
feature ordn {
lookup SUPERIOR_LETTERS_MINISCULE {
sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR;
sub [egrave eacute schwa] by [egrave.sups eacute.sups schwa.sups];
} SUPERIOR_LETTERS_MINISCULE;
} ordn;
#--------------------------------------
feature sups { # Superscript
lookup SUPERIOR_LETTERS_MINISCULE;
lookup SUPERIOR_NUMERALS_SORTS {
sub @FIGURES_LINING by @FIGURES_SUPERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR;
sub one.a by one.sups;
} SUPERIOR_NUMERALS_SORTS;
lookup SUPERIOR_SORTS {
sub [colon hyphen endash emdash] by [colon.sups hyphen.sups endash.sups emdash.sups];
} SUPERIOR_SORTS;
} sups;
#--------------------------------------
feature subs { # Subscript
lookup INFERIOR {
sub @FIGURES_LINING by @FIGURES_INFERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR;
sub one.a by one.subs;
} INFERIOR;
} subs;
#--------------------------------------
feature sinf { # Scientific Inferiors
lookup INFERIOR;
} sinf;
#--------------------------------------
feature onum { # Oldstyle (Text) Figures
sub @FIGURES_LINING by @FIGURES_OLDSTYLE;
sub one.a by one.ao;
} onum;
#--------------------------------------
feature case { # Case-Sensitive Forms
sub @MARKS_CMB_ALL by @MARKS_CMB_ALL_CASE;
sub @FIGURES_LINING by @FIGURES_CASE;
sub @FIGURES_OLDSTYLE by @FIGURES_CASE;
sub one.a by one.ac;
sub ijacute by IJacute;
sub at by at.case;
sub anoteleia by anoteleia.cap;
} case;
#--------------------------------------
feature ss01 { # Stylistic Set 1 (typographic alternates)
featureNames {