czcionki wektorowe z gradientem kolorów COLRv1 w Chrome 98

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

Kompaktowe, łatwe do kompresji, kolorowe czcionki wektorowe z ulubionymi gradientami.

W Chrome 98 zespoły Chrome i Fonts dodały obsługę formatu COLRv1, który jest rozwinięciem formatu czcionek COLRv0. Ma on na celu rozpowszechnienie czcionek kolorowych przez dodanie gradientów, kompozycji i mieszania oraz ulepszone wewnętrzne ponowne wykorzystanie kształtów, co pozwala uzyskać wyraźne i kompaktowe pliki czcionek, które można dobrze skompresować.

Koloruj teraz

W internecie tekst jest zwykle rysowany w kolorze określonym w CSS. Czcionka nie określa żadnego konkretnego koloru, a jedynie wskazuje, gdzie powinny znajdować się piksele. To zwykle dobra rzecz. CSS umożliwia autorowi elastyczny wybór koloru. Czasami jednak glif zawiera wiele kolorów, które razem mają znaczenie. Na przykład ta flaga Flaga osób transpłciowych składająca się z jasnoniebieskich i jasnoróżowych pasów. z jasnoniebieskimi, różowymi i białymi paskami nie miałaby tego samego znaczenia, gdyby była po prostu narysowana w bieżącym kolorze tekstu.

Obecnie większość użytkowników widzi tylko kolorowe czcionki w postaci emoji. Emotikony zwykle pojawiają się w internecie za pomocą systemowej czcionki emotikonów lub przez wstawianie obrazów (co wiąże się z własnymi komplikacjami Panda
emoji ze smutnym wyrazem twarzy.). Duże rozmiary plików, zwłaszcza w przypadku kolorowych czcionek bitmapowych, utrudniają używanie czcionek internetowych do wyświetlania emotikonów. Mamy nadzieję, że dzięki obsłudze COLRv1 na stronach internetowych i w innych miejscach będzie można częściej używać kreatywnych czcionek kolorowych.

Możesz teraz tworzyć własne czcionki COLRv1 za pomocą bezpłatnych narzędzi open source. Sprawdź kompilator czcionek nanoemoji, który umożliwia tworzenie czcionek COLRv1 z obrazów źródłowych SVG, a potem wypróbuj je w Chrome 98 lub nowszym. Spróbuj stworzyć własną wersję Bungee Spice, zmieniając kolory gradientu zgodnie z tymi instrukcjami.

Możesz na przykład zmodyfikować czcionkę Bungee Spice, aby miała gradient niebiesko-czerwony, jak w tym przykładzie:

Słowo „dune” w kolorowej czcionce Bungee Spice, w odcieniach niebieskiego i czerwonego gradientu.

Podziel się wynikami na Twitterze, oznaczając @googlefonts 🙂 A może wypróbujesz gradient promieniowy lub kątowy?

Nowości w COLRv1

Format czcionki obsługuje wiele sposobów obsługi kolorów, z których każdy ma inne wady i zalety, ale żaden z nich nie sprawdził się dotychczas w internecie. (Więcej informacji o kompromisach znajdziesz w prezentacji Dominika na konferencji BlinkOn 15). Chrome 98 obsługuje COLRv1, czyli rozwinięcie COLRv0. Mamy nadzieję, że połączenie możliwości graficznych i kompaktowych plików COLRv1 sprawi, że będzie to dobry wybór w wielu zastosowaniach czcionek kolorowych. Format COLRv1 dodaje gradienty, komponowanie i mieszanie oraz ulepsza wewnętrzne ponowne wykorzystanie kształtów, aby tworzyć jeszcze bardziej kompaktowe pliki.

Format COLRv1 ma możliwości ekspresyjne w przybliżeniu odpowiadające natywnemu formatowi SVG plus mieszanie i kompozycja. Istnieją 4 rodzaje wypełnień kolorem: jednolite kolory, gradienty liniowe, gradienty promieniowe i gradienty kątowe. Format COLRv1 umożliwia zmianę położenia i przekształcanie elementów glifów za pomocą pełnego zestawu przekształceń: przesunięcia, obrotu, pochylenia i skalowania. Obsługuje też warianty czcionek i ponownie wykorzystuje istniejące formaty definicji kształtów w czcionce.

Niebieska i fioletowa kula kryształowa z ponownie wykorzystanymi gwiazdami na brązowej podstawie.
Ponowne wykorzystanie kształtu w emotikonie szklanej kuli

Weźmy na przykład kulę kryształową: gwiazdki są tego samego kształtu, ale mają różne rozmiary, co oznacza, że jeden kształt można zmienić i ponownie wykorzystać bez duplikowania w pliku. Ten format umożliwia ponowne użycie pełnego glifu w nowym glifie bez konieczności redundantnego kodowania tych samych kształtów dla każdego glifu. Wyobraź sobie dekoracyjną czcionkę kolorową z kwiatowymi ozdobami, w której te same kształty kwiatów są umieszczane na różnych literach przez odwoływanie się do istniejących glifów kolorowych. W przypadku czcionek internetowych format COLRv1 jest dobrze kompresowany w formacie WOFF2. Na przykład testowa wersja Twemoji korzystająca z COLRv1 zajmuje po rozpakowaniu około 1,2 MB, ale w formacie WOFF2 ma około 0,6 MB. Rozmiar kompilacji pełnego zestawu glifów Noto Emoji zmniejszył się z 9 MB w przypadku wersji bitmapowej do 1,85 MB w przypadku formatu COLRv1+woff2.

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

