Не грузится шрифт на сайте - разбираемся с проблемой - блог программиста

Ян Боровский

Веб-разработчик

Создание сайтов

Не грузится шрифт на сайте — разбираемся с проблемой

Вероятно для многих начинающих верстальщиков является актуальной проблема подключения шрифтов. В свое время я сам не раз спотыкался на этом, казалось бы, простом этапе. Именно для вас я подготовил эту статью и видео на Youtube, чтобы дать четкий ответ на вопрос «Почему шрифт не подгружается на сайте».

1. Файл CSS не подключен в html

Да, как бы глупо это не звучало, часто проблема кроется в забывчивости и невнимательности. Подключение шрифтов часто — первый этап, за который берутся при разработке сайта. Увлекшись написанием стилей, мы можем забыть подключить их к html, а в силу банальности ошибки, она приходит нам в голову не сразу. Для этого я вынес эту проблему в первый пункт, чтобы вы сразу убедились в корректности подключенного css файла. На всякий случай, оставлю пример подключения файла style.css:

<link rel="stylesheet" href="/css/style.css">

2. Не верный путь подключения шрифта

На моей памяти было пару раз, когда я указывал неверный путь до файла, или совершал опечатку в названии папки/файла шрифта, тем самым вызвав ошибку 404 и проблему с загрузкой шрифта на сайте. Данную ошибку очень легко отследить, достаточно зайти в консоль разработчика и посмотреть, нет ли файлов, которые сервер отдает с ошибкой 404. Если вы видите что-то типо:

style.css  GET https://domain.ru/путь-до-файла/Manrope-Regular.ttf net::ERR_ABORTED 404 (Not Found)

То почти наверняка вы допустили ошибку в указании пути до файла шрифта.

Проверка: проверьте расположение папки со шрифтами в вашей структуре сайта. Точно ли вы используется нужный путь? Приведу примеры с url и путями к файлу:

url("../fonts/Manrope-Regular.ttf")
url("/fonts/Manrope-Regular.ttf")
url("fonts/Manrope-Regular.ttf")

3. Ошибка в написании шрифта

Если вы ловите ошибку 404, но путь до шрифта вы указали верно, то сравните название файла шрифта в папке и название файла шрифта в css. Вероятно вы просто неверно указали название самого файла. Запомните — Manrope-Regular и manrope-regular — не одно и тоже! Для лучшей надежности просто скопируйте название файла и вставьте его в css.

4. Неверный способ подключения шрифта в CSS

Сразу к делу — так выглядит 100% правильный вариант подключения шрифта в CSS:

@font-face{
  font-family:'Inter';
  src:
    url('/assets/fonts/Inter.woff2') format('woff2'),
    url('/assets/fonts/Inter.woff')  format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
Тут мы сразу подключаем woff и woff2, потому что IE 11 не поддерживает самый современный формат.

5. Mixed content (HTTP на HTTPS-странице)

Вот тут самая не очевидная проблема — это когда вы указываете до файла полный путь в url, например «http://domain.ru/fonts/Manrope-Regular.ttf», и вроде бы все точно указали — нет ошибок в написании шрифта, и в css @font-face указан корректно, но вы ловите ошибку Mixed content в консоли и шрифты не грузятся.

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

Выход банальный — просто меняем http на https, и вы сразу избавитесь от этой ошибки и подгрузите шрифт.