COLRv1-Farbverlaufs-Vektorschriftarten in Chrome 98

Dominik Röttsches
Dominik Röttsches
Rod Sheeter
Rod Sheeter

Kompakte, komprimierbare Farbvektorschriften mit den von Ihnen bevorzugten Farbverläufen.

In Chrome 98 haben die Chrome- und Fonts-Teams die Unterstützung für COLRv1 hinzugefügt. Das ist eine Weiterentwicklung des Schriftformates COLRv0, mit dem farbige Schriftarten durch Hinzufügen von Farbverläufen, Komposition und Überblendung sowie verbesserter interner Formwiederverwendung für gestochen scharfe und kompakte Schriftdateien, die sich gut komprimieren lassen, weiter verbreitet werden sollen.

Jetzt färben

Im Web wird Text in der Regel in einer in CSS angegebenen Farbe dargestellt. Die Schriftart definiert keine bestimmte Farbe, sondern gibt nur an, wo Pixel platziert werden sollen. Das ist in der Regel eine gute Sache. Mit CSS kann der Autor flexibel eine Farbe auswählen. Manchmal enthält eine Glyphe jedoch mehrere Farben, die zusammen eine Bedeutung haben. Diese Flagge Transgender-Flagge mit hellblauen und blassrosa Streifen. mit hellblauen, rosafarbenen und weißen Streifen würde beispielsweise nicht dieselbe Bedeutung vermitteln, wenn sie einfach in der aktuellen Textfarbe gezeichnet würde.

Für die meisten Nutzer sind Emojis heute die einzigen farbigen Schriftarten, die sie sehen. Emojis werden im Web in der Regel über die System-Emoji-Schriftart oder durch Einfügen von Bildern angezeigt (was seine eigenen Komplikationen hat, Panda-Emoji mit traurigem Gesichtsausdruck). Große Dateigrößen, insbesondere bei bitmapbasierten Farbschriften, haben die Verwendung von Webschriften für Emojis erschwert. Wir hoffen, dass durch die Unterstützung von COLRv1 die Verwendung kreativer Farbschriften im Web und darüber hinaus zunehmen wird.

Zeig mir deine Farben

Wir haben einige Beispiele für Sie zusammengestellt:

Die im Beispiel verwendeten Beispiel-Assets von Google Fonts sind in der Google Fonts Web API verfügbar. Sie sind nicht im Verzeichnis unter fonts.google.com aufgeführt, da sie nur in Chrome 98 oder höher funktionieren und experimentelle Arbeit zeigen.

Sie können jetzt mit kostenlosen Open-Source-Tools eigene COLRv1-Schriftarten erstellen. Mit dem Nanoemoji-Schriftarten-Compiler können Sie COLRv1-Schriftarten aus SVG-Quellbildern erstellen und dann in Chrome 98 oder höher ausprobieren. Sie können Bungee Spice auch individuell gestalten, indem Sie die Farbverläufe mithilfe dieser Anleitung ändern.

Sie können beispielsweise die Schriftart „Bungee Spice“ so ändern, dass sie einen blau-roten Farbverlauf hat:

Das Wort „Düne“ in der Farbschriftart „Bungee Spice“ mit blauen und roten Farbverläufen.

Twittern Sie Ihre Ergebnisse an @googlefonts. 🙂 Wie wäre es mit einem radialen oder „Erledigen“-Farbverlauf?

Neu in COLRv1

Das Schriftformat unterstützt mehrere Möglichkeiten zur Unterstützung von Farben, die alle mit unterschiedlichen Kompromissen eingehen. Im Web war jedoch bisher keines davon erfolgreich. Weitere Informationen zu den Vor- und Nachteilen finden Sie in Dominiks Vortrag auf der BlinkOn 15. Chrome 98 unterstützt COLRv1, eine Weiterentwicklung von COLRv0. Wir hoffen, dass COLRv1 mit seiner Kombination aus Grafikfunktionen und kompakten Dateien zu einer guten Wahl für viele Anwendungsfälle mit Farbschriften wird. COLRv1 bietet Farbverläufe, Compositing und Überblendungen und verbessert die interne Wiederverwendung von Formen, um noch kompaktere Dateien zu erstellen.

COLRv1 bietet etwa die gleichen Ausdrucksmöglichkeiten wie SVG Native, zusätzlich zu Misch- und Kompositionsfunktionen. Es gibt vier Arten von Farbfüllungen: Volltonfarben, lineare Farbverläufe, radiale Farbverläufe und Sweep-/Conic-Verläufe. Mit COLRv1 können Sie Schriftzeichenelemente mithilfe einer vollständigen Reihe von Verschiebungs-, Dreh-, Schräg- und Skalierungstransformationen neu positionieren und transformieren. Außerdem unterstützt es Schriftartenvarianten und verwendet vorhandene Formate für die Formdefinition in der Schriftart.

