Векторные шрифты цветового градиента COLRv1 в Chrome 98

Доминик Рётшес
Dominik Röttsches
Род Шитер
Rod Sheeter

Компактные, удобные для сжатия цветные векторные шрифты со всеми вашими любимыми вариантами градиентов.

В Chrome 98 команды Chrome и Fonts добавили поддержку COLRv1, эволюции формата шрифта COLRv0, предназначенного для широкого распространения цветных шрифтов за счет добавления градиентов, композиции и смешивания, а также улучшенного повторного использования внутренних форм для получения четких и компактных файлов шрифтов, которые хорошо сжимаются. .

Цвет сейчас

В Интернете текст обычно рисуется цветом, указанным в CSS. Шрифт не определяет какой-либо конкретный цвет, он просто указывает, где следует разместить пиксели. Обычно это хорошо. CSS позволяет автору гибко выбирать цвет. Однако иногда глиф содержит несколько цветов, которые вместе имеют значение. Например, этот флаг Трансгендерный флаг, состоящий из бледно-голубых и бледно-розовых полос. со светло-голубыми, розовыми и белыми полосами не будет иметь того же значения, если бы он был просто нарисован текущим цветом текста.

Сегодня для большинства пользователей смайлы — единственные цветные шрифты, которые они видят. Эмодзи обычно появляются в Интернете с помощью системного шрифта эмодзи или путем вставки изображений (что имеет свои сложности, Панда-смайлик с грустным выражением лица. ). Большие размеры файлов, особенно для цветных шрифтов на основе растровых изображений, затрудняют использование веб-шрифтов для эмодзи. Поддерживая COLRv1, мы надеемся увидеть распространение творческого использования цветных шрифтов в Интернете и за его пределами.

Покажи мне свои цвета

Мы создали для вас несколько примеров:

Используемые в примере ресурсы из Google Fonts доступны в веб-API Google Fonts . Они не указаны в каталоге Fonts.google.com , поскольку будут работать только в Chrome 98 или более поздних версиях и демонстрируют экспериментальные работы.

Теперь вы можете создавать свои собственные шрифты COLRv1, используя бесплатные инструменты с открытым исходным кодом. Ознакомьтесь с компилятором шрифтов nanoemoji , который позволяет создавать шрифты COLRv1 из исходных изображений SVG, а затем попробуйте их в Chrome 98 или более поздней версии. Попробуйте создать свой собственный вариант Bungee Spice, изменив цвета градиента, следуя этим инструкциям .

Например, вы можете изменить шрифт Bungee Spice, добавив сине-красный градиент, вот так:

Слово «дюна», набранное цветным шрифтом Bungee Spice, тонированное синими и красными градиентами.

Отправьте свои результаты в Твиттере @googlefonts 🙂 Почему бы не попробовать радиальный или плавный градиент?

Новое в COLRv1

Формат шрифта поддерживает несколько способов поддержки цвета, каждый с разными компромиссами, но ни один из них пока не добился успеха в Интернете. (Чтобы узнать больше о компромиссах, ознакомьтесь с выступлением Доминика на конференции BlinkOn 15. ) В Chrome 98 реализована поддержка COLRv1, эволюции COLRv0. Мы надеемся, что сочетание графических возможностей COLRv1 и компактных файлов сделает его хорошим выбором для многих случаев использования цветных шрифтов. В COLRv1 добавлены градиенты, композитинг и смешивание , а также улучшено повторное использование внутренних форм для создания еще более компактных файлов.

COLRv1 обладает выразительными возможностями, примерно эквивалентными SVG Native , плюс добавлены смешивание и композитинг . Существует четыре типа цветовых заливок: сплошные цвета, линейные градиенты, радиальные градиенты и разверточные/конические градиенты. COLRv1 позволяет изменять положение и преобразовывать элементы глифа, используя полный набор преобразований перемещения, поворота, наклона и масштабирования. Кроме того, он поддерживает варианты шрифтов и повторно использует в шрифте существующие форматы определения фигур.

Синий и фиолетовый хрустальный шар-эмодзи с повторно использованными звездами на коричневой основе.
Повторное использование формы в смайликах хрустального шара

В качестве примера подумайте о смайликах хрустального шара: блики в форме звезд имеют одинаковую форму, но разные размеры, что означает, что только одну фигуру можно перемещать и повторно использовать без дублирования внутри файла. Этот формат позволяет повторно использовать полный глиф в новом глифе без необходимости избыточного кодирования одних и тех же фигур для каждого глифа. Представьте себе декоративный цветной шрифт с цветочным орнаментом, в котором одни и те же цветочные фигуры размещаются на разных буквах путем простой ссылки на существующие цветные глифы. В случае использования веб-шрифтов COLRv1 хорошо сжимается под woff2. Например, тестовая сборка Twemoji с использованием COLRv1 занимает около 1,2 МБ в раздутом виде, но около 0,6 МБ в форме woff2. Сборка полного набора Noto Emoji Glyph уменьшена с 9 МБ для растровой версии до 1,85 МБ в форме COLRv1+woff2.

Гистограмма, сравнивающая Noto Emoji как растровый шрифт и шрифт COLRv1, около 9 МБ против 1,85 МБ
Размер шрифта Noto Emoji CBDT/CBLC по сравнению с COLRv1 после сжатия WOFF2.

Варианты использования цветных шрифтов

Броские заголовки

Шрифт свежего цвета делает визуальные выделения, заголовки и баннеры действительно яркими.

