font-variant-numeric

Avatar of Geoff Graham
Geoff Graham on

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Die CSS-Eigenschaft font-variant-numeric unterstützt das OpenType-Schriftformat, indem sie angibt, welche numerischen Glyphen für eine Klasse verwendet werden sollen, einschließlich Variationen für Brüche, Ordnungszahlen und stilisierte Variationen unter anderem.

Ein wenig Kontext

Wir neigen dazu, Zahlen als statische Glyphen zu betrachten. Sie werden gedruckt und das ist es. Zahlen ähneln jedoch in vielerlei Hinsicht Alphabetbuchstaben, da sie Varianten haben können, die es je nach Kontext lohnen, den Stil zu ändern. Wir sprechen von Dingen wie Brüchen (z.B. 1/4), Ordnungszahlen (z.B. 1st) und sogar dem Äquivalent von Groß- und Kleinbuchstaben für Ziffern. Im Gegensatz zu Buchstaben ändern diese Variationen jedoch nicht die Bedeutung des Inhalts, obwohl sie zusätzlichen Kontext verleihen oder die Lesbarkeit beeinflussen.

Das Problem mit dieser Eigenschaft ist, dass sie für die Arbeit mit OpenType-fähigen Schriftarten entwickelt wurde, einem neuen, aber sich schnell entwickelnden Schriftformat, das eine umfangreichere Sammlung von Glyphen bietet, die für verschiedene Kontexte verwendet werden können. Sie werden OpenType oft als variable fonts bezeichnen, da sie eine größere Vielfalt an Zeichen enthalten, die sie flexibler für eine Vielzahl von Anwendungen machen. Variationen für all die Dinge!

Das Problem ist, dass die Verfügbarkeit von Schriftarten, die font-variant und font-variant-numeric voll nutzen können, begrenzt ist. Es gibt eine wachsende Zahl von OpenType-kompatiblen Schriftarten, aber eine viel kleinere Teilmenge von Optionen nutzt alle Funktionen, die font-variant-numeric bietet, und diese sind oft Premium und teuer. Richard Butler fasst dies gut zusammen

Uns stehen „Großbuchstaben“-Zahlen namens Lining- oder Titling-Ziffern und „Kleinbuchstaben“-Ziffern namens Oldstyle- oder Text-Ziffern zur Verfügung. … Es ist auch so, dass die überwiegende Mehrheit der Schriftarten weder modern noch professionell ist, wenn modern OpenType-fähig bedeutet und professionell bedeutet, dass beide Ziffernsätze entworfen wurden.

Das größte Problem, das uns bei CSS-Eigenschaften typischerweise beschäftigt, ist die Browserunterstützung, aber diese Eigenschaft und alle anderen, die mit font-variant zusammenhängen, sind auch von den Schriftgestaltern abhängig, um die volle Unterstützung zu bieten.

Das ist zwar enttäuschend, aber wir sehen auch zur Zeit dieser Zeilen mehr „moderne“ und „professionelle“ Schriftarten. Adobe TypeKit kündigte seine Arbeit zur Unterstützung von OpenType-Funktionen an und es wird gemunkelt, dass Google Fonts ebenfalls dabei ist, da Chrome 62 diese unterstützt.

Grundlegende Verwendung

Dies ist die grundlegendste Verwendung der Eigenschaft

.fraction {
    font-variant-numeric: diagonal-fractions;
}

Ältere Browser erkennen dies nicht, aber sie akzeptieren font-feature-settings, das dieselben Funktionen mit anderen Werten freischaltet. Wir können die beiden Eigenschaften kombinieren, um eine tiefere Unterstützung zu erreichen

.fraction {
    font-feature-settings: frac;
    font-variant-numeric: diagonal-fractions;
}

Oder wir können dies anpassen, um die Browserunterstützung mit @supports zu erkennen, sodass die neue Eigenschaft nur an unterstützende Browser ausgeliefert wird

.fraction {
    font-feature-settings: frac;
}

@supports (font-variant-numeric: diagonal-fractions) {
  .fraction {
      font-feature-settings: frac;
      font-variant-numeric: diagonal-fractions;
  }
}

Werte

Die Eigenschaft font-variant-numeric akzeptiert die folgenden Werte. Der entsprechende Wert von font-feature-settings ist zur Referenz angegeben.

Allgemeine Werte

Wert Beschreibung Feature-Einstellung
normal Keine der unten aufgeführten Funktionen ist aktiviert. N/A
ordinal Verwendet Buchstaben zur Darstellung der numerischen Reihenfolge, typischerweise in Form eines Superscripts. ordn
slashed-zero Zeigt eine alternative Form von Null mit einer diagonalen Linie an, die hindurchläuft. zero

Numerische Ziffernwerte

Wert Beschreibung Feature-Einstellung
lining-nums Richtet Zahlen vertikal aus, sodass sie die gleiche Höhe haben und auf derselben Ebene liegen. lnum
oldstyle-nums Ermöglicht eine alternative vertikale Ausrichtung, bei der Zahlen nicht immer gleichmäßig auf derselben Grundlinie angezeigt werden. onum

Numerische Bruchwerte

Wert Beschreibung Feature-Einstellung
diagonal-fractions Zeigt Brüche in einem kleineren Format an, bei dem Zähler (obere Zahl) und Nenner (untere Zahl) durch einen diagonalen Schrägstrich geteilt werden. frac
stacked-fractions Zeigt Brüche in einem kleineren Format an, bei dem Zähler und Nenner übereinander gestapelt und durch einen horizontalen Strich geteilt werden. afrc

Numerische Abstände-Werte

Wert Beschreibung Feature-Einstellung
proportional-nums Ermöglicht es Zahlen, ihren eigenen Platz einzunehmen, der nicht unbedingt gleich der Breite anderer Ziffern ist. pnum
tabular-nums Zeigt Zahlen mit gleicher Größe, proportionaler und gleicher Abstandsbreite für eine saubere Formatierung in tabellarischen Daten an. tnum

Die Spezifikation enthält eine besondere Anmerkung zur Verwendung von ordinal, da es dem sup-Element ähnelt, aber anders markiert wird.

Für hochgestellte Zeichen

sup { 
    font-variant-position: super;
}
Two squared is 2<sup>2</sup>

Für Ordnungszeichen

.ordinal { 
    font-variant-numeric: ordinal;
}
1st

Browser-Unterstützung

Die Eigenschaft font-variant-numeric ist derzeit Teil der CSS Fonts Module Level 3 Spezifikation, die zum Zeitpunkt dieser Zeilen den Status Candidate Recommendation hat, was bedeutet, dass sie sich jederzeit ändern kann.

Desktop

Chrome Edge Firefox IE Opera Safari
52 Nein 34 Nein 39 9.1

Firefox 24-34 (exklusiv) unterstützt die Eigenschaft hinter der Präferenz layout.css.font-features.enabled, wenn diese auf true gesetzt ist.

Mobil

Android Browser Chrome Android Edge Firefox IE Opera Android iOS Safari
52 52 Nein 34 Nein 39 Ja

Additional Resources