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 (spezielle Glyphen, die Zeichen wie 'fi' oder 'ffl' kombinieren), Kerning (Anpassungen an den Abständen zwischen bestimmten Zeichnungsformpaarungen), Brüche, Zahlstile und mehrere andere. Diese werden alle als OpenType-Merkmale bezeichnet und können über spezifische Eigenschaften und Low-Level-Steuerungseigenschaften wie font-feature-settings im Web verwendet werden. Dieser Artikel stellt Ihnen alles zur Verfügung, was Sie über die Verwendung von OpenType-Schriftmerkmalen in CSS wissen müssen.

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

Neben breiten Merkmalssätzen wie Ligaturen oder abgestimmten Zahlen (Zahlen, die im Gegensatz zu 'oldstyle', die mehr wie Kleinbuchstaben aussehen, gleichmäßig ausgerichtet sind), 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' sein können) oder sogar sprachspezifische Anpassungen für ostasiatische Sprachen. Im letzteren Fall sind diese Anpassungen tatsächlich notwendig, um die Sprache richtig auszudrücken, und gehen daher über die stilistische Präferenz der meisten anderen OpenType-Merkmale hinaus.

Warnung: Es gibt viele CSS-Attribute, die dafür definiert sind, Schriftmerkmale zu nutzen, aber leider sind viele nicht vollständig implementiert. Sie sind alle hier definiert und gezeigt, aber viele werden nur mit der Low-Level-Eigenschaft font-feature-settings funktionieren. Es ist möglich, CSS so zu schreiben, dass beide Wege funktionieren, aber das kann umständlich werden. Das Problem bei der Verwendung von font-feature-settings für alles ist, dass jedes Mal, wenn Sie eines der individuellen Merkmale ändern möchten, Sie die gesamte Zeichenkette neu definieren müssen (ähnlich wie bei der Manipulation von variablen Schriften mit font-variation-settings).

Verfügbarkeit von Merkmalen in Schriftarten entdecken

Dies ist manchmal das Schwierigste herauszufinden, wenn Sie keine Dokumentation zu den Schriftarten haben (viele Typdesigner und Schriftgießereien stellen Musterseiten und CSS aus genau diesem Grund zur Verfügung). Aber es gibt einige Seiten, die es einfacher machen, dies herauszufinden. Sie können wakamaifondue.com besuchen, Ihre Schriftartdatei dort auf den Kreis ziehen, wo dies angezeigt wird, und nach ein paar Momenten erhalten Sie einen vollständigen Bericht über alle Fähigkeiten und Merkmale Ihrer Schriftart. Axis-praxis.org bietet ebenfalls eine ähnliche Möglichkeit, mit der Sie die Merkmale in einem bestimmten Textblock ein- oder ausschalten können.

Warum sollten Sie sie nutzen?

Angesichts der Tatsache, dass es ein wenig Arbeit erfordert, diese Merkmale zu entdecken und zu nutzen, mag es gerechtfertigt erscheinen, die Frage zu stellen, warum man sich die Mühe machen sollte, sie zu nutzen. Die Antwort liegt in den spezifischen Merkmalen, die eine Website nützlicher, lesbarer und herausgearbeiteter machen:

  • Ligaturen wie 'ff' oder 'fi' machen den Buchstabenabstand und das Lesen gleichmäßiger und flüssiger.
  • Brüche können Heimwerker- und Rezeptseiten viel leichter lesbar und verständlich machen.
  • Zahlen innerhalb von Textabsätzen, die als 'oldstyle' gesetzt sind, fügen sich harmonischer zwischen Kleinbuchstaben ein, und das Setzen als 'tabular numbers' sorgt dafür, dass sie besser ausgerichtet werden, wenn man zum Beispiel eine Liste von Kosten in einer Tabelle erstellt. 'lining'-Zahlen hingegen stehen gleichmäßiger für sich alleine oder vor großgeschriebenen Wörtern.

Obwohl keines dieser Merkmale allein eine Website aufgrund ihrer Abwesenheit nutzlos macht, kann jedes von ihnen der Reihe nach eine Website benutzerfreundlicher und durch Liebe zum Detail einprägsamer machen.

OpenType-Merkmale sind wie geheime Kompartimente in Schriften. Wenn Sie sie freischalten, finden Sie Wege, um Schriften subtil und dramatisch unterschiedlich aussehen und sich verhalten zu lassen. Nicht alle OpenType-Merkmale sind jederzeit angemessen zu verwenden, aber einige Merkmale sind entscheidend für großartige Typografie. -- Tim Brown, Head of Typography bei Adobe.

