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 {
font-family: "Example";
src: url("example.woff2") format("woff2");
font-display: swap;
}Как работает @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 и объясните различие.
Сценарий: в интерфейсе с направлением письма справа налево.
Ошибки при работе с @font-face
Устойчивость
Неверное положение или синтаксис @font-face может сделать весь блок недействительным — это предметный риск для «@font-face».
Доступность
Дублирование интерактивной роли без нативного управления при использовании «@font-face».
Каскад
Смешивание данных, оформления и поведения в одной хрупкой конструкции; для «@font-face» проверьте это отдельно.
Поддержка @font-face
Для «@font-face» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «@font-face»; окончательное решение принимайте по аудитории конкретного проекта.
Спецификация: источник 1.
Вопросы о @font-face
Как понять, что «@font-face» выбрано правильно?
«@font-face» выбрано правильно, когда оно решает задачу «управлять условием, ресурсом или областью применения блока CSS», сохраняет результат в интерфейсе с направлением письма справа налево и проходит предметную проверку: соблюдайте допустимое место @-правила и порядок относительно других правил.
Нужен ли запасной вариант для «@font-face»?
Запасной вариант для «@font-face» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «@font-face» должно сохранять смысл, содержимое и основное действие.
Спецификации и источники
Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.