UNPKG

utility-opentype

Version:

Simple, CSS utility classes for advanced typographic features.

334 lines (290 loc) 8.82 kB
/* Utility OpenType Simple, CSS utility classes for advanced typographic features. http://utility-opentype.kennethormandy.com */ /* Ligatures */ .liga { @supports not (font-variant-ligatures: common-ligatures) { font-feature-settings: "liga"; } -ms-font-feature-settings: "liga"; /* IE doesn’t support @supports, but `font-feature-settings` isn’t unprefixed, so we’re cool. */ font-variant-ligatures: common-ligatures; } .dlig { @supports not (font-variant-ligatures: discretionary-ligatures) { font-feature-settings: "dlig"; } -ms-font-feature-settings: "dlig"; font-variant-ligatures: discretionary-ligatures; } /* Caps */ .smcp { text-transform: uppercase; @supports not (font-variant-caps: small-caps) { text-transform: inherit; font-feature-settings: "onum", "smcp", "c2sc" 0; } @supports (font-variant-caps: small-caps) { text-transform: inherit; font-variant-caps: small-caps; } @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { text-transform: lowercase; } -ms-font-feature-settings: "lnum", "smcp", "c2sc" 0; } .c2sc { @supports (font-variant-caps: all-small-caps) or (font-feature-settings: "c2sc") { text-transform: lowercase; } @supports not (font-variant-caps: all-small-caps) { font-feature-settings: "onum", "smcp" 0, "c2sc"; } text-transform: uppercase; font-variant-caps: all-small-caps; @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { text-transform: lowercase } -ms-font-feature-settings: "smcp" 0, "c2sc"; } .c2sc.smcp, .caps { text-transform: uppercase; @supports (font-feature-settings: "smcp", "c2sc") { /* This is not valid CSS, but also doesn’t work in Sass when changed. */ @supports not (font-variant-caps: all-small-caps) { text-transform: inherit; font-feature-settings: "smcp", "c2sc"; } } @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { text-transform: lowercase; } -ms-font-feature-settings: "smcp", "c2sc"; font-variant-caps: all-small-caps; } .smcp.onum { @supports not (font-variant-caps: small-caps) { @supports not (font-variant-numeric: oldstyle-nums) { font-feature-settings: "onum", "smcp" 1; } } } .c2sc.onum, .caps.onum { @supports not (font-variant-caps: all-small-caps) { @supports not (font-variant-numeric: oldstyle-nums) { text-transform: lowercase; font-feature-settings: "onum", "smcp" 1; } } } .case { font-feature-settings: "case"; } .titl { @supports not (font-variant-caps: titling-caps) { font-feature-settings: "titl"; } -ms-font-feature-settings: "titl"; font-variant-caps: titling-caps; } /* Alternates */ .calt { @supports not (font-variant-ligatures: contextual) { font-feature-settings: "calt"; } -ms-font-feature-settings: "calt"; font-variant-ligatures: contextual; } .hist { @supports not (font-variant-alternates: historical-forms) { font-feature-settings: "hist"; } -ms-font-feature-settings: "hist"; font-variant-alternates: historical-forms; } .swsh, .swsh-1 { font-feature-settings: "swsh" } .swsh-2 { font-feature-settings: "swsh" 2 } .swsh-3 { font-feature-settings: "swsh" 3 } .salt, .salt-1 { font-feature-settings: "salt" } .salt-2 { font-feature-settings: "salt" 2 } .salt-3 { font-feature-settings: "salt" 3 } .ss01 { font-feature-settings: "ss01" } .ss02 { font-feature-settings: "ss02" } .ss03 { font-feature-settings: "ss03" } .ss04 { font-feature-settings: "ss04" } .ss05 { font-feature-settings: "ss05" } .ss06 { font-feature-settings: "ss06" } .ss07 { font-feature-settings: "ss07" } .ss08 { font-feature-settings: "ss08" } .ss09 { font-feature-settings: "ss09" } .ss10 { font-feature-settings: "ss10" } .ss11 { font-feature-settings: "ss11" } .ss12 { font-feature-settings: "ss12" } .ss13 { font-feature-settings: "ss13" } .ss14 { font-feature-settings: "ss14" } .ss15 { font-feature-settings: "ss15" } .ss16 { font-feature-settings: "ss16" } .ss17 { font-feature-settings: "ss17" } .ss18 { font-feature-settings: "ss18" } .ss19 { font-feature-settings: "ss19" } .ss20 { font-feature-settings: "ss20" } /* Numeric */ .frac { @supports not (font-variant-numeric: diagonal-fractions) { font-feature-settings: "frac"; } -ms-font-feature-settings: "frac"; font-variant-numeric: diagonal-fractions; } .afrc { @supports not (font-variant-numeric: stacked-fractions) { font-feature-settings: "afrc"; } -ms-font-feature-settings: "afrc"; font-variant-numeric: stacked-fractions; } .ordn { @supports not (font-variant-numeric: ordinal) { font-feature-settings: "ordn"; } -ms-font-feature-settings: "ordn"; font-variant-numeric: ordinal; } .sups { @supports not (font-variant-position: sup) { font-feature-settings: "sups"; @supports (font-feature-settings: "sups") { font-size: 1em; vertical-align: baseline; } /* Since Safari lies and says it supports `font-feature-settings`, fix fallback subscript */ @supports (overflow: -webkit-marquee) and (justify-content: inherit) { vertical-align: super; } } font-variant-position: super; } .subs, .sinf { @supports not (font-variant-position: sub) { font-feature-settings: "subs"; @supports (font-feature-settings: "subs") { font-size: 1em; vertical-align: baseline; } /* Since Safari lies and says it supports `font-feature-settings`, fix fallback subscript */ @supports (overflow: -webkit-marquee) and (justify-content: inherit) { vertical-align: sub; font-size: smaller; } } font-size: inherit; font-variant-position: sub; } .sinf { @supports (font-feature-settings: "sinf") { font-variant-position: normal; font-feature-settings: "sinf"; vertical-align: baseline; } /* Since Safari lies and says it supports `font-feature-settings`, fix fallback subscript */ @supports (overflow: -webkit-marquee) and (justify-content: inherit) { vertical-align: sub; font-size: smaller; } } .lnum { @supports not (font-variant-numeric: lining-nums) { font-feature-settings: "lnum", "onum" 0; } font-variant-numeric: lining-nums; } .onum { @supports not (font-variant-numeric: oldstyle-nums) { font-feature-settings: "lnum" 0, "onum"; } font-variant-numeric: oldstyle-nums; } .pnum { @supports not (font-variant-numeric: proportional-nums) { font-feature-settings: "pnum", "tnum" 0; } font-variant-numeric: proportional-nums; } .tnum { @supports not (font-variant-numeric: tabular-nums) { font-feature-settings: "pnum" 0, "tnum"; } font-variant-numeric: tabular-nums; } /* High-level property cascade fallback, inherit doesn’t work */ .lnum.pnum { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum", "onum" 0, "pnum", "tnum" 0; } -ms-font-feature-settings: "lnum", "onum" 0, "pnum", "tnum" 0; } .lnum.tnum { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum", "onum" 0, "pnum" 0, "tnum"; } -ms-font-feature-settings: "lnum", "onum" 0, "pnum" 0, "tnum"; } .onum.pnum { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum" 0, "onum", "pnum", "tnum" 0; } -ms-font-feature-settings: "lnum" 0, "onum", "pnum", "tnum" 0; } .onum.tnum { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum" 0, "onum", "pnum" 0, "tnum"; } -ms-font-feature-settings: "lnum" 0, "onum", "pnum" 0, "tnum"; } .onum.zero { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "onum", "zero"; } -ms-font-feature-settings: "onum", "zero"; } .onum.tnum.zero { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "onum", "zero", "tnum"; } -ms-font-feature-settings: "onum", "zero", "tnum"; } .onum.pnum.zero { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "onum", "zero", "pnum"; } -ms-font-feature-settings: "onum", "zero", "pnum"; } .lnum.zero { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum", "zero"; } -ms-font-feature-settings: "lnum", "zero"; } .lnum.tnum.zero { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum", "zero", "tnum"; } -ms-font-feature-settings: "lnum", "zero", "tnum"; } .lnum.pnum.zero { @supports not (font-feature-settings: "onum" inherit) { font-feature-settings: "lnum", "zero", "pnum"; } -ms-font-feature-settings: "lnum", "zero", "pnum"; } .zero { @supports not (font-variant-numeric: slashed-zero) { font-feature-settings: "zero"; } font-variant-numeric: slashed-zero; }