Spec-Zone.ru › CSS

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

Базовая поддержка Широко поддерживается

Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она поддерживается браузерами с сентября 2016 года.

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

Синтаксис

@font-face {
  font-family: "Trickster";
  src:
    local("Trickster"),
    url("trickster-COLRv1.woff2") format("woff2") tech(color-COLRv1),
    url("trickster-outline.woff2") format("woff2");
}

Дескрипторы

ascent-override
Задаёт метрику восходящих элементов шрифта.
descent-override
Задаёт метрику нисходящих элементов шрифта.
font-display
Определяет способ отображения шрифта в зависимости от того, загружен ли он и готов ли к использованию.
font-family
Задаёт имя, которое будет использоваться в качестве значения семейства шрифтов для свойств шрифта. Для корректности правила @font-face требуется имя font-family.
font-stretch
Значение font-stretch. Принимает два значения, задающие диапазон, поддерживаемый начертанием шрифта, например font-stretch: 50% 200%;
font-style
Значение font-style. Принимает два значения, задающие диапазон, поддерживаемый начертанием шрифта, например font-style: oblique 20deg 50deg;
font-weight
Значение font-weight. Принимает два значения, задающие диапазон, поддерживаемый начертанием шрифта, например font-weight: 100 400;
font-feature-settings
Позволяет управлять расширенными типографическими функциями шрифтов OpenType.
font-variation-settings
Позволяет управлять вариациями шрифтов OpenType или TrueType на низком уровне, указывая четырёхбуквенные имена осей для изменяемых функций и соответствующие значения вариаций.
font-width
Позволяет авторам указывать обычное, сжатое или расширенное начертание для заданных шрифтов.
line-gap-override
Задаёт метрику межстрочного интервала шрифта.
size-adjust
Задаёт множитель для контуров глифов и метрик, связанных с этим шрифтом. Это упрощает согласование дизайна разных шрифтов при отображении с одинаковым размером.
src
Задаёт ссылки на ресурсы шрифтов, включая сведения о формате и технологии шрифта. Для корректности правила @font-face требуется значение src.
unicode-range
Диапазон кодовых точек Unicode, используемых из шрифта.

Описание

Часто url() и local() используют вместе: если установленная у пользователя копия шрифта доступна, используется она; в противном случае браузер скачивает копию шрифта, если на устройстве пользователя она не найдена.

Если указана функция local(), задающая имя шрифта для поиска на устройстве пользователя, и пользовательский агент находит соответствие, используется этот локальный шрифт. В противном случае загружается и используется ресурс шрифта, заданный функцией url().

Браузеры пытаются загружать ресурсы в порядке их объявления в списке, поэтому обычно local() следует указывать перед url(). Обе функции необязательны, поэтому допустим блок правила, содержащий только один или несколько local() без url(). Если нужны более конкретные шрифты со значениями format() или tech(), их следует указывать перед вариантами без этих значений, иначе сначала будет использован менее конкретный вариант.

Для веб-сайтов обычно лучше всего отдавать шрифты в формате WOFF2, поскольку он сжимает их эффективнее, чем более старые форматы, например WOFF или OpenType, уменьшая размер файлов и ускоряя загрузку. WOFF2 также хорошо поддерживается современными браузерами, поэтому для большинства веб-сайтов это безопасный вариант по умолчанию.

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

Примечание: Стратегии резервной загрузки шрифтов для старых браузеров описаны на странице дескриптора src.

Правило @font-face можно использовать не только на верхнем уровне CSS, но и внутри любого условного группового правила CSS.

MIME-типы шрифтов

Формат MIME-тип
TrueType font/ttf
OpenType font/otf
Web Open Font Format font/woff
Web Open Font Format 2 font/woff2

Примечания

  • На веб-шрифты распространяются те же ограничения по домену (файлы шрифтов должны находиться в том же домене, что и использующая их страница), если только это ограничение не снято с помощью средств управления доступом HTTP.
  • @font-face нельзя объявлять внутри CSS-селектора. Например, следующий код не будет работать:

    .className {
      @font-face {
        font-family: "MyHelvetica";
        src:
          local("Helvetica Neue Bold"), local("HelveticaNeue-Bold"),
          url("MgOpenModernaBold.woff2");
        font-weight: bold;
      }
    }
    

Формальный синтаксис

Примеры

Указание загружаемого шрифта

В этом примере задаётся загружаемый шрифт, который применяется ко всему содержимому документа:

<body>
  This is Bitstream Vera Serif Bold.
</body>
@font-face {
  font-family: "Bitstream Vera Serif Bold";
  src: url("https://mdn.github.io/shared-assets/fonts/FiraSans-Regular.woff2");
}

body {
  font-family: "Bitstream Vera Serif Bold", serif;
}

Указание локальных альтернативных шрифтов

В этом примере используется локальная копия шрифта «Helvetica Neue Bold»; если у пользователя не установлен этот шрифт (проверяются и полное имя шрифта, и имя PostScript), вместо него используется загружаемый шрифт «MgOpenModernaBold.woff2»:

