Веб-шрифты и скорость
Красивый фирменный шрифт — это здорово, но за него платят скоростью. Шрифт — это файл, который надо скачать, и пока он грузится, текст либо не виден, либо мигает, подменяясь на лету. На медленном интернете это особенно заметно. Хорошая новость: шрифт можно подключить так, чтобы он почти не вредил. Разберём как.
В чём проблема
Когда страница использует нестандартный шрифт, браузеру нужно скачать его файл. Пока файл не пришёл, возможны два неприятных сценария: либо текст вообще не показывается (пустое место там, где должны быть слова — «мерцание невидимого текста»), либо сначала рисуется системным шрифтом, а потом резко перерисовывается вашим — и страница дёргается. Оба варианта раздражают и портят впечатление, а второй ещё и ухудшает показатель сдвигов CLS.
Главное — font-display: swap
Самое важное правило одной строкой. Свойство font-display: swap говорит браузеру: «не прячь текст — покажи его сразу системным шрифтом, а когда мой загрузится, подмени». В результате человек начинает читать мгновенно, а фирменный шрифт подхватывается чуть позже, без пустого экрана.
font-family: "MyFont";
src: url("myfont.woff2") format("woff2");
font-display: swap;
}
Что ещё ускоряет шрифты
Свой сервер или внешний
Шрифты можно подключать с внешнего сервиса или хранить у себя. Сегодня чаще советуют хранить у себя (self-host): это убирает лишнее соединение со сторонним доменом, даёт полный контроль над кэшированием и не зависит от доступности чужого сервиса. Если всё же используете внешний источник — добавьте к его домену preconnect, чтобы сэкономить время на соединение.
Коротко
Веб-шрифты тормозят показ текста: пока файл грузится, текст либо не виден, либо мерцает при подмене. Главное лекарство — font-display: swap: текст показывается сразу системным шрифтом, а фирменный подхватывается позже. Дополнительно используйте формат woff2, подмножество только нужных символов, минимум начертаний и preload ключевого шрифта. Шрифты лучше хранить у себя. А если фирменный шрифт не критичен — системные шрифты грузятся мгновенно и выглядят достойно.