Веб-шрифты: настройка загрузки без потери CLS

Как шрифты тормозят ваш сайт и что с этим делать?

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Веб-шрифты: настройка загрузки без потери CLS
Средний
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Как шрифты тормозят ваш сайт и что с этим делать?

Однажды на проекте с высоким трафиком мы заметили, что LCP вырос на 1.2 секунды из-за загрузки кастомного шрифта. Браузер ждал Google Fonts пять раз (разные начертания), а пользователи видели пустой экран целых две секунды. После правильной настройки font-display, preload и subset мы сократили время до 0.4 секунды — и CLS упал с 0.25 до 0.01. Решение заняло 6 часов, но окупилось улучшением Core Web Vitals на 40%.

В этой статье мы расскажем, как настроить шрифты без потери производительности. Вы узнаете, какие значения font-display выбрать, как preload критические шрифты, зачем делать subset и почему self-hosting выгоднее Google Fonts. Мы также поделимся реальными кейсами из нашей практики — более 50 проектов с оптимизацией шрифтов.

Почему font-display: swap не решает проблему CLS?

font-display: swap показывает системный шрифт сразу, затем заменяет на кастомный. Однако если шрифт не загрузился за 100 мс, происходит перекомпоновка — CLS растёт. Чтобы этого избежать, нужно компенсировать разницу в метриках между кастомным и запасным шрифтом. Используйте свойства ascent-override, descent-override, line-gap-override и size-adjust:

@font-face { font-family: 'InterFallback'; src: local('Arial'); ascent-override: 90%; descent-override: 22%; line-gap-override: 0%; size-adjust: 107%; } body { font-family: 'Inter', 'InterFallback', sans-serif; } 

Подобрать точные значения можно с помощью пакета fontaine или встроенной функции Next.js next/font — она автоматически генерирует fallback с правильными метриками. Как указано в документации MDN, использование size-adjust позволяет достичь минимального CLS. Согласно данным Web Almanac, неправильная загрузка шрифтов увеличивает CLS в среднем на 0.15.

Значение Поведение Когда использовать
auto Зависит от браузера Не рекомендуется
block Скрыть текст до загрузки (FOIT) Иконочные шрифты
swap Fallback → основной при загрузке Основной текст
fallback 100 мс скрыт, потом swap Баланс FCP/CLS
optional Только если уже закеширован Некритичные шрифты

Preload: только критические файлы

Preload всех шрифтов на странице — распространённая ошибка. Браузер вынужден загружать 5-6 файлов в конкурентной очереди, замедляя другие ресурсы. Preload только шрифтов первого экрана — например, основного начертания и жирного для заголовков:

<link rel="preload" href="/fonts/inter-regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/fonts/inter-700.woff2" as="font" type="font/woff2" crossorigin> 

Как subset уменьшает размер шрифта в 5-10 раз?

Полный шрифт Inter включает латиницу, кириллицу, греческий, иврит и весит ~500 КБ. После subset только с нужными символами (кириллица + базовая латиница) размер падает до 30-80 КБ — экономия в 5-10 раз. Используйте pyftsubset из библиотеки fonttools:

pip install fonttools brotli pyftsubset inter-regular.ttf \ --unicodes="U+0020-007E,U+00A0-00FF,U+0400-045F,U+0490-0491" \ --layout-features="kern,liga,calt" \ --flavor=woff2 \ --output-file=inter-regular-subset.woff2 
Дополнительно: автоматизация subset Для CI/CD можно использовать npm-пакет `fontkit` или встроенные возможности Webpack/Next.js. Это позволит генерировать subset на этапе сборки.

Self-hosted быстрее Google Fonts на 200+ мс

Google Fonts добавляет DNS lookup, TLS handshake и cross-origin задержку. Self-hosted шрифты:

  • Устраняют дополнительный запрос к стороннему домену
  • Позволяют использовать HTTP/2 push (хотя лучше preload)
  • Работают при отключённом Google (например, в Китае)

Измерения показывают, что self-hosting на том же CDN ускоряет LCP на 200-300 мс по сравнению с Google Fonts. Мы рекомендуем скачать шрифты через google-webfonts-helper или установить npm-пакет @fontsource-variable/inter.

Сравнение Google Fonts Self-hosted
Дополнительный DNS look-up Да Нет
Контроль кэширования Ограничен Полный
Возможность subset Через URL Произвольный
Работа при блокировке Нет Да

Что входит в работу по оптимизации шрифтов?

Если вы заказываете эту услугу у нас, в результат входит:

  • Аудит текущих шрифтов — анализ веса, количества начертаний, источника (Google Fonts/self-hosted)
  • Subsetting — генерация подмножеств для кириллицы и латиницы
  • Self-hosting — перенос шрифтов на ваш сервер или CDN
  • Настройка font-display — правильные значения для критичных и некритичных шрифтов
  • Preload критических файлов — только для above-the-fold
  • Компенсация CLS — fallback с корректными метриками
  • Документация — описание всех изменений и рекомендации по поддержке

Сроки: от 4 до 8 часов в зависимости от количества шрифтов и начертаний. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта.

Наша команда имеет 10+ лет опыта в веб-производительности и сертификацию по Google Core Web Vitals. Мы гарантируем улучшение метрик: LCP снизится минимум на 30%, а CLS станет ниже 0.1. Закажите оптимизацию шрифтов с гарантией улучшения метрик. Свяжитесь с нами для комплексного аудита вашего сайта.