@font-face {
  font-family: "MyHelvetica";
  src:
    local("Helvetica Neue Bold"), local("HelveticaNeue-Bold"),
    url("MgOpenModernaBold.woff2");
  font-weight: bold;
}

Спецификации

Спецификация
CSS Fonts Module Level 4
# font-face-rule

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на iOS Samsung Internet WebView для Android WebView на iOS
font-face
1
12
3.5
10
3.1
18
4
10.1
2
1.0
2.2
2
OpenType_CBDT_CBLC
66
79
Нет
53
Нет
66
Нет
47
Нет
9.0
66
Нет
OpenType_COLRv0
53
79
31
40
11.1
53
31
41
11.3
6.0
53
11.3
OpenType_COLRv1
98
98
107
84
Нет
98
107
68
Нет
18.0
98
Нет
OpenType_SBIX
66
79
Нет
53
9.1
66
Нет
47
9.3
9.0
66
9.3
OpenType_SVG
Нет
Нет
31
Нет
12.1
Нет
31
Нет
12.2
Нет
Нет
12.2
SVG_fonts
1–38
Нет
Нет
15–25
3.1
18–38
Нет
14–25
3
1.0–3.0
4.4–38
3
WOFF
6
12
3.5
11.1
5.1
18
4
11.1
5
1.0
4.4
5
WOFF_2
36
14
39
23
10Поддерживается только в macOS 10.12 (Sierra) и более поздних версиях.
36
39
24
10
3.0
37
10
ascent-override
87
87
89
73
предварительная версия
87
89
62
Нет
14.0
87
Нет
descent-override
87
87
89
73
предварительная версия
87
89
62
Нет
14.0
87
Нет
font-display
60
79
58
47
11.1
60
58
44
11.3
11.0
60
11.3
font-family
4
12
3.5
10
3.1
18
4
10.1
2
1.0
2.2
2
font-feature-settings
140
140
34В ISO/IEC CD 14496-22, 3-е издание рекомендуется использовать функцию ssty для предоставления вариантов глифов, более подходящих для использования в скриптах (например, штрихов, используемых в качестве надстрочных знаков). Начиная с Firefox 29, это автоматически выполняет механизм отрисовки MathML. В ISO/IEC CD 14496-22, 3-е издание также рекомендуется применять функцию dtls к буквам при размещении математических диакритических знаков, чтобы получить варианты без точки (например, i без точки, j с шляпкой). Начиная с Firefox 35, это автоматически выполняет механизм отрисовки MathML. Значения по умолчанию, определяемые механизмом отрисовки MathML, можно переопределить с помощью CSS.
15В версиях Firefox с 4 по 14 включительно поддерживался более старый, немного отличающийся синтаксис. См. раздел Поддержка функций шрифтов OpenType в Firefox 4.
124
10
140
34В ISO/IEC CD 14496-22, 3-е издание рекомендуется использовать функцию ssty для предоставления вариантов глифов, более подходящих для использования в скриптах (например, штрихов, используемых в качестве надстрочных знаков). Начиная с Firefox для Android 29, это автоматически выполняет механизм отрисовки MathML. В ISO/IEC CD 14496-22, 3-е издание также рекомендуется применять функцию dtls к буквам при размещении математических диакритических знаков, чтобы получить варианты без точки (например, i без точки, j с шляпкой). Начиная с Firefox для Android 35, это автоматически выполняет механизм отрисовки MathML. Значения по умолчанию, определяемые механизмом отрисовки MathML, можно переопределить с помощью CSS.
15В версиях Firefox для Android с 4 по 14 включительно поддерживался более старый, немного отличающийся синтаксис. См. раздел Поддержка функций шрифтов OpenType в Firefox для Android 4.
92
10
30.0
140
10
font-stretch
62
17
62
49
10.1
62
62
41
10.3
6.0
62
10.3
font-style
4
12
3.5
10
3.1
18
4
10.1
2
1.0
4.4
2
font-variant
4
12
3.5
10
3.1
18
4
10.1
2
1.0
4.4
2
font-variation-settings
140
140
62
124
Нет
140
62
92
Нет
30.0
140
Нет
font-weight
4
12
3.5
10
3.1
18
4
10.1
2
1.0
4.4
2
font-width
Нет
Нет
Нет
Нет
18.4
Нет
Нет
Нет
18.4
Нет
Нет
18.4
line-gap-override
87
87
89
73
предварительная версия
87
89
62
Нет
14.0
87
Нет
size-adjust
92
92
92
78
17
92
92
Нет
17
16.0
92
17
src
4
12
3.5
10
3.1
18
4
10.1
2
1.0
2.2
2
unicode-range
1
12
36
15
3.1
18
36
14
3
1.0
4.4
3

См. также

  • О формате WOFF
  • Генератор веб-шрифтов Transfonter
  • Красивые шрифты с помощью @font-face
  • Библиотека шрифтов

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@font-face

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API