Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Практика

Шрифты: подключение без блокировки отрисовки

Продолжаем практику ускорения разбором ресурса, о котором часто забывают, — веб-шрифтов.

В чём проблема

Веб-шрифт — ещё один файл, который нужно скачать. Пока он не загружен, браузер либо скрывает текст, либо показывает запасной шрифт, а затем заменяет его. Оба варианта неприятны: в первом случае страница пуста, во втором текст «дёргается» и вызывает смещение макета.

БраузерзапрашиваетшрифтТекст показанзапаснымшрифтомШрифтзагруженТекстзаменяетсяна основной
БраузерзапрашиваетшрифтТекст показанзапаснымшрифтомШрифтзагруженТекстзаменяетсяна основной
Как ведёт себя страница при подмене шрифта

Управление отображением

Свойство font-display определяет, как браузер ведёт себя, пока шрифт загружается.

Значения font-display
ЗначениеПоведениеКогда подходит
swapСразу запасной шрифт, затем заменаОсновной текст: читаемость важнее внешнего вида
fallbackКороткая невидимость, затем запасной шрифтКомпромисс для заголовков
optionalШрифт используется, только если успел загрузитьсяВторостепенные шрифты, когда нужна стабильность
blockТекст скрыт до загрузки шрифтаПрактически не рекомендуется

Пример подключения

@font-face {
  font-family: "Main";
  src: url("/fonts/main-cyrillic.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0400-04FF;
}

Здесь подключён только нужный набор символов — кириллица, — что уменьшает файл, и задан режим отображения с подменой.

Приёмы ускорения

  • Используйте формат WOFF2: он сжат лучше остальных и поддерживается везде.
  • Оставьте только нужные начертания: каждая толщина и наклон — отдельный файл.
  • Подключайте только используемые наборы символов.
  • Предзагрузите один-два самых важных файла шрифта, но не все подряд.
  • Размещайте шрифты на своём домене, чтобы не тратить время на дополнительное соединение.
  • Подберите запасной шрифт, близкий по размерам, чтобы подмена почти не была заметна.

Системные шрифты как альтернатива

Самый быстрый шрифт — тот, который не надо скачивать. Для служебных текстов и небольших сайтов системный набор шрифтов даёт мгновенную загрузку и нулевое смещение. Для брендового оформления веб-шрифты остаются оправданными, но с дисциплиной, описанной выше.

Связано с другими показателями: смена шрифта — частая причина смещений, см. статью про CLS. Общая картина метрик — в статье про Core Web Vitals.

Где размещать шрифты

Сравнение способов подключения шрифтов
ПодходПлюсыМинусы
Системные шрифтыМгновенно, без смещенийОграниченный выбор оформления
Веб-шрифты на своём доменеКонтроль над кешем и скоростью, без лишних соединенийНужно самим подготовить файлы
Внешний сервис шрифтовУдобно подключатьЗависимость от чужого сервера, дополнительное соединение

Как проверить

  1. Откройте страницу с медленной сетью и убедитесь, что текст виден сразу, без пустых мест.
  2. Посмотрите, насколько заметна замена шрифта: сильные скачки означают, что запасной шрифт подобран неудачно.
  3. Проверьте число файлов шрифтов во вкладке сети: их не должно быть много.

Частые вопросы

Какое значение font-display выбрать для основного текста?

swap: текст сразу виден запасным шрифтом и заменяется основным после загрузки, поэтому читаемость не страдает.

Почему шрифты могут вызывать смещение макета?

Запасной и основной шрифты имеют разные размеры, и при замене текст меняет размер и сдвигает соседние элементы.

Сколько файлов шрифтов подключать?

Как можно меньше: только нужные начертания и наборы символов, а самые важные — предзагрузить.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также

4 мин чтения

Минификация CSS и JavaScript

Читаемые скрипты и стили удобны разработчику, но браузеру они не нужны. Минификация убирает лишнее и делает файлы легче.

Читать статью →