czcionki wektorowe z gradientem kolorów COLRv1 w Chrome 98

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

Kompaktowe, skompresowane, kolorowe czcionki wektorowe z wszystkimi ulubionymi gradientami.

W Chrome 98 zespoły Chrome i Fonts dodały obsługę COLRv1, która jest ewolucją formatu czcionek COLRv0. Ma on na celu upowszechnienie czcionek kolorowych poprzez dodanie gradientów, kompozytowania i mieszania oraz ulepszonego ponownego używania kształtów wewnętrznych. Dzięki temu pliki czcionek są wyraźne i kompaktowe, a także dobrze się kompresują.

Kolor teraz

W internecie tekst jest zwykle wyświetlany w kolorze określonym w kodzie CSS. Rodzaj czcionki nie definiuje żadnego konkretnego koloru, tylko wskazuje, gdzie powinny znajdować się piksele. Zwykle to wystarczy. CSS pozwala autorowi elastycznie wybrać kolor. Czasami jednak glif zawiera kilka kolorów, które razem mają znaczenie. Na przykład flaga Flaga osób transpłciowych składająca się z pasów w jasnym niebieskim i blado różowym kolorze. z paskami w kolorze jasnoniebieskim, różowym i białym nie przekazałaby tego samego znaczenia, gdyby została narysowana w bieżącym kolorze tekstu.

Obecnie dla większości użytkowników emotikony są jedynymi kolorowymi czcionkami. Emotikony pojawiają się w internecie zazwyczaj za pomocą czcionki emotikonów systemu lub przez wstawianie obrazów (co wiąże się z pewnymi komplikacjami, Emotikon panda
ze smutnym wyrazem twarzy.). Duże rozmiary plików, zwłaszcza w przypadku czcionek kolorowych opartych na bitmapach, utrudniają używanie czcionek internetowych do emotikonów. Mamy nadzieję, że dzięki obsłudze COLRv1 czcionki kolorowe będą szerzej wykorzystywane w internecie i poza nim.

Pokaż swoje kolory

Utworzyliśmy kilka przykładów, z których możesz korzystać:

Przykładowe zasoby z Google Fonts użyte w tym przykładzie są dostępne w interfejsie Google Fonts Web API. Nie ma ich w katalogu pod adresem fonts.google.com, ponieważ działają one tylko w Chrome 98 lub nowszej i prezentują prace eksperymentalne.

Teraz możesz tworzyć własne czcionki COLRv1 za pomocą bezpłatnych narzędzi open source. Zapoznaj się z kompilatorem czcionek nanoemoji, który umożliwia tworzenie czcionek COLRv1 na podstawie obrazów źródłowych SVG, a następnie wypróbuj je w przeglądarce Chrome 98 lub nowszej. Spróbuj nadać własnego charakteru motywowi Bungee Spice, zmieniając kolory gradientu za pomocą tych instrukcji.

Możesz na przykład zmodyfikować czcionkę Bungee Spice, aby miała gradient w kolorach niebieskim i czerwonym:

Słowo „dune” w kolorze czcionki Bungee Spice z niebieskim i czerwonym gradientem.

Udostępnij wyniki w tweetach na koncie @googlefonts. 🙂 Możesz też spróbować gradientu promieniowego lub skręconego.

Nowość w COLRv1

