На главную

CSS и вёрстка

Правило @font-face

Собирает @font-face с font-display и unicode-range, раскладывает источники в правильном порядке и добавляет теги preload.

Шрифт

Если шрифт уже стоит в системе — браузер возьмёт его и ничего не скачает

swap — сразу запасной, потом подмена

Файлы

woff2
woff

Порядок в правиле выставляется сам: woff2 первым, дальше woff и ttf. Иначе браузер скачает формат потяжелее, хотя умеет более лёгкий.

Диапазоны символов

Без unicode-range браузер скачает файл, даже если на странице нет ни одного его символа.

@font-face

@font-face {
  font-family: 'Golos Text';
  src: url('/fonts/golos-text.woff2') format('woff2'),
       url('/fonts/golos-text.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116, U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

Теги preload

<link rel="preload" href="/fonts/golos-text.woff2" as="font" type="font/woff2" crossorigin>

Применение

body {
  font-family: 'Golos Text', system-ui, -apple-system, "Segoe UI", sans-serif;
}

Всё вместе

@font-face {
  font-family: 'Golos Text';
  src: url('/fonts/golos-text.woff2') format('woff2'),
       url('/fonts/golos-text.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116, U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

body {
  font-family: 'Golos Text', system-ui, -apple-system, "Segoe UI", sans-serif;
}