Plakato Color Happy 2022 с энергичными плавными градиентами, созданными инновационной шрифтовой компанией Underware (Twitter: @underware , Instagram: @underwarefoundry ). Подробнее о первом выпуске COLRv1 от Underware можно прочитать в их сообщении в блоге .

Больше никакой замены изображений: шрифты эмодзи

Если вы поддерживаете пользовательский контент, ваши пользователи, вероятно, используют смайлы. Сегодня очень принято сканировать текст и заменять любые встречающиеся смайлы изображениями, чтобы обеспечить согласованный кросс-платформенный рендеринг и возможность поддержки новых смайлов, чем поддерживает ОС. Затем эти изображения необходимо снова переключить на текст во время операций с буфером обмена. Вот реальный пример:

Фрагмент кода, показывающий встроенные изображения в виде тегов img и метаданные как часть истории чата.
Замена изображения в Google Chat

Если у вас есть шрифт Emoji, вы просто отображаете текст шрифтом, например:

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

Аналогично, в компоненте реакции на смайлики COLRv1 предлагает возможность использовать компактный файл шрифта вместо каталога графических ресурсов.

Пользовательский интерфейс выбора эмодзи, используемый на GitHub
Средство выбора реакции Emoji на GitHub

Представьте себе, сколько изображений вам нужно будет получить, чтобы получить полный набор смайлов!

Цвет иконочных шрифтов

Использование цвета в шрифтах значков добавляет ясности и облегчает понимание глифов.

Три зеленых значка в черном контуре
Материал двухцветных иконок с https://fonts.google.com/icons .

Художественное выражение

Компактные цветные шрифты открывают новые формы художественного выражения в тексте в Интернете. В этом примере арабского шрифта в стиле куфи используются цветовые градиенты как художественная интерпретация того, как может выглядеть поток чернил традиционной каллиграфии применительно к стилю арабского письма куфи, который возникает из-за того, что его пишут не пером и чернилами, а вырезают. камень.

Арабские буквы с градиентами от черного к красному.
Reem Kufi Ink — арабский шрифт Халеда Хосни.

Обнаружение функций

На данный момент выяснить, поддерживает ли движок браузера определенный формат цветового шрифта, можно с помощью анализа пользовательского агента или поиска в такой библиотеке, как ChromaCheck от @PixelAmbacht , для проверки рендеринга цветных глифов на Canvas. Оба решения не являются оптимальными. Тестирование функций должно обнаруживать только конкретную функцию и избегать перехвата пользовательского агента. Библиотеке ChromaCheck не нужно выполнять ресурсоемкие операции с 2D-холстом для определения поддержки.

Команда Chrome хочет улучшить это и начала серию обсуждений [ 1 , 2 ] в рабочей группе CSS, чтобы предоставить информацию о поддержке технологии шрифтов браузера в JavaScript и декларативно в CSS. Команда планирует выпустить эффективную функцию обнаружения цветных шрифтов и других технологий шрифтов в будущей версии Chrome.

Если вы хотите использовать цветные шрифты в своем проекте прямо сейчас, когда поддержка COLRv1 ограничена Chrome, вы можете сделать это двумя способами: попросить у поставщика шрифтов шрифт COLRv1, который также содержит монохромные глифы. Пользовательские агенты, которые не поддерживают COLRv1, будут возвращаться к рендерингу монохромных глифов. Альтернативно вы можете использовать библиотеку ChromaCheck или анализ пользовательского агента, чтобы определить, доступна ли поддержка COLRv1. Затем вы предоставляете CSS, который загружает шрифты COLRv1 в поддерживающие пользовательские агенты и используете альтернативный формат шрифта, такой как COLRv0, формат растрового шрифта или OpenType SVG в других браузерах.

Поддержка палитры шрифтов CSS

Было бы чрезвычайно полезно, если бы использование другого набора цветов не требовало нового шрифта. К счастью, такой механизм существует: CSS-свойство font-palette . Команда Chrome работает над добавлением поддержки палитры шрифтов в Chrome .

Шрифты COLRv1 и вы

Если вас интересуют шрифты COLRv1, спросите у своего поставщика шрифтов о цветном шрифте COLRv1, который можно использовать в вашем проекте, попробуйте приведенные выше примеры и демо-версии или почему бы не сразу погрузиться и поэкспериментировать, создав свой собственный ?

Если у вас есть отзыв о COLRv1 в Chrome, напишите его в список рассылки Blink-dev или сообщите о проблеме в нашем трекере проблем . Если у вас есть отзывы о самом формате шрифта COLRv1, сообщите о проблеме в репозитории спецификации COLRv1 на GitHub .

В Chrome 98 мы рады тому, что COLRv1 выводит в Интернет совершенно новый уровень типографского творчества.

Узнать больше

Если вас интересуют подробности, у нас есть для вас еще пара ресурсов:

Чтобы узнать, как работает COLRv1 и как он реализован в Chrome, ознакомьтесь с выступлением Доминика на конференции BlinkOn 15.

Благодарности

Большое спасибо Бехдаду Исфабоду, Козимо Лупо, Питеру Констеблу, Бену Вагнеру, Вернеру Лембергу, Дэйву Кроссленду, Владимиру Левантовски, Джонатану Кью, Лоуренсу Пенни, Крису Лилли, Дэвиду Джонатану Россу, Underware, Джасту ван Россуму, Роэлу Нискенсу и другим за их вклад в COLRv1.