Как подключить файл веб-шрифта через @font-face и проверить кириллицу

Файл веб-шрифта подключают через @font-face и назначают тексту в CSS. Проверьте путь, начертания, кириллицу и запасную гарнитуру при сбое загрузки.
Что должно получиться
Текст страницы использует выбранный файл шрифта, а при его недоступности остаётся читаемым. Русские буквы, цифры и знаки отображаются корректно; обычный и жирный текст не подменяют друг друга случайно. Вы понимаете, где лежит файл и какое правило CSS его подключает.
Здесь речь о размещении файла в своём проекте. Подключение каталога внешнего сервиса и выбор гарнитуры — другие задачи. Для упражнения возьмите страницу, к которой уже подключена таблица стилей, и один разрешённый для веб-использования файл. Сначала проверьте условия его лицензии: возможность скачать шрифт ещё не означает право разместить его на сайте.
Работайте в копии или на тестовой площадке. Откройте страницу через локальный веб-сервер либо по тестовому адресу. Поведение документов, открытых непосредственно с диска, может отличаться от сайта и затруднять проверку путей и ограничений загрузки.
Из чего это складывается
| Часть | Задача | Где возникает ошибка |
|---|---|---|
| Файл шрифта | Содержит рисунки символов и данные начертания | Нет кириллицы, повреждён файл или выбран неподходящий набор |
| @font-face | Связывает имя семейства с ресурсом | Неверный путь или описание начертания |
| font-family | Назначает семейство нужному тексту | Правило перекрыто либо имя не совпадает |
| font-weight и font-style | Помогают выбрать нужное начертание | Обычный файл выдают за жирный или курсивный |
| font-display | Задаёт поведение текста во время загрузки | Стратегию не проверили на медленном соединении |
| Запасное семейство | Сохраняет возможность читать без основного файла | Замену не проверили в реальном макете |
Для современных браузеров распространён формат WOFF2. Он предназначен для веб-доставки и обычно удобнее исходного файла для настольной установки. Не переименовывайте расширение вручную: замена .ttf на .woff2 не преобразует внутренний формат. Если нужна конвертация, её допустимость и результат проверяют отдельно.
Как это сделать по шагам
- Подготовьте файл. Убедитесь, что его можно размещать на сайте, что в нём есть нужные языки и что известно начертание. Для начала выберите обычное прямое, без одновременного подключения всей коллекции.
- Положите его в проект. Выберите постоянную папку для шрифтов. Запишите фактическое имя с учётом регистра букв. Не переименовывайте файл без обновления пути в стилях.
- Добавьте правило @font-face. Укажите своё имя семейства, путь к файлу, формат и фактические параметры начертания. Пример ниже показывает структуру, а не готовый адрес вашего ресурса.
- Назначьте семейство тексту. Используйте то же имя в font-family. После него добавьте подходящие запасные семейства. Для первого теста достаточно одного абзаца с известным содержимым.
- Проверьте загрузку и применение. Убедитесь, что браузер получил именно файл шрифта, а нужный элемент использует его для отображения. Одного присутствия правила в CSS недостаточно.
- Добавьте нужные начертания. Подключайте их отдельными описаниями с общей семьёй и верными параметрами. Если файл переменный, используйте данные и диапазоны, относящиеся именно к нему.
- Проверьте отказ и медленную загрузку. Убедитесь, что текст можно прочитать без основного файла, а его появление не ломает кнопки, меню и переносы строк.
- Перенесите проверенное решение. Опубликуйте файл вместе со стилями, проверьте конечную страницу и обновление кеша. Сохраните сведения о происхождении и условиях использования шрифта.
Минимальный пример подключения
Допустим, обычный прямой файл действительно находится по пути /fonts/project-regular.woff2 от корня тестового сайта. ProjectText — выбранное вами внутреннее имя семейства. Тогда правило может выглядеть так:
@font-face { font-family: 'ProjectText'; src: url('/fonts/project-regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
Число 400 в примере обозначает обычную насыщенность. Оно должно соответствовать выбранному файлу. Не ставьте его автоматически для любого начертания. Назначение тексту выполняется другим правилом, например: body { font-family: 'ProjectText', Arial, sans-serif; }.
Эти строки добавляют в подключённый CSS, а не вставляют как обычный текст в описание страницы. Если у сайта есть своя система сборки стилей, используйте предусмотренный исходный файл. Прямая правка сгенерированного результата может исчезнуть при следующей сборке.
Путь с начальным / отсчитывается от корня текущего сайта. Относительный путь без начального / в отдельной таблице стилей отсчитывается от адреса самой этой таблицы. Поэтому fonts/file.woff2 рядом с CSS в папке /css/ будет означать другое место, чем такая же строка в корне проекта.
Проверьте адрес после публикации, особенно если тестовая площадка расположена в подпапке. Работающий на ней путь не всегда можно без изменений перенести на другой адрес. На сервере также может иметь значение регистр букв: Project.woff2 и project.woff2 не стоит считать одним именем.
Как убедиться, что применился нужный шрифт
Наличие font-family среди вычисленных стилей показывает назначенную цепочку семейств, но не всегда доказывает, какой файл нарисовал конкретные символы. Средства разработчика браузера позволяют проверить фактически использованные шрифты для элемента. Сопоставьте эту информацию с загрузкой файла и внешним видом текста.
Для проверки создайте короткий образец: русский абзац, латинские буквы, цифры, тире и кавычки. Добавьте слова с «ё» и «й». Если кириллицы нет, браузер может взять её из запасного шрифта, а латиницу оставить основной. В результате страница выглядит почти правильно, но части строки отличаются рисунком и шириной.
Проверьте не только обычный абзац. Заголовок может иметь собственное правило, кнопка — другое семейство, а поле формы — не наследовать ожидаемое оформление. Сначала выясните, какое CSS-правило действует на проблемный элемент. Не добавляйте новые одинаковые объявления во все файлы подряд.
Если в правиле есть local(), браузер может использовать установленный на компьютере шрифт вместо загрузки файла. Это бывает полезно, но мешает первичной проверке размещённого ресурса. В минимальном примере local() не используется, чтобы проверять именно файл проекта.
Начертания и набор символов
Отдельные обычный, жирный и курсивный файлы описывают как начертания одного семейства. Значения font-weight и font-style помогают браузеру выбрать нужный ресурс для текста. Если все файлы объявлены обычными, выбор может не соответствовать ожиданию дизайна.
Когда подходящего начертания нет, браузер иногда синтезирует жирность или наклон. Внешне это может походить на результат, но не подтверждает загрузку авторского начертания. Сверяйте используемый файл и проверяйте важные элементы на реальной странице.
Переменный файл способен содержать диапазоны параметров, однако их нельзя выводить из названия файла или случайного примера. Посмотрите сведения о конкретном шрифте и объявите поддерживаемый диапазон. Не задавайте переменный диапазон обычному статическому файлу.
Что происходит во время загрузки
В примере используется font-display: swap. Эта стратегия допускает быстрое отображение запасным шрифтом с последующей заменой на загруженный. Она не ускоряет сам файл и не обещает отсутствие сдвигов: если у двух гарнитур разная ширина, текст может перераспределиться.
Поэтому смотрите на страницу в процессе появления шрифта. Не исчезает ли подпись кнопки? Не становится ли меню выше? Сохраняется ли место для заголовка? Проверка только после полной загрузки пропускает этот короткий, но заметный пользователю этап.
Подберите запасное семейство с приемлемыми размерами и убедитесь, что интерфейс выдерживает его использование. Не назначайте фиксированную высоту текстовому блоку лишь ради красивого снимка: при другой гарнитуре или увеличении текста содержимое может обрезаться.
Если файл не загружается
Начните с фактического адреса и результата загрузки. Вместо шрифта сервер иногда отдаёт страницу ошибки или HTML-документ с успешным статусом. Проверяйте тип и содержимое ресурса, а не только цвет строки в списке загрузок. Для WOFF2 ожидается соответствующий шрифтовой ресурс.
Если файл находится на другом источнике, браузер учитывает ограничения межсайтового доступа. Наличие прямой ссылки ещё не означает, что ресурс разрешено использовать как шрифт на вашей странице. Также загрузку может ограничивать политика безопасности самого сайта. Исправляйте настройки конкретного ресурса, сохраняя назначение ограничений.
После замены файла или CSS проверьте кеш: браузер либо промежуточный сервер может продолжать использовать прежний вариант. Не меняйте имя наугад при каждом просмотре. Принятый в проекте способ версий ресурсов должен обновлять адрес и стили согласованно.
Частые ошибки
- Только объявить @font-face. Без назначения семейства нужному тексту файл может вообще не потребоваться браузеру.
- Скопировать чужой путь. Адрес из примера относится к другой структуре папок. Проверьте собственное размещение.
- Проверить только латиницу. Кириллица может рисоваться запасной гарнитурой, хотя основной файл успешно загружен.
- Использовать множество начертаний без задачи. Дополнительные используемые файлы увеличивают объём загрузки. Само объявление @font-face ещё не означает загрузку: браузер получает нужные странице варианты.
- Судить только по своему компьютеру. Установленный локальный шрифт и тёплый кеш могут скрыть проблему первого посещения.
Как проверить
- Происхождение файла и условия его размещения понятны.
- Путь проверен относительно фактического адреса CSS или корня сайта.
- Ресурс загружается как шрифт, а не как страница ошибки.
- Нужные символы и начертания действительно используют ожидаемые файлы.
- При недоступности шрифта текст читается, элементы не обрезаются.
- После публикации проверены кеш, первый просмотр и телефон.
Базовый порядок работы со стилями описан в инструкции по подключению CSS. Затем проверьте типографику страницы и обновление кешируемых файлов. Помощь с подключением можно найти в разделе Разработка.
Вопросы и ответы
Нужно ли устанавливать шрифт на сервер как программу?
Для обычного веб-подключения достаточно разместить разрешённый файл как ресурс сайта и описать его в CSS. Браузер пользователя получает файл и применяет его к тексту по правилам страницы.
Почему правило есть, а внешний вид не меняется?
Возможно, семейство не назначено элементу, имя не совпадает, правило перекрыто или файл не загрузился. Проверьте цепочку от CSS до фактически используемого шрифта. Внешне похожая запасная гарнитура тоже может скрывать отсутствие основного ресурса.
Почему русские и английские буквы выглядят по-разному?
Основной файл может не содержать кириллицу. Тогда недостающие символы берутся из другого семейства. Проверьте набор символов конкретного файла и используемые шрифты на одном смешанном образце текста.
Можно ли использовать один файл для всех начертаний?
Это зависит от файла. Переменный шрифт может поддерживать диапазоны, обычный статический файл обычно описывает конкретное начертание. Не назначайте ему произвольные возможности без проверки данных шрифта.
Что делать, если при загрузке прыгают строки?
Сравните размеры основного и запасного семейств, проверьте переносы и поведение блоков. Выбор font-display задаёт стратегию показа, но сам по себе не уравнивает геометрию разных гарнитур.
Можно ли положить файл на другой домен?
Да, если источник разрешает такое использование и загрузку допускают настройки доступа и безопасности. Проверяйте работу именно со страницы сайта: открытие файла по прямому адресу не доказывает, что браузер сможет применить его как шрифт.
Обязательно ли добавлять новый шрифт на сайт?
Нет. Системный набор может подходить задаче и избавляет от загрузки дополнительного ресурса. Добавляйте веб-шрифт, когда он нужен оформлению, а затем проверяйте читаемость и поведение страницы вместе с запасным вариантом.