Manchmal geht es um Substanz, nicht nur um Stil

Es gibt einige Fälle — wie bei font-variant-east-asian — in denen OpenType-Merkmale direkt mit der Verwendung verschiedener Formen bestimmter Glyphen verbunden sind, was die Bedeutung und Lesbarkeit beeinflussen kann. In solchen Fällen handelt es sich um mehr als nur eine Nettigkeit, sondern eher um einen integralen Bestandteil des Inhaltes selbst.

Die Schriftmerkmale

Es gibt eine Reihe von verschiedenen Merkmalen, die berücksichtigt werden müssen. Sie sind hier gruppiert und erklärt gemäß den Hauptattributen und Optionen, die in den W3C-Spezifikationen behandelt werden.

Hinweis: Die Beispiele unten zeigen die Eigenschaften und einige Beispielkombinationen zusammen mit ihren Low-Level-Syntaxäquivalenten. Sie stimmen möglicherweise nicht genau überein, aufgrund von Inkonsistenzen in der Browserimplementierung, 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 zu verwenden, die meisten sind auf Google Fonts und anderen Diensten erhältlich).

Kerning

Zugeordnete CSS-Eigenschaft: font-kerning

Dies bezieht sich auf die Abstände zwischen bestimmten Glyphenpaarungen. Dies ist generell standardmäßig aktiviert (wie von der OpenType-Spezifikation empfohlen). Es sollte beachtet werden, dass, wenn letter-spacing auch auf Ihren Text angewendet wird, dies nach dem Kerning angewendet wird. Klicken Sie auf "Play" in den Codeblöcken unten, 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

Zugeordnete CSS-Eigenschaft: font-variant-alternates

Schriften können eine Reihe verschiedener Alternativen für verschiedene Glyphen bereitstellen, wie zum Beispiel unterschiedliche Stile des Kleinbuchstabens 'a' oder mehr oder weniger aufwendige Schwünge in einer Schriftschrift. Diese Eigenschaft kann einen gesamten Satz von Alternativen aktivieren oder nur eine spezifische, abhängig von den angegebenen Werten. Das Beispiel unten zeigt mehrere verschiedene Aspekte der Arbeit mit alternativen Zeichen. Schriften mit alternativen Glyphen können diese allen zur Verfügung stellen oder individuell in separaten stilistischen Sätzen oder sogar einzelnen Zeichen. 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 auf eine einzelne Schriftart angewendet wird, oder eine, die geteilt 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 alternativen Zeichen für die jeweilige Schriftart. Die Anwendung auf das Wort 'My' ändert die Darstellung des 'M', und die Anwendung von @styleset(alt-a) ändert nur den Kleinbuchstaben 'a'.

Versuchen Sie, die Zeile

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

in

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

zu ändern und bemerken Sie, dass der Kleinbuchstabe 'a' wieder in seine reguläre Form zurückkehrt und der Kleinbuchstabe 'g' sich stattdessen ändert.

Ligaturen

Zugeordnete CSS-Eigenschaft: font-variant-ligatures

Ligaturen sind Glyphen, die zwei oder mehr separate Glyphen ersetzen, um sie aus einem Abstands- oder ästhetischen Blickwinkel flüssiger darzustellen. Einige der häufigsten sind Buchstaben wie 'fi', 'fl' oder 'ffl' — aber es gibt viele andere Möglichkeiten. Die häufigsten (als gebräuchliche Ligaturen bezeichnet) und es gibt auch spezialisiertere Kategorien wie 'discretionary ligatures', 'historical ligatures' und 'contextual alternates'. Während diese letzten technisch gesehen keine Ligaturen sind, sind sie im Allgemeinen ähnlich, da sie spezifische Buchstabenkombinationen ersetzen, wenn sie zusammen vorkommen.

Obwohl sie häufiger in Schriftschriften vorkommen, werden sie im untenstehenden 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

Zugeordnete CSS-Eigenschaft: font-variant-position

Positionsvarianten werden verwendet, um typografische hochgestellte und tiefgestellte Glyphen zu aktivieren. Diese sind darauf ausgelegt, mit dem umgebenden Text zu 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;
}

Kapitale

Zugeordnete CSS-Eigenschaft: font-variant-caps

