Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

OpenType-Schriftmerkmale

Schriftmerkmale oder Varianten beziehen sich auf verschiedene Glyphen oder Zeichenstile, die in einer OpenType-Schriftart enthalten sind. Dazu gehören Dinge wie Ligaturen (besondere Glyphen, die Zeichen wie 'fi' oder 'ffl' kombinieren), Kerning (Anpassungen des Abstands zwischen bestimmten Buchstabenpaarungen), Brüche, Zahlenstile und mehrere andere. Diese werden als OpenType-Funktionen bezeichnet und sind im Web über spezifische Eigenschaften und Low-Level-Steuerungseigenschaften verfügbar — font-feature-settings. Dieser Artikel bietet Ihnen alles Wissenswerte zur Verwendung von OpenType-Schriftmerkmalen in CSS.

Einige Schriftarten haben eines oder mehrere dieser Merkmale standardmäßig aktiviert (Kerning und Standardligaturen sind häufige Beispiele), während andere dem Designer oder Entwickler überlassen bleiben, um sie in bestimmten Szenarien zu aktivieren.

Neben allgemeinen Merkmalsgruppen wie Ligaturen oder Zeichen in Linienfigur-Stil (Zahlen, die gleichmäßig ausgerichtet sind, im Gegensatz zu 'Oldstyle', die eher wie Kleinbuchstaben aussehen), gibt es auch sehr spezifische wie stilistische Sätze (die mehrere spezifische Varianten von Glyphen enthalten können, die zusammen verwendet werden sollen), Alternativen (die eine oder mehrere Varianten des Buchstabens 'a' enthalten können) oder sogar sprachspezifische Änderungen für ostasiatische Sprachen. Im letzteren Fall sind diese Änderungen tatsächlich notwendig, um die Sprache richtig auszudrücken, sodass sie über die eher stilistische Vorliebe der meisten anderen OpenType-Funktionen hinausgehen.

Warnung: Es gibt viele definierte CSS-Eigenschaften, um Schriftmerkmale zu nutzen, aber leider sind viele nicht vollständig implementiert. Sie sind alle hier definiert und gezeigt, aber viele funktionieren nur mit der Low-Level-Eigenschaft font-feature-settings. Es ist möglich, CSS so zu schreiben, dass es auf beide Arten funktioniert, aber das kann mühsam werden. Das Problem bei der Verwendung von font-feature-settings für alles ist, dass man jedes Mal, wenn man eines der einzelnen Merkmale ändern möchte, den gesamten String neu definieren muss (ähnlich wie bei der Manipulation von variablen Schriften mit font-variation-settings).

Verfügbarkeit von Merkmalen in Schriftarten entdecken

Dies ist manchmal das kniffligste herauszufinden, wenn Sie keine Dokumentation haben, die mit den Schriftarten geliefert wurde (viele Schriftgestalter und Gießereien stellen aus diesem Grund Musterseiten und CSS zur Verfügung). Aber es gibt einige Websites, die es einfacher machen, dies herauszufinden. Sie können wakamaifondue.com besuchen, Ihre Schriftdatei auf den Kreis ziehen, wo es angegeben ist, und in wenigen Momenten erhalten Sie einen vollständigen Bericht über alle Fähigkeiten und Merkmale Ihrer Schrift. Axis-praxis.org bietet ebenfalls eine ähnliche Fähigkeit, mit der Möglichkeit, auf die Merkmale zu klicken, um sie in einem bestimmten Textblock ein- oder auszuschalten.

Warum sollten Sie sie verwenden?

Da diese Merkmale einige Arbeit erfordern, um sie zu entdecken und zu nutzen, mag es eine berechtigte Frage sein, warum man sich die Mühe machen sollte, sie zu verwenden. Die Antwort liegt in den spezifischen Merkmalen, die eine Website nützlicher, lesbarer und gepflegter machen:

  • Ligaturen wie 'ff' oder 'fi' machen den Buchstabenabstand und das Lesen gleichmäßiger und fließender.
  • Brüche können Heimwerker- und Rezeptseiten viel einfacher lesbar und verständlicher machen.
  • Zahlen innerhalb einzeiligen Textes, die als 'Oldstyle' gesetzt sind, passen besser zwischen Kleinbuchstaben, und ebenso lassen sich Zahlen als 'Tabellenzahlen' gesetzt besser ausrichten, wenn man beispielsweise eine Liste von Kosten in einer Tabelle aufstellt. 'Lining'-Zahlen hingegen stehen isoliert oder vor großgeschriebenen Wörtern gleichmäßiger.

