CSS-справочникВ стандарте

CSS @font-face — как работает

CSS @font-face: принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.

Назначение и границы

Назначение «@font-face» раскрывается через задачу «управлять условием, ресурсом или областью применения блока CSS». Правило @font-face управляет частью таблицы стилей на уровне, отличном от обычной декларации. Для воспроизводимой проверки «@font-face» используйте пример в интерфейсе с направлением письма справа налево и наблюдайте изменение при prefers-reduced-motion.

Практическое правило для @font-face

Перед применением «@font-face» сформулируйте ожидаемое поведение, затем соблюдайте допустимое место @-правила и порядок относительно других правил. Для «@font-face» такое сравнение показывает реальную причину изменения.

Синтаксис @font-face

Синтаксис «@font-face» показан на минимальном фрагменте без внешнего фреймворка. Сначала запустите исходный вариант, затем меняйте отмеченную часть.

css
@font-face {
  font-family: "Example";
  src: url("example.woff2") format("woff2");
  font-display: swap;
}
Открыть в Playground

Как работает @font-face

Браузер обрабатывает «@font-face» в контексте области «CSS @-правила»: интерпретируется на уровне таблицы стилей, а не как обычное свойство элемента. Для «@font-face» наблюдения через изменение при prefers-reduced-motion и результат при отключённом JavaScript отделяют исходное условие от результата.

Проверка в проекте

  • Соблюдайте допустимое место @-правила и порядок относительно других правил; результат относится непосредственно к «@font-face».
  • Включить направление rtl и проверить логические стороны раскладки при разборе «@font-face».
  • Проверьте «@font-face» в интерфейсе с направлением письма справа налево через изменение при prefers-reduced-motion и запишите наблюдаемое изменение.
Выбор конструкции

Выбор «@font-face» оправдан, если задача относится к области «CSS @-правила», а риск «неверное положение или синтаксис @font-face может сделать весь блок недействительным» исключён проверкой. Для «@font-face» сравнивайте не внешний вид, а результат для пользователя.

Практика с @font-face

Создайте два варианта «@font-face» в изолированном демо: корректный и с одной типичной ошибкой. Сравните варианты «@font-face» через изменение при prefers-reduced-motion и объясните различие.

CSS @-правила@font-face

Сценарий: в интерфейсе с направлением письма справа налево.

Ошибки при работе с @font-face

01

Устойчивость

Неверное положение или синтаксис @font-face может сделать весь блок недействительным — это предметный риск для «@font-face».

02

Доступность

Дублирование интерактивной роли без нативного управления при использовании «@font-face».

03

Каскад

Смешивание данных, оформления и поведения в одной хрупкой конструкции; для «@font-face» проверьте это отдельно.

Поддержка @font-face

Для «@font-face» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «@font-face»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 1Edgeс версии 12Firefoxс версии 3.5Safariс версии 3.1

Спецификация: источник 1.

Вопросы о @font-face

Как понять, что «@font-face» выбрано правильно?

«@font-face» выбрано правильно, когда оно решает задачу «управлять условием, ресурсом или областью применения блока CSS», сохраняет результат в интерфейсе с направлением письма справа налево и проходит предметную проверку: соблюдайте допустимое место @-правила и порядок относительно других правил.

Нужен ли запасной вариант для «@font-face»?

Запасной вариант для «@font-face» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «@font-face» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.