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 ze wszystkimi ulubionymi rodzajami gradientu.

W Chrome 98 zespoły Chrome i Fonts dodały obsługę COLRv1, ewolucji formatu czcionek COLRv0, która ma na celu powszechne rozpowszechnienie czcionek kolorów dzięki dodaniu gradientów, komponowania i mieszania. Ulepszyliśmy też ponowne wykorzystywanie kształtów wewnętrznych w celu uzyskania wyraźnych i kompaktowych plików czcionek.

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 należy umieścić piksele. To zwykle jest dobre rozwiązanie. CSS umożliwia autorowi elastyczne wybieranie koloru. Czasami glify zawierają wiele kolorów, które razem mają znaczenie. Na przykład flaga Flaga osoby transpłciowej składająca się z jasnoniebieskich i jasnoróżowych pasów. z pasami w kolorze jasnoniebieskim, różowym i białym nie oddaje tego samego znaczenia, jeśli zostałaby narysowana w bieżącym kolorze tekstu.

Obecnie dla większości użytkowników emotikony są jedynymi wyświetlanymi czcionkami w różnych kolorach. Emotikony pojawiają się w internecie za pomocą systemowej czcionki emotikonów lub wstawiania obrazów (mających własne widżety Emotikon pandy ze smutną miną.). Duże pliki, przeznaczone specjalnie dla kolorowych czcionek bazujących na bitmapach, utrudniają używanie czcionek internetowych jako emotikonów. Dzięki obsłudze COLRv1 mamy nadzieję, że w internecie i nie tylko zwiększy się liczba kreatywnych czcionek w różnych kolorach.

Pokaż mi Twoje kolory

Opracowaliśmy kilka przykładów, które możesz wypróbować:

Przykładowe zasoby z Google Fonts użyte w przykładzie są dostępne w interfejsie internetowym Google Fonts. Nie są one wymienione w katalogu fonts.google.com, ponieważ działają tylko w Chrome 98 lub nowszej wersji i przedstawiają prace eksperymentalne.

Teraz możesz tworzyć własne czcionki COLRv1 za pomocą bezpłatnych narzędzi typu open source. Zapoznaj się z kompilatorem czcionek nanoemoji, który pozwala tworzyć czcionki COLRv1 na podstawie obrazów źródłowych SVG, a następnie wypróbować je w Chrome 98 i nowszych wersjach. Spróbuj stworzyć własną odmianę w stylu Bungee Spice, zmieniając kolory gradientu według tych instrukcji.

Można na przykład zmodyfikować czcionkę Bungee Spice, aby dodać niebieski i czerwony gradient w ten sposób:

Słowo „wydma” zapisane w czcionce Bungee Spice, z niebieskim i czerwonym gradientem.

Opublikuj wyniki na Twitterze @googlefonts 🙂 A może wypróbujesz gradient promieniowy lub gradientowy?

Nowość w COLRv1

Format czcionki obsługuje wiele sposobów obsługi koloru, co wiąże się z różnymi wadami, ale jak dotąd żaden z nich nie był skuteczny w internecie. (Aby dowiedzieć się więcej o zaletach, obejrzyj prezentację konferencyjną Dominika BlinkOn 15). Chrome 98 obsługuje COLRv1, nową wersję COLRv0. Mamy nadzieję, że połączenie możliwości graficznych i kompaktowych plików COLRv1 będzie dobrym rozwiązaniem w przypadku wielu kolorów czcionek. COLRv1 dodaje gradienty, komponowanie i mieszanie oraz usprawnia ponowne wykorzystywanie kształtów wewnętrznych, dzięki czemu pliki są jeszcze bardziej kompaktowe.

COLRv1 ma opcje ekspresji, które w przybliżeniu mają możliwości natywne w SVG oraz dodane do niej mieszanie i komponowanie. Istnieją 4 typy wypełnienia kolorem: jednolite kolory, gradienty liniowe, gradientowe promieniowe i gradientowe/stożkowe. COLRv1 umożliwia zmianę położenia i przekształcanie elementów glify za pomocą pełnego zestawu transformacji, obracania, przesunięcia i skalowania. Dodatkowo obsługuje ona różne wersje czcionek i wykorzystuje w czcionce istniejące formaty definicji kształtu.

Niebiesko-fioletowy emotikon z kryształowej kuli z ponownie użytymi gwiazdkami na brązowej podstawie.
Ponowne wykorzystanie kształtu w kryształowej kuli

Weźmy na przykład emotikon kryształowej kuli: wyróżnienia w kształcie gwiazdy mają ten sam kształt, ale różne rozmiary. Oznacza to, że tylko 1 kształt można zmienić w pliku bez jego powielania. Format ten umożliwia ponowne wykorzystanie pełnego glifu w nowym glifie bez konieczności nadmiarowego kodowania tych samych kształtów dla każdego z nich. Weźmy na przykład ozdobną czcionkę z dekoracjami kwiatowymi, w której te same kształty kwiatów są umieszczone na różnych literach, odwołując się tylko do istniejących glifów kolorów. W przypadku użycia czcionki internetowej COLRv1 dobrze kompresuje się w standardzie Woff2. Na przykład kompilacja testowa Twemoji wykorzystującej COLRv1 zajmuje około 1,2 MB, ale w wersji woff2 – 0,6 MB. Kompilacja pełnego zestawu emotikonów Noto zmniejszono z 9 MB dla wersji bitmapy do 1,85 MB w formacie COLRv1+Woff2.

Wykres słupkowy przedstawiający porównanie emotikonów Noto jako czcionki bitmapy i czcionki COLRv1, około 9 MB względem 1,85 MB
Rozmiar czcionki emotikonów Noto: CBDT/CBLC w porównaniu do COLRv1 po kompresji WOFF2.

