Поспорю с Андреем.
2) Не храните все символы в одном шрифтовом файле, если у Вас мультиязычный сайт, то есть на сайте есть функционал, который позволяет сменить язык, то храните символы каждого "языка" в отдельных файлах. Это крайне просто.
Зачем так делать? Опять же повторюсь, если сайт мультиязычный, то нет смысла заставлять английского пользователя скачивать кириллические символы. Уменьшив файл в несколько раз вы ускорите загрузку шрифтовых файлов. Для этого в CSS есть директива unicode-range.
Например, для подключения кириллицы
@font-face {
font-display: swap;
font-family: 'Lato';
src: url('/fonts/lato-light/lato-light.cyrillic.woff2') format('woff2'),
url('/fonts/lato-light/lato-light.cyrillic.woff') format('woff');
font-weight: 300;
font-style: normal;
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; // только кириллица
}
Как это работает? Браузер анализирует ваш DOM понимает какие символы используются на сайте и если есть совпадение, то шрифт закачивается, то есть в данном примере если на сайте есть кириллица, то lato-light.cyrillic.woff2 скачается и отрисуется, а шрифт lato-light.latin.woff2 даже не закачается.
Для разделения символов можно использовать инструмент
fontmin, либо его
gulp аналог