Während keines dieser Merkmale einzeln eine Website aufgrund ihrer Abwesenheit unbrauchbar macht, so kann doch jedes davon eine Website benutzerfreundlicher und aufgrund ihrer Detailgenauigkeit einprägsamer machen.

OpenType-Funktionen sind wie geheime Fächer in Schriften. Schalten Sie sie frei, und Sie entdecken Möglichkeiten, wie Schriften subtile und dramatische Unterschiede im Aussehen und Verhalten zeigen können. Nicht alle OpenType-Merkmale sind für jederzeit geeignet, aber einige Merkmale sind entscheidend für großartige Typografie. -- Tim Brown, Leiter der Typografie bei Adobe.

Manchmal geht es um Inhalt, nicht nur um Stil

Es gibt einige Fälle — wie bei font-variant-east-asian — bei denen OpenType-Funktionen direkt mit der Verwendung unterschiedlicher Formen bestimmter Glyphen verbunden sind, was Bedeutung und Lesbarkeit beeinflussen kann. In solchen Fällen ist es mehr als nur eine Nettigkeit, sondern ein integraler Bestandteil des Inhalts selbst.

Die Schriftmerkmale

Es gibt eine Reihe verschiedener Merkmale zu berücksichtigen. Sie sind hier nach den Haupteigenschaften und Optionen gruppiert und erklärt, die in den W3C-Spezifikationen behandelt werden.

Hinweis: Die folgenden Beispiele zeigen die Eigenschaften und einige Beispielkombinationen, zusammen mit den jeweils niedrigeren Syntexäquivalenten. Diese können aufgrund von Browser-Implementierungsinkonsistenzen nicht genau übereinstimmen, aber in vielen Fällen wird das erste Beispiel dem zweiten entsprechen. Die gezeigten Schriftarten sind Playfair Display, Source Serif Pro, IBM Plex Serif, Dancing Script und Kokoro (alle verfügbar und kostenlos nutzbar, die meisten sind bei Google Fonts und anderen Diensten erhältlich).

Kerning

Zugehörige CSS-Eigenschaft: font-kerning

Dies bezieht sich auf den Abstand zwischen bestimmten Glyphenpaaren. Dies ist im Allgemeinen standardmäßig aktiviert (wie von der OpenType-Spezifikation empfohlen). Es sollte beachtet werden, dass, wenn letter-spacing ebenfalls auf Ihrem Text gesetzt ist, dies nach dem Kerning angewendet wird. Klicken Sie auf "Play" in den folgenden Codeblöcken, um das Beispiel im MDN Playground zu bearbeiten:

css
/* kerning: auto|normal|none */
.container1 * {
  font-kerning: normal;
}
.inactive.container1 * {
  font-kerning: none;
}

/* 'kern' 1|0 (on or off) */
.container2 * {
  font-feature-settings: "kern" 1;
}
.inactive.container2 * {
  font-feature-settings: "kern" 0;
}

Alternates

Zugehörige CSS-Eigenschaft: font-variant-alternates