Zastosowania czcionek kolorowych

Koniec zastępowania obrazów: czcionki emoji

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 napotkane emotikony obrazami, aby zapewnić spójne renderowanie na różnych platformach i możliwość obsługi nowszych emotikonów niż te, które są obsługiwane przez system operacyjny. Podczas operacji na schowku trzeba je z powrotem zamienić na tekst. Oto prawdziwy przykład:

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

Jeśli masz czcionkę emoji, po prostu wyrenderuj tekst w tej czcionce, np. tak:

<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 przy użyciu emotikona COLRv1 umożliwia użycie kompaktowego pliku czcionki zamiast katalogu komponentów obrazu.

Interfejs wyboru emoji używany w GitHubie
Selektor reakcji w postaci emoji na GitHubie

Wyobraź sobie, ile obrazów musiałby pobrać selektor emotikonów.

Kolor w czcionkach ikon

Użycie koloru w czcionkach ikon zwiększa przejrzystość i ułatwia zrozumienie glifów.

Trzy zielone ikony z czarnym obrysem
Dwukolorowe ikony Material z https://fonts.google.com/icons

wyrażanie artystyczne,

Oszczędne miejsce czcionki kolorowe umożliwiają nowe formy artystycznego wyrazu w tekście w internecie. Ten przykład arabskiej czcionki w stylu kufickim wykorzystuje gradienty kolorów jako artystyczną interpretację tego, jak przepływ atramentu w tradycyjnej kaligrafii mógłby wyglądać w przypadku stylu kufickiego pisma arabskiego, który wywodzi się z tego, że nie był pisany piórem i atramentem, ale rzeźbiony w kamieniu.

Litery arabskie z gradientami od czarnego do czerwonego.
Reem Kufi Ink, czcionka arabska autorstwa Khaleda Hosny’ego

Wykrywanie cech

Obecnie można sprawdzić, czy silnik przeglądarki obsługuje określony format czcionki kolorowej, za pomocą wykrywania klienta użytkownika lub wyszukując w bibliotece takiej jak ChromaCheck autorstwa @PixelAmbacht, aby przetestować renderowanie glifów kolorowych na elemencie Canvas. Oba rozwiązania nie są optymalne. Testowanie funkcji powinno wykrywać tylko konkretną funkcję i nie powinno obejmować wykrywania klientów. Biblioteka ChromaCheck nie powinna wykonywać operacji na płótnie 2D wymagających dużych zasobów, aby określić obsługę.

Zespół Chrome chce to zmienić i rozpoczął serię dyskusji [1, 2] w grupie roboczej CSS, aby przekazać informacje o obsłudze technologii czcionek w przeglądarce w JavaScript i deklaratywnie w CSS. Zespół planuje udostępnić w przyszłej wersji Chrome wydajne wykrywanie funkcji 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ę czcionki o czcionkę COLRv1, która zawiera też glify monochromatyczne. Klienty użytkownika, które nie obsługują COLRv1, będą renderować glify w odcieniach szarości. Możesz też użyć biblioteki ChromaCheck lub wykrywania typu przeglądarki, aby sprawdzić, czy COLRv1 jest obsługiwany. Następnie dostarczasz CSS, który w obsługujących agentach użytkownika wczytuje czcionki COLRv1, a w innych przeglądarkach używasz alternatywnego formatu czcionki, np. COLRv0, formatu czcionki bitmapowej lub OpenType SVG.

Obsługa palety czcionek CSS

Byłoby bardzo przydatne, gdyby użycie innego zestawu kolorów nie wymagało nowej 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

Jeśli interesują Cię czcionki COLRv1, zapytaj dostawcę czcionek o czcionkę COLRv1, której możesz użyć w swoim projekcie. Możesz też wypróbować przykłady i wersje demonstracyjne powyżej lub od razu zacząć eksperymentować i tworzyć własne czcionki.

Jeśli masz opinię na temat COLRv1 w Chrome, opublikuj ją na liście mailingowej blink-dev lub zgłoś problem w naszym systemie śledzenia problemów. Jeśli masz uwagi dotyczące samego formatu czcionki COLRv1, zgłoś problem w repozytorium GitHub specyfikacji COLRv1.

W Chrome 98 z radością obserwujemy, jak COLRv1 wprowadza zupełnie nowy poziom kreatywności typograficznej w internecie.

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 zaimplementowany w Chrome, obejrzyj prezentację Dominika z konferencji BlinkOn 15.

Podziękowania

Dziękujemy Behdadowi Esfahbodowi, Cosimo Lupo, Peterowi Constable, Benowi Wagnerowi, Wernerowi Lembergowi, Dave’owi Crosslandowi, Władimirowi Lewantowskiemu, Jonathanowi Kew, Laurence’owi Penneyowi, Chrisowi Lilleyowi, Davidowi Jonathanowi Rossowi, Underware, Justowi van Rossumowi, Roelowi Nieskensowi i innym osobom za ich wkład w COLRv1.