Einer der häufigeren Anwendungsfälle für OpenType-Merkmale sind korrekte Small Caps. Diese sind Buchstaben in der Größe von Großbuchstaben, die besser zwischen Kleinbuchstaben passen sollen, 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

Zugeordnete CSS-Eigenschaft: font-variant-numeric

Es gibt mehrere verschiedene Stile von Zahlen, die gemeinhin in Schriftarten enthalten sind:

  • 'Lining'-Zahlen sind alle gleich hoch und auf derselben Grundlinie.
  • 'Oldstyle'-Zahlen sind gemischte Höhen und so gestaltet, dass sie wie Aufschwünge und Unterschwünge anderer Kleinbuchstaben aussehen. Diese sind darauf ausgelegt, inline mit Text verwendet zu werden, sodass die Zahlen sich optisch mit den umgebenden Glyphen ähnlich wie Small Caps mischen.

Es gibt auch das Konzept der Abstände. Proportionaler Abstand ist die normale Einstellung, während tabellarischer Abstand die Zahlen gleichmäßig unabhängig von der Zeichenbreite ausrichtet, was es geeigneter macht, um Tabellen von Zahlen in Finanztabellen auszurichten.

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 (wie '1st' oder '3rd'), ebenso eine durchgestrichene Null, falls in der Schrift vorhanden.

Lining- und Old-Style-Zahlen

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, Ordinals 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

Zugeordnete CSS-Eigenschaft: font-variant-east-asian

Dies ermöglicht den Zugriff auf verschiedene alternative Formen von Glyphen innerhalb einer Schrift. Das untenstehende Beispiel zeigt eine Zeichenfolge normaler Glyphen. Deaktivieren Sie das Häkchen unten und Sie werden Zeichen nur mit 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 Schriftsatzbeispiel kopiert und sind nicht als Prosa gedacht.

Font-Variant Kurzschreibweise

Die font-variant-Eigenschaft ist die Kurzschreibweise für die Definition aller oben genannten Eigenschaften. Das Festlegen eines Wertes von normal setzt alle Eigenschaften auf ihren Anfangswert zurück. Das Festlegen eines Wertes von none setzt font-variant-ligatures auf none und alle anderen Eigenschaften auf ihren Anfangswert. Das bedeutet, dass, wenn Kerning standardmäßig aktiviert ist, es auch dann aktiv 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;
}

Font-Feature-Einstellungen

font-feature-settings ist die 'Low-Level-Syntax', die expliziten Zugriff auf jedes benannte verfügbare OpenType-Merkmal ermöglicht. Dies gibt viel Kontrolle, hat aber einige Nachteile in Bezug darauf, wie es die Vererbung beeinflusst und — wie oben erwähnt —, wenn Sie eine Einstellung ändern möchten, müssen Sie die gesamte Zeichenkette neu deklarieren (es sei denn, Sie verwenden CSS-Custom Properties, um die Werte festzulegen). Aus diesem Grund ist es am besten, die oben gezeigten Standardeigenschaften so weit wie möglich zu verwenden.

Es gibt eine Vielzahl von möglichen Merkmalen. Oben sehen Sie Beispiele für einige davon und es gibt mehrere Ressourcen, um mehr davon zu finden.

Die allgemeine Syntax sieht folgendermaßen aus:

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

Entsprechend der Spezifikation können Sie entweder nur den 4-Zeichen-Merkmalscode angeben oder eine 1 nach dem Code angeben (um das Merkmal zu aktivieren) oder eine 0 (Null), um es zu deaktivieren. Das ist hilfreich, wenn Sie ein Merkmal wie Ligaturen standardmäßig aktiviert haben, aber Sie möchten sie ausschalten, wie folgt:

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 gute Praxis, Ihr CSS so einzurichten, dass Feature-Erkennung verwendet wird, um die korrekten Eigenschaften zu nutzen, wobei font-feature-settings als Fallback dient.

Zum Beispiel können Small Caps auf verschiedene Weise gesetzt werden, aber wenn Sie sicherstellen möchten, dass unabhängig von der zugrunde liegenden Groß-/Kleinschreibung alles in Small Caps endet, erfordert dies 2 Einstellungen mit font-feature-settings statt eines einzigen Eigenschaftswerts 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 zu CSS OpenType-Merkmalen in CSS

Werkzeuge zur Analyse von Webfonts

W3C-Spezifikationen

Andere Ressourcen