Przypadki użycia czcionek kolorowych

Ciekawe nagłówki

Nowa czcionka w nowym kolorze pozwala wyróżnić elementy wizualne, nagłówki i banery.

Plakato Color Happy 2022 zawiera energetyczne gradienty sweep stworzone przez firmę Underware (innowacyjną firmę Underware (Twitter: @underware, Instagram: @underwarefoundry). Więcej informacji o pierwszej wersji COLRv1 firmy Underware znajdziesz w poście na blogu.

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

Jeśli popierasz treści użytkowników, prawdopodobnie korzystają oni z emotikonów. Obecnie bardzo powszechne jest skanowanie tekstu i zastępowanie emotikonów napotkanych obrazami, aby zapewnić spójne renderowanie na wielu platformach i obsługę nowych emotikonów obsługiwanych przez system operacyjny. Podczas korzystania ze schowka trzeba je przełączyć z powrotem na tekst. Oto rzeczywisty przykład:

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

Jeśli korzystasz z czcionki emotikonów, tylko renderujesz tekst za pomocą tej czcionki w ten sposób:

<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 emotikonem COLRv1 umożliwia użycie kompaktowego pliku czcionek zamiast katalogu zasobów graficznych.

Interfejs selektora emotikonów używany na GitHubie
Selektor emotikonów na GitHubie

Wyobraź sobie, ile zdjęć trzeba by pobrać, aby selektor emotikonów był kompletne.

Kolor w czcionkach ikon

Użycie kolorów w czcionkach ikon zwiększa ich przejrzystość i sprawia, że glify są bardziej czytelne.

3 zielone ikony na czarnym konturach
Dwukolorowe ikony materiałowe ze strony https://fonts.google.com/icons

Ekspresja artystyczna

Zajmujące mniej miejsca czcionki kolorystyczne, które tworzą nowe formy ekspresji artystycznej w tekście w internecie. W tym przykładzie arabskiej czcionki w stylu Kufi użyto gradientów kolorów, aby pokazać, jak może wyglądać przepływ atramentu w tradycyjnej kaligrafii po zastosowaniu arabskiego stylu kufi, który wywodzi się z pisania wykutego w kamieniu stalówką i atramentem.

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

Wykrywanie funkcji

Obecnie sprawdzenie, czy przeglądarka przeglądarki obsługuje konkretny format czcionki, można ustalić za pomocą wykrywania klientów użytkownika lub przez wyszukiwanie w bibliotece, takiej jak ChromaCheck przez @PixelAmbacht, w celu przetestowania renderowania glifów kolorów w Canvas. Oba rozwiązania nie są optymalne. Testy funkcji powinny wykrywać samą konkretną funkcję i unikać wychwytywania klientów użytkownika. Aby uzyskać pomoc, biblioteka ChromaCheck nie powinna wykonywać operacji na kanwie 2D, które pochłaniają dużo zasobów.

Zespół Chrome chce to udoskonalić i rozpoczął serię dyskusji w grupie roboczej ds. usług porównywania cen [1, 2], aby przekazać informacje na temat obsługi technologii czcionek przeglądarki w języku JavaScript i deklaratywnie w CSS. W przyszłej wersji Chrome zespół zamierza udostępnić efektywne wykrywanie funkcji związanych z kolorami i innymi technologiami czcionek.

Jeśli chcesz od razu używać w projekcie czcionek kolorowych, gdy obsługa COLRv1 jest ograniczona tylko do Chrome, możesz to zrobić na 2 sposoby: poproś dostawcę czcionki o czcionek COLRv1, która zawiera też glify monochromatyczne. Klienty użytkownika, które nie obsługują COLRv1, wracają do renderowania glifów monochromatycznych. Aby określić, czy obsługa COLRv1 jest dostępna, możesz też użyć biblioteki ChromaCheck lub wykrywania klientów użytkownika. Następnie dostarczasz CSS, który wczytuje czcionki COLRv1 w obsługiwanych klientach użytkownika, i używasz alternatywnego formatu czcionki, np. COLRv0, formatu czcionki bitmapy lub OpenType SVG w innych przeglądarkach.

Obsługa palety czcionek CSS

Byłoby niezwykle przydatne, jeśli użycie innego zestawu kolorów nie wymaga nowej czcionki. Na szczęście istnieje mechanizm: właściwość CSS-palette. Zespół Chrome pracuje nad dodaniem obsługi palety czcionek w Chrome.

COLRv1 a Ty

Jeśli czcionki COLRv1 wzbudzają Twoje zainteresowanie, zapytaj dostawcę czcionek o kolorową czcionkę COLRv1, której możesz użyć w swoim projekcie. Możesz też skorzystać z przykładów i prezentacji powyżej. Możesz też od razu poeksperymentować i utworzyć własną czcionkę.

Jeśli chcesz podzielić się opinią na temat COLRv1 w Chrome, opublikuj ją na liście adresowej blink-dev lub zgłoś problem w naszym narzędziu do śledzenia problemów. Jeśli chcesz wyrazić opinię na temat formatu czcionki COLRv1, zgłoś problem w repozytorium GitHub specyfikacji COLRv1.

Dzięki Chrome 98 z przyjemnością obserwujemy, jak COLRv1 wnosi do internetu zupełnie nowy poziom typograficznej kreatywności.

Więcej informacji

Jeśli chcesz dowiedzieć się więcej, skorzystaj z tych materiałów:

Aby dowiedzieć się, jak działa COLRv1 i jak wdrożyć ją w Chrome, obejrzyj prezentację konferencyjną Dominika BlinkOn 15.

Podziękowania

Dziękujemy