Blaues und lilafarbenes Kristallkugel-Emoji mit wiederverwendeten Sternen auf einer braunen Basis.
Wiederverwendung der Form im Kristallkugel-Emoji

Stellen Sie sich das Kristallkugel-Emoji als Beispiel vor: Die sternförmigen Highlights haben die gleiche Form, aber unterschiedliche Größen. Das bedeutet, dass nur eine Form neu positioniert und wiederverwendet werden kann, ohne sie in der Datei zu duplizieren. Mit diesem Format können Sie ein vollständiges Schriftzeichen in einem neuen Schriftzeichen wiederverwenden, ohne dieselben Formen für jedes Schriftzeichen redundant codieren zu müssen. Stellen Sie sich eine dekorative Farbschriftart mit floralen Verzierungen vor, bei der dieselben Blütenformen auf verschiedene Buchstaben platziert werden, indem einfach auf vorhandene Farbsymbole verwiesen wird. Für den Anwendungsfall von Webschriften lässt sich COLRv1 mit WOFF2 gut komprimieren. Ein Testbuild von Twemoji mit COLRv1 benötigt beispielsweise etwa 1,2 MB, wenn er aufgebläht ist, aber nur etwa 0,6 MB in WOFF2-Form. Eine Version des vollständigen Noto Emoji-Glyphsatzes wurde von 9 MB für die Bitmapversion auf 1,85 MB in COLRv1+woff2-Form reduziert.

Balkendiagramm zum Vergleich von Noto-Emojis in Bitmap- und COLRv1-Schriftart mit etwa 9 MB im Vergleich zu 1, 85 MB
Schriftgröße der Noto Emoji-Schriftart CBDT/CBLC im Vergleich zu COLRv1 nach WOFF2-Komprimierung.

Anwendungsfälle für farbige Schrift

Eingängige Anzeigentitel

Eine kräftige Farbe der Schrift lässt visuelle Highlights, Überschriften und Banner besonders hervorstechen.

Plakato Color Happy 2022 mit dynamischen Farbverläufen, erstellt von der innovativen Schriftgießerei Underware (Twitter: @underware, Instagram: @underwarefoundry). Weitere Informationen zur ersten COLRv1-Version von Underware finden Sie in diesem Blogpost.

Kein Bildersatz mehr: Emoji-Schriftarten

Wenn Sie von Nutzern erstellte Inhalte unterstützen, verwenden Ihre Nutzer wahrscheinlich Emojis. Heutzutage wird Text häufig gescannt und alle Emojis durch Bilder ersetzt, um ein einheitliches plattformübergreifendes Rendering zu ermöglichen und neuere Emojis zu unterstützen, als vom Betriebssystem unterstützt werden. Diese Bilder müssen dann bei Zwischenablage-Vorgängen wieder in Text umgewandelt werden. Hier ein praktisches Beispiel:

Ein Code-Snippet mit Inline-Bildern als img-Tags und Metadaten als Teil eines Chatverlaufs
Bilder in Google Chat ersetzen

Wenn Sie eine Emoji-Schriftart haben, rendern Sie den Text einfach in der Schriftart, so:

