
Вариативный шрифт (variable font) — это один файл, внутри которого хранится не отдельное начертание, а непрерывный диапазон начертаний. Вместо того чтобы держать десяток файлов вроде Light, Regular, Bold и Black, вы получаете единый контейнер, из которого браузер «вычисляет» любую промежуточную форму буквы. Технология была представлена в 2016 году как часть спецификации OpenType 1.8 совместными усилиями Adobe, Apple, Google и Microsoft.
Ключевая идея — интерполяция. Дизайнер задаёт два крайних состояния символа, например самое тонкое и самое жирное, а математика формата достраивает все промежуточные толщины. Благодаря этому вы можете задать вес не только 400 или 700, но и любое дробное значение, скажем 512, и получить корректный глиф без ступенчатых переходов.
Формат опирается на таблицу gvar внутри файла и распространяется в контейнерах TTF и WOFF2. Именно WOFF2 стал стандартом для веба: он использует сжатие Brotli и уменьшает размер файла на 20–30% по сравнению с обычным WOFF, что особенно важно для крупных вариативных семейств.
Каждый параметр, который можно плавно менять, называется осью (axis). Оси делятся на зарегистрированные (стандартизированные консорциумом) и пользовательские, которые придумывает автор шрифта. У зарегистрированных осей есть четырёхбуквенные теги в нижнем регистре, у пользовательских — в верхнем.
Самая распространённая ось — вес (wght). За ней идут ширина (wdth), наклон (slnt), настоящий курсив (ital) и оптический размер (opsz), который подстраивает контраст и детализацию под кегль. Оптическая ось особенно ценна: мелкий текст получает более крепкие штрихи, а заголовки — тонкие изящные засечки.
Пользовательские оси открывают простор для экспериментов: гротеск может иметь ось GRAD для изменения плотности без сдвига метрик, а декоративный шрифт — ось для высоты засечек или округлости углов. Всё это остаётся в одном файле и управляется через CSS.
Начинается всё с правила @font-face, но синтаксис немного отличается от обычного. В свойстве src указывают формат с суффиксом supports variations или современный тег woff2-variations, а диапазоны весов и растяжений задают не одним числом, а парой значений через пробел.
Далее осями управляют двумя способами. Стандартные оси имеют «высокоуровневые» CSS-свойства: font-weight, font-stretch и font-style принимают весь заявленный диапазон. Для тонкой настройки и пользовательских осей есть низкоуровневое свойство font-variation-settings, где вы напрямую перечисляете теги и их значения.
Важно помнить о приоритете: если можно задать параметр через font-weight, используйте именно его, а не font-variation-settings. Высокоуровневые свойства корректно анимируются и наследуются, тогда как прямая работа с тегами считается «последним средством» и не всегда предсказуемо взаимодействует с наследованием стилей.
Главный практический аргумент — вес страницы. Раньше, чтобы иметь на сайте четыре начертания в прямом и курсивном варианте, приходилось грузить восемь файлов. Вариативный шрифт нередко заменяет их одним, и суммарный объём загрузки падает заметно, хотя единичный файл всегда тяжелее одного статического начертания.
Ниже приведён ориентировочный расчёт для гротеска среднего размера с кириллицей и латиницей. Цифры зависят от конкретного шрифта и набора глифов, но пропорции показательны.
| Сценарий | Число файлов | Примерный объём (WOFF2) |
|---|---|---|
| 4 статических веса, прямые | 4 | ≈ 140 КБ |
| 4 веса, прямые + курсив | 8 | ≈ 280 КБ |
| Вариативный файл (ось wght) | 1 | ≈ 95 КБ |
| Вариативный файл (wght + ital) | 1–2 | ≈ 150 КБ |
Выигрыш возникает, когда вы реально используете много начертаний. Если сайту нужны только Regular и Bold, два статических файла окажутся легче одного вариативного. Поэтому решение всегда принимают по фактической палитре стилей проекта, а не по моде.
Для русскоязычных сайтов критична проблема лишних глифов. Многие вариативные шрифты содержат тысячи символов — латиницу, кириллицу, греческий, знаки валют и математику. Если сайт на русском и английском, остальное можно безболезненно вырезать процедурой субсеттинга.
Инструмент pyftsubset из пакета fontTools позволяет оставить только нужные диапазоны Unicode и при этом сохранить оси вариаций. Дополнительно применяют технику unicode-range в CSS: браузер скачивает кириллический поднабор лишь тогда, когда на странице действительно встречаются символы этого диапазона.
Такой подход сокращает первичную загрузку в разы: пользователь, читающий русский текст, не тянет вьетнамскую диакритику или полный греческий алфавит. Для крупных порталов это ощутимая экономия и заметный прирост в метриках Core Web Vitals.
Даже лёгкий шрифт грузится не мгновенно, и от стратегии показа зависит, увидит ли пользователь пустоту или временный системный шрифт. За это отвечает дескриптор font-display внутри @font-face. Его значение напрямую влияет на метрику сдвига макета CLS и на воспринимаемую скорость сайта.
Значение swap показывает резервный шрифт сразу и меняет его на нужный после загрузки — текст всегда виден, но возможен заметный «прыжок». Значение optional отдаёт приоритет стабильности: если шрифт не успел прийти за отведённое короткое окно, браузер оставит системный и не станет менять его на текущей загрузке страницы.
Для ускорения также используют предзагрузку: тег link с атрибутом rel="preload" и type="font/woff2" заставляет браузер запросить файл заранее. Комбинация preload плюс продуманный font-display обычно даёт наилучший баланс между скоростью и отсутствием визуальных скачков.
Вариативные шрифты поддерживаются всеми актуальными версиями Chrome, Firefox, Safari и Edge уже несколько лет, поэтому в 2020-х годах технологию можно считать безопасной для продакшена. Проблемы остаются лишь у очень старых движков, доля которых стремится к нулю.
Тем не менее хорошей практикой остаётся прогрессивное улучшение. Через CSS-правило @supports (font-variation-settings: normal) можно подать вариативную версию поддерживающим браузерам, а всем остальным — набор обычных статических начертаний. Так вы гарантируете читаемость в любом окружении.
Отдельно стоит проверять поведение на мобильных устройствах: интерполяция требует вычислений, и на слабых процессорах чрезмерная анимация осей может подтормаживать. Разумная сдержанность в анимации веса и ширины избавит от лишней нагрузки на отрисовку.
Начать знакомство удобно с интерактивных площадок, где можно двигать ползунки осей и сразу видеть результат. Ресурсы вроде Wakamai Fondue показывают все доступные оси конкретного файла, а редакторы шрифтов позволяют самостоятельно создавать вариативные семейства из набора мастеров.
Практический маршрут внедрения выглядит так: выбрать шрифт с нужными осями, вырезать лишние глифы субсеттингом, собрать WOFF2, описать @font-face с диапазонами и font-display, подключить предзагрузку и проверить метрики в инструментах аудита. Каждый шаг измеряется, чтобы экономия трафика не обернулась ухудшением восприятия.
Вариативные шрифты не универсальное решение, а точный инструмент. Они блестяще окупаются на проектах с богатой типографикой и множеством начертаний, дают дизайнеру плавный контроль над формой и при грамотной оптимизации снижают вес страницы. Ключ к успеху — считать реальные килобайты и опираться на измерения, а не на общее впечатление.