Schriftarten können eine Anzahl verschiedener Alternativen für verschiedene Glyphen bereitstellen, wie verschiedene Stile des Kleinbuchstabens 'a' oder mehr oder weniger aufwändige Schnörkel in einer Skriptschriftart. Diese Eigenschaft kann einen gesamten Satz von Alternativen oder nur eine bestimmte aktivieren, je nach den angegebenen Werten. Das untenstehende Beispiel zeigt verschiedene Aspekte der Arbeit mit alternierenden Zeichen. Schriftarten mit alternierenden Glyphen können diese durchgehend oder individuell in getrennten stilistischen Sätzen oder sogar einzelnen Zeichen verfügbar machen. In diesem Beispiel sehen Sie zwei verschiedene Schriftarten und die Einführung der @font-feature-values Regel. Diese wird verwendet, um Abkürzungen oder benannte Optionen zu definieren, die pro Schriftfamilie definiert werden können. Auf diese Weise können Sie eine benannte Option erstellen, die nur für eine einzelne Schrift gilt, oder eine, die gemeinsam genutzt wird und allgemeiner angewendet werden kann. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
@font-feature-values "Plex Serif" {
  @styleset {
    alt-a: 1;
    alt-g: 2;
  }
  @stylistic {
    alternates: 1;
  }
}

@font-feature-values "Dancing Script" {
  @stylistic {
    alternates: 1;
  }
}

.container1 * {
  font-variant-alternates: styleset(alt-a);
}
.container1 .script {
  font-variant-alternates: stylistic(alternates);
}
.inactive.container1 * {
  font-variant-alternates: normal;
}

.container2 * {
  font-feature-settings: "ss01";
}
.container2 .script {
  font-feature-settings: "salt";
}
.inactive.container2 * {
  font-feature-settings:
    "ss01" 0,
    "salt" 0;
}

In diesem Fall zeigt @stylistic(alternates) alle alternierenden Zeichen für jede der beiden Schriftarten. Die Anwendung auf nur das Wort 'My' ändert die Darstellung des 'M', und die Anwendung von @styleset(alt-a) ändert nur das kleine 'a'.

Versuchen Sie, die Zeile

css
font-variant-alternates: styleset(alt-a);

in

css
font-variant-alternates: styleset(alt-g);

zu ändern und beachten Sie, dass das kleine 'a' zu seiner regulären Form zurückkehrt und sich die kleinen 'g's stattdessen ändern.

Ligaturen

Zugehörige CSS-Eigenschaft: font-variant-ligatures

Ligaturen sind Glyphen, die zwei oder mehr separate Glyphen ersetzen, um sie sanfter darzustellen (aus einer Platzierungs- oder ästhetischen Perspektive). Einige der häufigsten sind Buchstaben wie 'fi', 'fl' oder 'ffl' — aber es gibt viele andere Möglichkeiten. Es gibt die häufigsten (als einfache Ligaturen bezeichnet) und es gibt auch spezialisiertere Kategorien wie 'diskretionäre Ligaturen', 'historische Ligaturen' und 'kontextuelle Alternativen'. Obwohl diese letzten nicht technisch als Ligaturen gelten, sind sie im Allgemeinen ähnlich, da sie bestimmte Kombinationen von Buchstaben ersetzen, wenn sie zusammen erscheinen.

Während sie häufiger in Skriptschriften auftauchen, werden sie im nachstehenden Beispiel verwendet, um Pfeile zu erstellen. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
.container1 * {
  font-variant-ligatures: common-ligatures discretionary-ligatures contextual;
}
.inactive.container1 * {
  font-variant-ligatures: none;
}

/* 'liga', 'dlig', 'hlig', 'calt' */
.container2 * {
  font-feature-settings: "dlig", "liga", "calt";
}
.inactive.container2 * {
  font-feature-settings:
    "dlig" 0,
    "liga" 0,
    "calt" 0;
}

Position

Zugehörige CSS-Eigenschaft: font-variant-position

Positionsvarianten werden verwendet, um typografische Hoch- und Tiefstellungsglyphen zu aktivieren. Diese sind so gestaltet, dass sie mit dem umgebenden Text arbeiten, ohne die Grundlinie oder den Zeilenabstand zu verändern. Dies ist besonders nützlich mit den <sub> oder <sup> Elementen. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
/* position: normal|sub|super */
.container1 .super {
  font-variant-position: super;
}
.container1 .sub {
  font-variant-position: sub;
}
.inactive.container1 * {
  font-variant-position: normal;
}

/* 'subs', 'sups' */
.container2 .super {
  font-feature-settings: "sups";
}
.container2 .sub {
  font-feature-settings: "subs";
}
.inactive.container2 * {
  font-feature-settings:
    "sups" 0,
    "subs" 0;
}

