Gernar
CSS и вёрстка

Как обеспечить поддержку шрифтов на старых устройствах

Разбор вопроса «Как обеспечить поддержку шрифтов на старых устройствах» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Как обеспечить поддержку шрифтов на старых устройствах

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает проблемы рендеринга шрифтов на старых устройствах и умеет применять практические решения: выбор форматов, fallback-стратегии, оптимизацию производительности.

Ключевые тезисы

  • Использовать @font-face с форматами WOFF2 (для современных браузеров) и WOFF/TTF (для старых) для максимальной совместимости.
  • Добавлять font-display: swap для избежания FOIT (Flash of Invisible Text), обеспечивая показ fallback-шрифта до загрузки кастомного.
  • Предоставлять системные fallback-шрифты в font-family (например, Arial, sans-serif) для случаев, если загрузка кастомного шрифта не удалась.
  • Оптимизировать вес шрифтов (subsetting, сжатие) для ускорения загрузки на медленных соединениях.

Подробный ответ

Поддержка шрифтов на старых устройствах требует комплексного подхода, включающего выбор правильных форматов, настройку загрузки и резервных вариантов. Во-первых, важно использовать @font-face с несколькими форматами шрифтов. WOFF2 — это современный формат с лучшим сжатием, но он поддерживается не всеми старыми браузерами. Для них следует добавить WOFF или TTF. Во-вторых, свойство font-display: swap позволяет избежать FOIT (Flash of Invisible Text), когда текст не отображается до загрузки шрифта. Вместо этого браузер сразу показывает fallback-шрифт, а затем заменяет его после загрузки. В-третьих, всегда указывайте системные fallback-шрифты в font-family, например, Arial, sans-serif, чтобы текст оставался читаемым даже при проблемах с загрузкой. Наконец, оптимизация веса шрифтов (например, через subsetting или сжатие) ускоряет загрузку, что критично для старых устройств с медленным интернетом.

Практические примеры

Пример 1

Пример использования @font-face с разными форматами:

@font-face {
  font-family: 'CustomFont';
  src: url('font.woff2') format('woff2'),
       url('font.woff') format('woff'),
       url('font.ttf') format('truetype');
  font-display: swap;
}
body {
  font-family: 'CustomFont', Arial, sans-serif;
}

Пример 2

Пример оптимизации шрифта через subsetting (используя инструменты like glyphhanger):

glyphhanger https://example.com --subset=*.ttf --formats=woff2,woff

Частые ошибки

  • Использование только WOFF2 без fallback-форматов, что приводит к отсутствию шрифтов в старых браузерах.
  • Отсутствие font-display: swap, из-за чего пользователи могут видеть невидимый текст (FOIT) вместо контента.

Связанные темы

  • Оптимизация производительности веб-страниц
  • Работа с веб-шрифтами и их влияние на Core Web Vitals
  • Поддержка кросс-браузерности в CSS

Follow-up вопросы

Что такое FOIT и как его избежать?

Уровень: basic

FOIT (Flash of Invisible Text) — это момент, когда текст не отображается до полной загрузки кастомного шрифта. Чтобы избежать FOIT, используйте font-display: swap, который показывает fallback-шрифт до загрузки основного.

Какие форматы шрифтов поддерживаются большинством браузеров?

Уровень: intermediate

Современные браузеры поддерживают WOFF2, WOFF и TTF. WOFF2 наиболее эффективен для современных браузеров, а WOFF и TTF обеспечивают совместимость со старыми версиями.

Как можно оптимизировать загрузку шрифтов?

Уровень: intermediate

Оптимизация включает subsetting (уменьшение набора символов), сжатие шрифтов и использование preload для загрузки шрифтов заранее. Это ускоряет загрузку и снижает нагрузку на сеть.

Какие fallback-шрифты вы рекомендуете использовать и почему?

Уровень: basic

Рекомендуется использовать системные шрифты, такие как Arial, Helvetica или sans-serif, так как они всегда доступны и обеспечивают читаемость, если кастомный шрифт не загрузился.

Как работает font-display: swap и в чем его преимущества?

Уровень: advanced

font-display: swap позволяет браузеру сразу показать fallback-шрифт, а после загрузки кастомного шрифта заменить его. Это улучшает пользовательский опыт, избегая задержек в отображении текста.

Содержание