<style>
@import url(https://fonts.googleapis.com/css2?family=Noto+Color+Emoji);

.emoji {
  font-family: "Noto Color Emoji", sans-serif;
}
</style>
<span class="emoji">🙂</span>

In einer Emoji-Reaktionskomponente bietet COLRv1 ebenfalls die Möglichkeit, eine kompakte Schriftdatei anstelle eines Katalogs mit Bild-Assets zu verwenden.

Benutzeroberfläche der Emoji-Auswahl auf GitHub
Emoji-Reaktionsauswahl auf GitHub

Stellen Sie sich vor, wie viele Bilder Sie bräuchten, um eine vollständige Emoji-Auswahl zu erhalten.

Farbe in Symbolschriftarten

Die Verwendung von Farbe in Symbolschriften sorgt für Klarheit und erleichtert das Verständnis der Symbole.

Drei grüne Symbole in einem
schwarzen Rahmen
Material-Doppeltonsymbole von https://fonts.google.com/icons

Künstlerischer Ausdruck

Platzsparende Farbschriften ermöglichen neue Formen des künstlerischen Ausdrucks im Web. In diesem Beispiel einer arabischen Schrift im Kufi-Stil werden Farbverläufe als künstlerische Interpretation des Tintenflusses der traditionellen Kalligrafie verwendet, wenn sie auf den Kufi-Stil der arabischen Schrift angewendet wird. Dieser Stil stammt aus der Zeit, als die Schrift nicht mit Feder und Tinte geschrieben, sondern in Stein gemeißelt wurde.

Arabische Buchstaben mit Farbverläufen von Schwarz nach Rot.
Reem Kufi Ink, ein arabischer Schriftschnitt von Khaled Hosny

Funktionserkennung

Derzeit können Sie herausfinden, ob eine Browser-Engine ein bestimmtes Farbschriftformat unterstützt, indem Sie den User-Agent sniffen oder in einer Bibliothek wie ChromaCheck von @PixelAmbacht nachsehen, um das Rendern von Farbglyphen auf Canvas zu testen. Beide Lösungen sind nicht optimal. Funktionstests sollten nur eine bestimmte Funktion selbst erkennen und ein User-Agent-Sniffing vermeiden. Die ChromaCheck-Bibliothek sollte keine ressourcenintensiven 2D-Canvas-Vorgänge zur Bestimmung der Unterstützung ausführen müssen.

Das Chrome-Team möchte das verbessern und hat eine Reihe von Diskussionen [1, 2] in der CSS-Arbeitsgruppe gestartet, um Informationen zur Unterstützung von Browser-Schrifttechnologien in JavaScript und deklarativ in CSS bereitzustellen. Das Team plant, in einer zukünftigen Version von Chrome eine effiziente Funktionserkennung für farbige Schriftarten und andere Schrifttechnologien einzuführen.

Wenn Sie in Ihrem Projekt jetzt schon Farbschriften verwenden möchten, obwohl der COLRv1-Support auf Chrome beschränkt ist, haben Sie zwei Möglichkeiten: Fragen Sie Ihren Schriftanbieter nach einer COLRv1-Schrift, die auch monochrome Zeichen enthält. User-Agents, die COLRv1 nicht unterstützen, fallen auf das Rendern einfarbiger Zeichen zurück. Alternativ können Sie die ChromaCheck-Bibliothek oder das User-Agent-Sniffing verwenden, um festzustellen, ob COLRv1-Unterstützung verfügbar ist. Anschließend liefern Sie CSS, das COLRv1-Schriftarten in unterstützenden User-Agents lädt, und verwenden in anderen Browsern ein alternatives Schriftformat wie COLRv0, ein Bitmap-Schriftformat oder OpenType SVG.

Unterstützung von CSS-Schriftpaletten

Es wäre äußerst nützlich, wenn die Verwendung eines anderen Farbsatzes keine neue Schriftart erfordern würde. Glücklicherweise gibt es einen Mechanismus: die CSS-Eigenschaft „font-palette“. Das Chrome-Team arbeitet daran, die Unterstützung für die Schriftartenpalette in Chrome hinzuzufügen.

COLRv1-Schriftarten und Sie

Wenn COLRv1-Schriftarten auf Ihr Interesse stoßen, fragen Sie Ihren Schriftartanbieter nach einer COLRv1-Farbschrift, die Sie in Ihrem Projekt verwenden können. Probieren Sie die Beispiele und Demos oben aus oder probieren Sie eigene Schriftarten und Demos aus.

Wenn Sie Feedback zu COLRv1 in Chrome haben, können Sie es in der blink-dev-Mailingliste posten oder ein Problem in unserem Issue Tracker melden. Wenn Sie Feedback zum COLRv1-Schriftartformat selbst haben, können Sie ein Problem im GitHub-Repository der COLRv1-Spezifikation melden.

Mit Chrome 98 freuen wir uns, dass COLRv1 die typografische Kreativität im Web auf ein ganz neues Niveau hebt.

Weitere Informationen

Weitere Informationen finden Sie hier:

Weitere Informationen zur Funktionsweise und Implementierung von COLRv1 in Chrome finden Sie in Dominiks Vortrag auf der BlinkOn 15-Konferenz.

Danksagungen

Vielen Dank an Behdad Esfahbod, Cosimo Lupo, Peter Constable, Ben Wagner, Werner Lemberg, Dave Crossland, Vladimir Levantovsky, Jonathan Kew, Laurence Penney, Chris Lilley, David Jonathan Ross, Underware, Just van Rossum, Roel Nieskens und andere für ihre Beiträge zu COLRv1.