Polices vectorielles avec dégradé de couleurs COLRv1 dans Chrome 98

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

Polices vectorielles couleur compactes, compatibles avec la compression et avec tous vos dégradés préférés.

Dans Chrome 98, les équipes Chrome et Fonts ont ajouté la prise en charge de COLRv1, une évolution du format de police COLRv0 visant à étendre les polices de couleur en ajoutant des dégradés, en combinant et en combinant des éléments et en améliorant la réutilisation des formes internes pour des fichiers de police compacts et nets qui se compressent bien.

Couleur maintenant

Sur le Web, le texte est généralement affiché dans une couleur spécifiée en CSS. La police ne définit aucune couleur particulière, elle indique simplement où les pixels doivent être placés. C'est généralement une bonne chose. Le CSS permet à l'auteur de choisir une couleur de manière flexible. Cependant, il arrive qu'un glyphe contienne plusieurs couleurs qui, ensemble, ont une signification. Par exemple, ce drapeau Drapeau transgenre composé de bandes bleu clair et rose clair. à rayures bleu clair, rose et blanc n'aurait pas la même signification s'il était simplement dessiné dans la couleur de texte actuelle.

Aujourd'hui, pour la plupart des utilisateurs, les emoji sont les seules polices de couleur qu'ils voient. Les emoji apparaissent généralement sur le Web via la police d'emoji du système ou en insérant des images (ce qui présente ses propres complications, Emoji panda avec une expression faciale triste.). Les fichiers de grande taille, en particulier pour les polices de couleur basées sur des bitmaps, ont rendu difficile l'utilisation de polices Web pour les emoji. En prenant en charge COLRv1, nous espérons voir une prolifération d'utilisation créative de polices de couleur sur le Web et au-delà.

Montre-moi tes couleurs

Nous avons créé quelques exemples à tester:

Les exemples d'éléments Google Fonts utilisés dans l'exemple sont disponibles dans l'API Web Google Fonts. Elles ne sont pas listées dans le répertoire fonts.google.com, car elles ne fonctionnent que sur Chrome 98 ou version ultérieure et présentent des travaux expérimentaux.

Vous pouvez désormais créer vos propres polices COLRv1 à l'aide d'outils Open Source et sans frais. Découvrez le compilateur de polices nanoemoji, qui vous permet de créer des polices COLRv1 à partir d'images sources SVG, puis de les essayer dans Chrome 98 ou version ultérieure. Essayez de modifier Bungee Spice en modifiant les couleurs du dégradé en suivant ces instructions.

Par exemple, vous pouvez modifier la police Bungee Spice pour qu'elle comporte un dégradé bleu et rouge, comme suit:

Le mot "dune" dans la police de caractères Bungee Spice, dans des tons bleus et rouges

Envoyez vos résultats sur tweet à @googlefonts 😃 Pourquoi ne pas essayer un dégradé radial ou "Balayage" ?

Nouveau avec COLRv1

Le format de police accepte plusieurs méthodes de gestion des couleurs, toutes avec des compromis différents. Toutefois, aucune n'a été couronnée de succès sur le Web jusqu'à présent. (Pour en savoir plus sur les compromis, regardez la conférence de Dominik lors de BlinkOn 15.) Chrome 98 est compatible avec COLRv1, une évolution de COLRv0. Nous espérons que la combinaison des fonctionnalités graphiques et des fichiers compacts de COLRv1 en fera un bon choix pour de nombreux cas d'utilisation de polices de couleur. COLRv1 ajoute des dégradés, des compositages et des mélanges, et améliore la réutilisation des formes internes pour créer des fichiers encore plus compacts.

COLRv1 possède des capacités d'expression à peu près équivalentes à celles du format SVG natif, auxquelles s'ajoutent la combinaison et la composition. Il existe quatre types de remplissages de couleurs: les couleurs unies, les dégradés linéaires, les dégradés radiaux et les dégradés coniques ou de balayage. COLRv1 vous permet de repositionner et de transformer les éléments de glyphe à l'aide d'un ensemble complet de transformations de translation, de rotation, d'inclinaison et de redimensionnement. De plus, il est compatible avec les variations de police et réutilise les formats de définition de forme existants dans la police.

Emoji boule de cristal bleue et violette avec des étoiles réutilisées sur une base brune.
Réutilisation de la forme dans l'emoji boule de cristal

Prenons l'exemple de l'emoji boule de cristal: les rehauts en forme d'étoile sont de la même forme, mais de différentes tailles. Cela signifie qu'une seule forme peut être repositionnée et réutilisée sans duplication dans le fichier. Ce format vous permet de réutiliser un glyphe complet dans un nouveau glyphe, sans avoir à encoder de manière redondante les mêmes formes pour chaque glyphe. Imaginez une police de couleur décorative avec des décorations florales, où les mêmes formes de fleurs sont placées sur différentes lettres en référençant simplement des glyphes de couleur existants. Pour le cas d'utilisation des polices Web, COLRv1 se compresse bien en dessous de woff2. Par exemple, un build de test de Twemoji utilisant COLRv1 occupe environ 1,2 Mo gonflé, mais environ 0,6 Mo au format woff2. La compilation de l'ensemble complet de glyphes Noto Emoji est réduite de 9 Mo pour la version bitmap à 1,85 Mo au format COLRv1+woff2.

Graphique à barres comparant Noto Emoji en tant que police bitmap et la police COLRv1, environ 9 Mo contre 1,85 Mo
Taille de la police Noto Emoji CBDT/CBLC par rapport à COLRv1 après compression WOFF2.

Cas d'utilisation de la police de couleur

