Статьи

Веб-шрифты: скорость, лицензии и типографика

7 августа 2026  |  7 мин чтения

Хорошая типографика определяет восприятие сайта, но шрифты — один из главных «скрытых» убийц скорости: пара начертаний может весить больше всей вёрстки. В 2026 году правильный подход — подключить шрифты быстро, без «прыжков» текста и с легальными лицензиями. Разбираем полный арсенал.

Почему шрифты дорогие

Полный шрифт с кириллицей — это тысячи глифов. Расчёт простой:

1 начертание × 4 (Regular/Bold/Italic/BoldItalic) × 2 (латиница+кириллица)
= 4–8 файлов по 100–250 КБ woff2 = 400 КБ–1,5 МБ на «просто шрифты»

Плюс рендеринг: браузер блокирует отрисовку текста, пока шрифт не загрузился (FOIT — flash of invisible text), если не задано иначе.

Четыре правила быстрых шрифтов

  1. WOFF2 + subsetting: отдавайте только нужные символы (кириллица + латиница), в формате woff2 — это экономит 60–80% веса.
  2. Переменные шрифты: одно начертание = вся ось весов (200–900). Вместо 4 файлов — один на семейство.
  3. font-display: swap — текст показывается системным шрифтом, пока грузится веб-шрифт. Никаких невидимых абзацев.
  4. preload + предзагрузка только для LCP: первый экран — preload, остальное — по мере появления.
@font-face {
    font-family: 'Inter';
    src: url('inter-latin-cyrillic.woff2') format('woff2');
    font-weight: 400 900;      /* переменный шрифт */
    font-display: swap;        /* нет невидимого текста */
    unicode-range: U+0400-04FF; /* кириллица отдельным подмножеством */
}

Где хостить: сам vs Google Fonts vs CDN

ВариантПлюсыМинусы
Google Fonts (CSS API)Бесплатно, оптимизированоЗависимость, трекинг, блокировки для РФ-аудитории
Сам на сайтеПолный контроль, нет внешних зависимостейНужно готовить файлы (subsetting, woff2)
CDN шрифтов (fontsource)Оптимизированные npm-пакетыСборка, не все шрифты

Для аудитории из РФ Google Fonts может грузиться медленно или блокироваться — хостите шрифты у себя: дёшево, быстро, без трекинга.

font-display: swap и метрики

Поведение при загрузке — вопрос UX и метрик:

  • swap — мгновенный системный шрифт, затем замена (FOUT). Лучший баланс для контентных сайтов.
  • block — браузер ждёт до 3 секунд (FOIT): красиво, но абзацы «пустые» на медленных сетях.
  • optional — если шрифт не успел за 100 мс, остаётся системный: максимальная скорость, но шрифт может «не появиться никогда».
  • fallback — ждёт ~100 мс, затем системный с заменой.

При swap возможен сдвиг текста — влияет на CLS. Решение: size-adjust для шрифта-запасного, чтобы метрики системного шрифта совпадали с веб-шрифтом.

@font-face {
    font-family: 'Inter Fallback';
    src: local('Arial');
    size-adjust: 107%;   /* компенсация разницы в метриках */
    ascent-override: 90%;
    descent-override: 22%;
}

Так подмена не «прыгает» и CLS остаётся в норме.

Лицензии: на что смотреть

  • Google Fonts — открытые лицензии (OFL и др.), коммерческое использование обычно бесплатно.
  • Коммерческие шрифты (MyFonts, Paratype, Fontlab): лицензия часто привязана к количеству просмотров/доменов — для большого трафика или клиентских проектов это деньги.
  • Подключение через API (Google Fonts) — снимает вопросы, но для клиентов иногда требуют «историю» — храните копию файлов и лицензий.
  • Проверка: файл лицензии при покупке, подтверждение коммерческого использования в письме — пригодятся в спорах.

Практический чек-лист

  • Не более 1–2 семейств на сайт (3+ — уже типографический хаос).
  • Переменные шрифты + подмножества + woff2.
  • font-display: swap везде; fallback с size-adjust для CLS.
  • preload только для шрифта первого экрана.
  • Сам охостинг для РФ-аудитории.
  • Проверка: PageSpeed (время загрузки шрифтов) и визуальная (нет «прыжков» текста).
«Шрифт — это 90% восприятия дизайна и 10% веса страницы, если всё сделано правильно. Плохо подключённые шрифты — частая причина „быстрого на бумаге, медленного в жизни“ сайта» — практика типографики, 2026.

Аудит: откройте Network → Fonts и посмотрите суммарный вес. Если больше 300 КБ — подключите переменный шрифт с subsetting и swap. Эффект — минус сотни килобайт и никаких пустых экранов.