Kapitälchen

Zugehörige CSS-Eigenschaft: font-variant-caps

Eine der häufigeren Anwendungsfälle für OpenType-Funktionen sind richtige Kapitälchen. Diese sind Großbuchstaben, die so dimensioniert sind, dass sie besser mit den Kleinbuchstaben harmonieren und werden im Allgemeinen für Akronyme und Abkürzungen verwendet. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
/* position: normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps */
.container1 .small-caps {
  font-variant-caps: small-caps;
}
.container1 .all-small-caps {
  font-variant-caps: all-small-caps;
}
.inactive.container1 * {
  font-variant-caps: normal;
}

/* 'smcp', 'c2sc' */
.container2 .small-caps {
  font-feature-settings: "smcp" 1;
}
.container2 .all-small-caps {
  font-feature-settings:
    "c2sc" 1,
    "smcp" 1;
}
.inactive.container2 * {
  font-feature-settings:
    "smcp" 0,
    "c2sc" 0;
}

Zahlen

Zugehörige CSS-Eigenschaft: font-variant-numeric

Es gibt mehrere verschiedene Stile von Zahlen, die üblicherweise in Schriften enthalten sind:

  • 'Lining' Zahlen sind alle gleich hoch und auf derselben Grundlinie.
  • 'Oldstyle' Zahlen haben gemischte Höhen und sind so gestaltet, dass sie das Erscheinungsbild von Ober- und Unterlängen wie andere Kleinbuchstaben haben. Diese sind dafür ausgelegt, inline mit dem Text verwendet zu werden, sodass die Zahlen optisch mit den umgebenden Glyphen in ähnlicher Weise wie kleine Großbuchstaben verschmelzen.

Es gibt auch das Konzept der Abstände. Proportionale Abstände sind die normale Einstellung, während Tabellensätze Zahlen unabhängig von der Zeichenbreite gleichermaßen ausrichten und sich somit besser zum Ausrichten von Tabellen mit Zahlen in Finanztabellen eignen.

Es gibt zwei Arten von Brüchen, die durch diese Eigenschaft unterstützt werden:

  • Diagonal gestrichene Brüche.
  • Vertikal gestapelte Brüche.

Ordinalzahlen werden ebenfalls unterstützt (z. B. '1st' oder '3rd'), ebenso wie eine durchgestrichene Null, sofern in der Schrift vorhanden.

Lining- und Oldstyle-Figuren

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
.container1 .lining {
  font-variant-numeric: lining-nums;
}
.container1 .oldstyle {
  font-variant-numeric: oldstyle-nums;
}
.inactive.container1 * {
  font-variant-numeric: normal;
}

.container2 .lining {
  font-feature-settings: "lnum" 1;
}
.container2 .oldstyle {
  font-feature-settings: "onum" 1;
}
.inactive.container2 * {
  font-feature-settings:
    "lnum" 0,
    "onum" 0;
}

Brüche, Ordnungszahlen und durchgestrichene Null

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
.container1 .diagonal-fractions {
  font-variant-numeric: diagonal-fractions;
}
.container1 .ordinal {
  font-variant-numeric: ordinal;
}
.container1 .zero {
  font-variant-numeric: slashed-zero;
}
.inactive.container1 * {
  font-variant-numeric: normal;
}

.container2 .diagonal-fractions {
  font-feature-settings: "frac" 1;
}
.container2 .ordinal {
  font-feature-settings: "ordn" 1;
}
.container2 .zero {
  font-feature-settings: "zero" 1;
}
.inactive.container2 * {
  font-feature-settings:
    "frac" 0,
    "ordn" 0,
    "zero" 0;
}

Ostasiatisch

Zugehörige CSS-Eigenschaft: font-variant-east-asian

Dies ermöglicht den Zugriff auf verschiedene alternative Formen von Glyphen innerhalb einer Schriftart. Das untenstehende Beispiel zeigt eine Zeichenfolge normaler Glyphen. Deaktivieren Sie das Kontrollkästchen unten und Sie werden Zeichen mit nur den jis78 Glyphen sehen. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
.container1 * {
  font-variant-east-asian: normal;
}
.inactive.container1 * {
  font-variant-east-asian: jis78;
}