Format czcionek obsługuje wiele sposobów obsługi kolorów, z różnymi kompromisami, ale żaden z nich nie sprawdził się do tej pory w internecie. (Aby dowiedzieć się więcej o kompromisach, obejrzyj prezentację konferencyjną firmy Dominik „BlinkOn 15”. Chrome 98 obsługuje COLRv1, który jest ewolucją COLRv0. Mamy nadzieję, że połączenie możliwości graficznych i kompaktowych plików w COLRv1 sprawi, że będzie to dobry wybór w wielu zastosowaniach kolorowych czcionek. COLRv1 dodaje gradienty, kompozycję i mieszanie oraz ulepsza ponowne wykorzystanie kształtów wewnętrznych, aby jeszcze bardziej zoptymalizować rozmiar plików.

COLRv1 ma możliwości porównywalne z SVG Native, a dodatkowo dodano do niego blendowanie i kompozycję. Istnieją 4 typy wypełnienia kolorem: jednolite kolory, gradienty liniowe, gradienty promieniowe i gradienty styczne. COLRv1 umożliwia zmianę położenia i przekształcenie elementów glifów za pomocą pełnego zestawu przekształceń przesunięcia, obrotu, skręcenia i skalowania. Obsługuje też różne czcionki i ponowne użycie istniejących formatów definicji kształtów w czcionce.

Niebiesko-fioletowa kula kryształowa z ponownie użytymi gwiazdami na brązowej podstawie.
Ponowne użycie kształtu w emotikonie kryształowej kuli

Weźmy na przykład emotikon kryształowej kuli: wyróżnienia w kształcie gwiazd mają ten sam kształt, ale różne rozmiary, co oznacza, że w pliku można przemieścić i ponownie użyć tylko jednego kształtu bez jego powielania. Format ten pozwala ponownie wykorzystać pełny glif w obrębie nowego glifu bez konieczności zbędnego kodowania tych samych kształtów dla każdego glifu. Wyobraź sobie kolorową czcionkę z ozdobami kwiatowymi, w której te same kształty kwiatów są umieszczane na różnych literach, tylko przez odniesienie do istniejących kolorowych glifów. W przypadku czcionek internetowych COLRv1 dobrze się kompresuje w formacie woff2. Na przykład testowa wersja Twemoji korzystająca z COLRv1 zajmuje po rozszerzeniu około 1,2 MB, ale w formie woff2 zajmuje około 0,6 MB. Wersja kompilowana pełnego zestawu glifów Noto Emoji została zmniejszona z 9 MB (wersja bitmapowa) do 1,85 MB w formie COLRv1+woff2.

Wykres słupkowy porównujący czcionkę Noto Emoji jako czcionkę bitmapową i czcionkę COLRv1 (około 9 MB) z czcionką COLRv1 (1, 85 MB)
Rozmiar czcionki Noto Emoji CBDT/CBLC w porównaniu z COLRv1 po skompresowaniu za pomocą WOFF2.

Zastosowania kolorowej czcionki

chwytliwe nagłówki;

Odświeżający kolor czcionki sprawi, że wyróżnienia, nagłówki i banery będą się wyróżniać.

Plakat Color Happy 2022 z energicznymi gradientami, stworzony przez innowacyjne studio typograficzne Underware (Twitter: @underware, Instagram: @underwarefoundry). Więcej informacji o pierwszej wersji COLRv1 Underware znajdziesz w poście na blogu.

Koniec z zastępowaniem obrazów: czcionki emotikonów

Jeśli obsługujesz treści użytkowników, prawdopodobnie używają oni emotikonów. Obecnie bardzo często skanuje się tekst i zastępuje dowolne emotikony obrazami, aby zapewnić spójne renderowanie na różnych platformach oraz obsługę nowszych emotikonów niż te obsługiwane przez system operacyjny. Następnie podczas operacji na schowku te obrazy trzeba zmienić z powrotem na tekst. Oto przykład:

Fragment kodu pokazujący obrazy wbudowane jako tagi img i metadane w ramach historii czatu
Zastępowanie obrazów w Google Chat

Jeśli masz czcionkę emotikonów, po prostu renderuj tekst w tej czcionce:

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

Podobnie w komponencie reakcji emotikonów COLRv1 umożliwia użycie kompaktowego pliku czcionek zamiast katalogu zasobów graficznych.

Interfejs selektora emotikonów używany w serwisie GitHub
Selektor emotikonów w GitHub

Wyobraź sobie, ile obrazów musisz pobrać, żeby uzyskać kompletny selektor emotikonów.

Kolory czcionek ikon

Używanie kolorów w czcionkach ikon zwiększa ich czytelność i ułatwia zrozumienie glifów.

Trzy zielone ikony w czarnym konturze
Dwukolorowe ikony materiałowe ze strony https://fonts.google.com/icons

Ekspresja artystyczna

Kolorowe czcionki, które nie zajmują dużo miejsca, umożliwiają nowe formy ekspresji artystycznej w tekście w internecie. Ten przykład arabskiej czcionki w stylu Kufi wykorzystuje gradienty kolorów jako artystyczną interpretację tego, jak może wyglądać przepływ atramentu tradycyjnej kaligrafii po zastosowaniu w stylu arabskim kaligrafii Kufi, wywodzącej się z tego, że nie stworzono z użyciem stalówki i atramentu, lecz wyrzeźbiono w kamieniu.

Litery arabskie z gradientem od czerni do czerwieni.
Reem Kufi Ink, czcionka arabska autorstwa Khaleda Hosny

Wykrywanie cech

Obecnie można sprawdzić, czy silnik przeglądarki obsługuje określony format kolorów czcionki, za pomocą sniffera klienta użytkownika lub wyszukiwania w bibliotece takiej jak ChromaCheck autorstwa @PixelAmbacht, aby przetestować renderowanie kolorowych glif na Canvas. Oba rozwiązania nie są optymalne. Testowanie funkcji powinno wykrywać tylko konkretną funkcję, a nie wykorzystywać wykrywania klienta. Biblioteka ChromaCheck nie powinna wykonywać operacji na kanwach 2D, które wymagają wielu zasobów, aby określić poziom wsparcia.

Zespół Chrome chce to zmienić i rozpoczął serię dyskusji w grupie roboczej CSS, aby przekazać informacje o obsługiwaniu technologii czcionek w przeglądarce w JavaScript i deklaratywnie w CSS. W przyszłej wersji Chrome zespół planuje wdrożyć skuteczne wykrywanie funkcji w przypadku czcionek kolorowych i innych technologii czcionek.

Jeśli chcesz już teraz używać w projekcie czcionek kolorowych, gdy obsługa COLRv1 jest ograniczona do Chrome, możesz to zrobić na 2 sposoby: poproś dostawcę czcionek o czcionkę COLRv1, która zawiera też znaki monochromatyczne. Aplikacje, które nie obsługują COLRv1, będą renderować monochromatyczne glify. Możesz też użyć biblioteki ChromaCheck lub sniffera user agent, aby sprawdzić, czy obsługa COLRv1 jest dostępna. Następnie przesyłasz kod CSS, który wczytuje czcionki COLRv1 w obsługiwanych agentach użytkownika, a w innych przeglądarkach używa czcionek w formacie alternatywnym, np. COLRv0, czcionek bitmapowych lub czcionek OpenType SVG.

Obsługa palety czcionek CSS

Bardzo przydatne byłoby, gdyby użycie innego zestawu kolorów nie wymagało użycia nowego czcionki. Na szczęście istnieje mechanizm, który to umożliwia: właściwość CSS font-palette. Zespół Chrome pracuje nad dodaniem obsługi palety czcionek w Chrome.

Czcionki COLRv1 i Ty

Jeśli fonty COLRv1 wzbudzają Twoje zainteresowanie, poproś dostawcę czcionek o czcionkę kolorową COLRv1 do użycia w projekcie. Możesz też skorzystać z przykładów i demonstracji podanych powyżej lub spróbować stworzyć własną.

Jeśli chcesz podzielić się opinią na temat COLRv1 w Chrome, opublikuj ją na liście mailingowej blink-dev lub zgłosić problem w naszym systemie śledzenia błędów. Jeśli chcesz przekazać opinię na temat formatu czcionek COLRv1, zgłoś problem w repozytorium GitHub ze specyfikacją COLRv1.

W Chrome 98 wprowadzamy COLRv1, który wprowadza do sieci zupełnie nowy poziom kreatywności typograficznej.

Więcej informacji

Jeśli chcesz dowiedzieć się więcej, zapoznaj się z tymi materiałami:

Aby dowiedzieć się, jak działa COLRv1 i jak jest ono wdrażane w Chrome, obejrzyj wykład Dominika z konferencji BlinkOn 15.

Podziękowania

Dziękujemy Behdadowi Esfahbodowi, Cosimo Lupo, Peterowi Constable’owi, Benowi Wagnerowi, Wernerowi Lembergowi, Dave’owi Crosslandowi, Vladimirowi Levantovskiemu, Jonathanowi Kewowi, Laurence’owi Penney’owi, Chrisowi Lilley’owi, Davidowi Jonathanowi Rossowi, Underware, Just van Rossumowi, Roelowi Nieskensowi i innym za wkład w COLRv1.