Titres accrocheurs

Une police de couleur fraîche fait ressortir les points forts visuels, les titres et les bannières.

Plakato Color Happy 2022 avec des dégradés énergétiques, créé par la fonderie de caractères innovante Underware (Twitter: @underware, Instagram: @underwarefoundry). Pour en savoir plus sur la première version de COLRv1 d'Underware, consultez son article de blog.

Fini le remplacement d'images: polices d'emoji

Si vous acceptez les contenus générés par les utilisateurs, vos utilisateurs utilisent probablement des emoji. Aujourd'hui, il est très courant d'analyser le texte et de remplacer tous les emoji rencontrés par des images afin de garantir un rendu multiplate-forme cohérent et la prise en charge des emoji plus récents que l'OS. Ces images doivent ensuite être converties en texte lors des opérations de presse-papiers. Voici un exemple réel:

Extrait de code montrant des images intégrées sous forme de balises img et de métadonnées dans un historique de chat
Remplacement d'images dans Google Chat

Si vous utilisez une police emoji, affichez simplement le texte dans la police, comme ceci:

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

De même, dans un composant de réaction emoji, COLRv1 offre la possibilité d'utiliser un fichier de police compact au lieu d'un catalogue d'assets image.

Interface utilisateur du sélecteur d&#39;emojis utilisé sur GitHub
Sélecteur de réaction emoji sur GitHub

Imaginez le nombre d'images qu'il vous faudrait extraire pour un sélecteur d'emoji complet.

Couleur dans les polices d'icône

L'utilisation de la couleur dans les polices d'icônes permet de clarifier les glyphes et de les rendre plus faciles à comprendre.

Trois icônes vertes en contour noir
Icônes Material bicolore de https://fonts.google.com/icons

Expression artistique

Des polices colorées, économes en espace offrent de nouvelles formes d'expression artistique dans le texte sur le Web. Cet exemple de police arabe de style kufi utilise des dégradés de couleurs pour interpréter artistiquement ce à quoi pourrait ressembler le flux d'encre de la calligraphie traditionnelle lorsqu'il était appliqué au style kufi de l'écriture arabe, qui provient de l'écriture non écrite à la pointe et à l'encre, mais taillée dans la pierre.

Lettres arabes avec des dégradés du noir au rouge.
Reem Kufi Ink, une police arabe créée par Khaled Hosny

Détection de fonctionnalités

Pour le moment, il est possible de déterminer si un moteur de navigateur est compatible avec un format de police de couleur spécifique à l'aide de l'analyse de l'user-agent ou en effectuant une recherche dans une bibliothèque telle que ChromaCheck de @PixelAmbacht pour tester le rendu des glyphes de couleur sur Canvas. Ces deux solutions ne sont pas optimales. Les tests de fonctionnalités ne doivent détecter qu'une fonctionnalité spécifique et éviter l'analyse de l'agent utilisateur. La bibliothèque ChromaCheck ne devrait pas avoir besoin d'effectuer d'opérations de canevas 2D gourmandes en ressources pour déterminer la compatibilité.

L'équipe Chrome souhaite améliorer ce point et a lancé une série de discussions [1, 2] dans le groupe de travail CSS pour fournir des informations sur la prise en charge de la technologie de polices de navigateur en JavaScript et de manière déclarative en CSS. L'équipe prévoit de lancer une détection de fonctionnalités efficace pour les polices de couleur et d'autres technologies de polices dans une prochaine version de Chrome.

Si vous souhaitez utiliser des polices de couleur dans votre projet dès maintenant, alors que la prise en charge de COLRv1 est limitée à Chrome, vous avez deux options: Demandez à votre fournisseur de polices une police COLRv1 qui contient également des glyphes monochromes. Les user-agents qui ne sont pas compatibles avec COLRv1 utiliseront le rendu des glyphes monochromes. Vous pouvez également utiliser la bibliothèque ChromaCheck ou l'analyse des user-agents pour déterminer si la prise en charge de COLRv1 est disponible. Vous envoyez ensuite du code CSS qui charge les polices COLRv1 dans les agents utilisateur compatibles et utilisez un autre format de police, tel que COLRv0, un format de police bitmap ou OpenType SVG dans d'autres navigateurs.

Prise en charge de la palette de polices CSS

Il serait extrêmement utile que l'utilisation d'un autre ensemble de couleurs ne nécessite pas de nouvelle police. Heureusement, un mécanisme existe: la propriété CSS font-palette. L'équipe Chrome travaille actuellement à l'ajout de la prise en charge des palettes de polices dans Chrome.

Polices COLRv1 et vous

Si les polices COLRv1 vous intéressent, demandez à votre fournisseur de polices une police de couleur COLRv1 à utiliser dans votre projet, essayez les exemples et démonstrations ci-dessus, ou pourquoi ne pas vous lancer et créer votre propre police ?

Si vous avez des commentaires sur COLRv1 dans Chrome, publiez-les sur la liste de diffusion blink-dev ou signalez un problème dans notre Issue Tracker. Si vous avez des commentaires sur le format de police COLRv1 lui-même, signalez un problème dans le dépôt GitHub de la spécification COLRv1.

Avec Chrome 98, nous sommes ravis de voir comment COLRv1 apporte un tout nouveau niveau de créativité typographique sur le Web.

En savoir plus

Pour en savoir plus, consultez les ressources suivantes:

Pour en savoir plus sur le fonctionnement et l'implémentation de COLRv1 dans Chrome, regardez la conférence de Dominik lors de BlinkOn 15.

Remerciements

Merci beaucoup à 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 et d'autres pour leur contribution à COLRv1.