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