.container2 * {
  font-feature-settings: "jp78" 0;
}
.inactive.container2 * {
  font-feature-settings: "jp78";
}

Hinweis: Diese Glyphen wurden aus einem Schriftenmuster kopiert und sind nicht als Prosa gedacht.

Kurzschrift für Schriftvarianten

Die font-variant Eigenschaft ist die Kurzschrift für die Definition aller oben genannten Merkmale. Die Einstellung eines Wertes von normal setzt alle Eigenschaften auf ihren Anfangswert zurück. Die Einstellung eines Wertes von none setzt font-variant-ligatures auf none und alle anderen Eigenschaften auf ihren Anfangswert zurück. Das bedeutet, dass, wenn Kerning standardmäßig aktiviert ist, es auch dann aktiviert bleibt, wenn hier ein Wert von none angegeben wird. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
.container1 * {
  font-variant: common-ligatures discretionary-ligatures contextual
    diagonal-fractions;
}
.inactive.container1 * {
  font-variant: none;
}

.container2 * {
  font-feature-settings: "dlig", "liga", "calt", "frac";
}
.inactive.container2 * {
  font-feature-settings:
    "dlig" 0,
    "liga" 0,
    "calt" 0,
    "frac" 0;
}

Schriftmerkmal-Einstellungen

font-feature-settings ist die 'Low-Level-Syntax', die expliziten Zugriff auf jede benannte verfügbare OpenType-Funktion ermöglicht. Dies gibt viel Kontrolle, hat jedoch einige Nachteile, was die Vererbung betrifft und – wie oben erwähnt – wenn Sie eine Einstellung ändern möchten, müssen Sie den gesamten String erneut deklarieren (es sei denn, Sie verwenden CSS-Benutzerdefinierte Eigenschaften, um die Werte festzulegen). Deshalb ist es am besten, die oben gezeigten Standard-Eigenschaften zu verwenden, wo immer möglich.

Es gibt eine große Anzahl möglicher Merkmale. Sie können Beispiele von einigen oben sehen, und es gibt mehrere Ressourcen, um weitere zu finden.

Die allgemeine Syntax sieht so aus:

css
.small-caps {
  font-feature-settings: "smcp", "c2sc";
}

Laut Spezifikation können Sie entweder nur den 4-Zeichen-Merkmal-Code angeben oder eine 1 nach dem Code (um dieses Merkmal zu aktivieren) oder eine 0 (Null) zum Deaktivieren bereitstellen. Dies ist hilfreich, wenn Sie ein Merkmals wie Ligaturen standardmäßig aktiviert haben, aber diese deaktivieren möchten, etwa so:

css
.no-ligatures {
  font-feature-settings:
    "liga" 0,
    "dlig" 0;
}

Mehr über font-feature-settings Codes

Verwendung der CSS-Feature-Erkennung für die Implementierung

Da nicht alle Eigenschaften gleichmäßig implementiert sind, ist es eine gute Praxis, Ihr CSS unter Verwendung der Feature-Erkennung einzurichten, um die richtigen Eigenschaften zu nutzen, wobei font-feature-settings als Rückfalloption dient.

Zum Beispiel können Kapitälchen auf verschiedene Weise gesetzt werden, aber wenn Sie sicherstellen möchten, dass unabhängig von der zugrunde liegenden Großschreibung alles in Kapitälchen endet, erfordert dies 2 Einstellungen mit font-feature-settings im Vergleich zu einem einzigen Eigenschaftswert mit font-variant-caps.

css
.small-caps {
  font-feature-settings: "smcp", "c2sc";
}

@supports (font-variant-caps: all-small-caps) {
  .small-caps {
    font-feature-settings: normal;
    font-variant-caps: all-small-caps;
  }
}

Siehe auch

Demos von OpenType-Funktionen in CSS

Webschriftanalyse-Tools

W3C-Spezifikationen

Andere Ressourcen