Как правильно настроить подгрузку шрифтов, чтобы они корректно отображались во всех браузерах?

Как настроить загрузку шрифтов для обеспечения совместимости с разными браузерами? Гарантирует ли указанный способ загрузку всех шрифтов или браузер выберет оптимальный?
  • 25 января 2024 г. 9:30
Ответы на вопрос 2
Для того чтобы шрифты корректно отображались во всех браузерах, их нужно подключать с использованием CSS-директивы `@font-face`. Директива `@font-face` позволяет загрузить пользовательский шрифт на веб-страницу, которая будет доступна для всех элементов этой страницы.

Вот как выглядит базовый пример подключения шрифта:

```css
@font-face {
    font-family: 'MyWebFont'; /* Имя шрифта */
    src:  url('myfont.woff2') format('woff2'), /* Современный формат, предпочтительный из-за меньшего размера и большей производительности */
          url('myfont.woff') format('woff'), /* Современный формат для браузеров, которые не поддерживают WOFF2 */
          url('myfont.ttf') format('truetype'); /* Для старых браузеров */
}
```

Затем этот шрифт можно использовать в CSS, задав его для нужных элементов:

```css
body {
    font-family: 'MyWebFont', sans-serif;
}
```

В директиве `@font-face` можно указать несколько URL-адресов для подключения различных форматов шрифтов. Примеры форматов:
- WOFF2 (.woff2) — новейший и самый эффективный формат, большинство современных браузеров его поддерживают.
- WOFF (.woff) — широко поддерживается современными браузерами.
- TTF/OTF (.ttf/.otf) — форматы для старых браузеров, которые могут не поддерживать WOFF или WOFF2.

Браузер автоматически выберет первый доступный и поддерживаемый им формат на основе источников, указанных в `src`. Поэтому важно указать источники в порядке от предпочтительных к запасным.

В некоторых случаях может потребоваться предусмотреть дополнительные шрифтовые форматы (например, EOT для очень старых версий Internet Explorer) или дополнительные настройки (например, unicode-range для загрузки только определённого диапазона символов):

```css
@font-face {
    font-family: 'MyWebFont';
    src: url('myfont.eot'); /* IE9 Compat Modes */
    src: url('myfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
         url('myfont.woff2') format('woff2'), /* Суперсовременные браузеры */
         url('myfont.woff') format('woff'), /* Современные браузеры */
         url('myfont.ttf')  format('truetype'), /* Safari, Android, iOS */
         url('myfont.svg#svgFontName') format('svg'); /* Legacy iOS */
    unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20CF, U+2100-218F; /* Набор символов */
}
```

Указывая источники для шрифтов, всегда старайтесь всесторонне тестировать на различных платформах и браузерах. Обратите внимание, что подключение большого количества шрифтов может замедлить загрузку страницы, поэтому следует подгружать только необходимые варианты и весовые категории шрифта.
Загрузится только один подходящий шрифт. 

PS .
Вам правда нужна поддержка IE9, и прочей древности? Достаточно подключить woff2. Это покроет браузеры с 2017 года выпуска. Можно добавить woff и поддерживать браузеры с 2011 года (кроме 4 андроидов, но их все равно уже нет).
Похожие вопросы