Почему веб-шрифт не загружается: проверка формата и MIME-типа на сайте

Почему веб-шрифт не загружается: формат и MIME-тип на сайте
Если веб-шрифт не загружается, сначала проверьте три вещи: существует ли файл по указанному адресу, поддерживает ли браузер его формат и отправляет ли сервер правильный MIME-тип. Затем проверьте CORS, путь в CSS и отсутствие блокировки в панели разработчика. Такой порядок быстро отделяет ошибку файла от ошибки конфигурации сайта.
Дата актуальности материала: 28 августа 2026 года. Инструкция подходит для сайтов на обычном веб-сервере, CDN, популярных CMS и современных сборщиков фронтенда.
Как браузер загружает шрифт через CSS
Веб-шрифт подключают правилом @font-face. В нём указывают семейство, начертание, вес и адрес файла в свойстве src. Когда браузер встречает текст с таким семейством, он запрашивает файл по указанному URL, проверяет ответ сервера и пытается распознать содержимое. Ошибка на любом этапе приводит к замене шрифта системным или резервным.
Например, CSS может содержать семейство Font Example, вес 400 и файл /fonts/example-regular.woff2. Если путь ведёт к странице 404, сервер отвечает HTML вместо шрифта или заголовок Content-Type не соответствует файлу, браузер не сможет применить начертание, даже если правило CSS написано без синтаксических ошибок.
Признаки проблемы с загрузкой веб-шрифта
Неисправность обычно заметна не только по внешнему виду текста. В панели разработчика браузер часто показывает точную причину: ресурс не найден, ответ заблокирован политикой CORS, MIME-тип не поддерживается или файл повреждён. Проверяйте сообщение полностью, потому что одинаковый визуальный результат может быть вызван разными ошибками.
- Текст отображается системным шрифтом, хотя правило @font-face присутствует в CSS.
- В Network запрос к файлу заканчивается статусом 404, 403, 500 или перенаправлением на другую страницу.
- В консоли появляется сообщение о неправильном MIME-типе или блокировке ресурса.
- На локальном компьютере шрифт работает, а после публикации сайта перестаёт загружаться.
- На одном домене файл открывается, но при подключении с другого поддомена браузер его блокирует.
- Загружается одно начертание, а полужирное или курсивное начертание не применяется.
Какой формат веб-шрифта выбрать
Для веба чаще всего используют WOFF2, а при необходимости совместимости добавляют WOFF. WOFF2 обычно предпочтителен благодаря более эффективному сжатию. Форматы TTF и OTF могут использоваться как исходные файлы или запасной вариант, но для публикации в интернете их применяют осторожнее: они часто тяжелее и не всегда являются оптимальным выбором для доставки в браузер.
WOFF2 — основной современный вариант
Файл WOFF2 имеет расширение .woff2 и обычно указывается первым в списке src. Современные браузеры поддерживают этот формат, поэтому для большинства новых сайтов достаточно подготовить корректный WOFF2-файл. Проверьте, что расширение соответствует реальному содержимому: простое переименование TTF в WOFF2 не конвертирует шрифт и не исправит структуру файла.
WOFF — запасной формат
WOFF с расширением .woff может использоваться как резервный источник после WOFF2. Браузер выбирает подходящий формат из списка, если CSS оформлен корректно. Наличие двух расширений само по себе не решает проблему: каждый файл должен существовать, иметь правильный Content-Type и быть доступным по указанному пути.
TTF и OTF: когда они вызывают вопросы
TTF и OTF — распространённые форматы шрифтов, но их не следует автоматически считать веб-форматами. Если сайт отдаёт такой файл, проверьте поддержку конкретного браузера, размер ресурса и MIME-тип. Для стабильной веб-доставки лучше использовать специально подготовленный WOFF2, а исходный TTF оставить для редактирования или установки в операционной системе.
MIME-тип: что должен отправлять сервер
MIME-тип, или Content-Type, сообщает браузеру, какой вид данных вернул сервер. Для WOFF2 обычно используют application font woff2, записанный без пробела как application/font-woff2. Для WOFF применяется font/woff, для TTF — font/ttf, для OTF — font/otf. Конкретная конфигурация зависит от сервера, но заголовок должен соответствовать реальному формату файла.
Ошибочный MIME-тип возникает, например, когда сервер отдаёт файл шрифта как text/html, потому что URL попал на страницу ошибки. Другая ситуация — универсальная настройка application/octet-stream. Такой ответ иногда позволяет скачать файл, но не всегда корректно проходит проверку браузером и инструментов безопасности. Надёжнее настроить отдельные типы для расширений шрифтов.
- WOFF2 — application/font-woff2.
- WOFF — font/woff.
- TTF — font/ttf.
- OTF — font/otf.
- SVG-шрифт — устаревший вариант, который не стоит выбирать для нового проекта.
Пошаговая проверка в браузере
Диагностику удобнее проводить в инструментах разработчика. Не ограничивайтесь просмотром страницы: браузер может показывать текст, но незаметно использовать резервный шрифт. Нужно проверить сам сетевой запрос, его статус, заголовки и содержимое ответа.
- Откройте страницу с проблемным шрифтом и запустите инструменты разработчика браузера.
- Перейдите во вкладку Network и обновите страницу, чтобы запрос к файлу появился заново.
- Отфильтруйте список по словам font или woff и найдите нужный ресурс.
- Проверьте статус ответа: успешная загрузка обычно должна возвращать доступный файл, а не страницу ошибки или бесконечное перенаправление.
- Откройте заголовки ответа и сравните Content-Type с расширением и фактическим форматом файла.
- Посмотрите Console: сообщения о CORS, mixed content, блокировке политики безопасности и декодировании часто указывают на следующий шаг.
- Сравните computed styles элемента: применилось ли нужное семейство и начертание, а не только название в CSS.
Практические примеры типовых неисправностей
Вместо шрифта сервер возвращает страницу 404
В CSS указан путь /assets/fonts/site.woff2, но после сборки файл оказался в /assets/site.woff2. Браузер делает запрос по старому адресу, получает 404 и не применяет шрифт. Исправьте путь в CSS или настройку сборщика, очистите кэш и повторите проверку в Network. Если ответ имеет Content-Type text/html, это дополнительный признак страницы ошибки.
Расширение есть, но содержимое файла другое
Переименование файла site.ttf в site.woff2 не является конвертацией. Расширение сообщает имя, но не меняет внутреннюю структуру. Браузер пытается разобрать данные как WOFF2, обнаруживает несовместимое содержимое и выдаёт ошибку декодирования. Используйте настоящий экспорт или конвертацию в WOFF2 из корректного исходного файла с учётом лицензии на шрифт.
Шрифт лежит на другом домене и блокируется CORS
Если CSS загружается с example.ru, а шрифт находится на static.example.ru или внешнем CDN, браузер применяет правила междоменного доступа. Сервер, который отдаёт файл, должен разрешить запросы от нужного источника с помощью заголовка Access-Control-Allow-Origin. Настройка должна быть согласована с политикой сайта: не открывайте ресурс шире, чем требуется проекту.
HTTP-ресурс подключён на HTTPS-странице
Когда страница работает по HTTPS, а файл шрифта запрашивается по HTTP, браузер может заблокировать такой mixed content. Исправьте абсолютный адрес на HTTPS или используйте относительный путь, если ресурс находится на том же сайте. Проверьте также перенаправления: переход с HTTPS на HTTP создаёт похожую проблему.
Проверка правила @font-face в CSS
Даже правильный файл не заработает, если CSS неверно связывает его с текстом. Укажите одинаковое имя в font-family внутри @font-face и в стилях элемента. Для каждого веса создайте отдельное правило или корректно опишите диапазон variable font. Свойства font-style и font-weight должны соответствовать реальному начертанию, иначе браузер может синтезировать жирность или выбрать другой файл.
Проверьте порядок источников и форматные подсказки. Если сначала указан недоступный ресурс, браузер может перейти к следующему варианту, но ошибка всё равно останется в журнале. Убедитесь, что URL не содержит лишнего регистра: на части серверов путь Font.woff2 и font.woff2 указывает на разные файлы.
Чеклист перед публикацией веб-шрифта
- Проверьте, что файл действительно существует в опубликованной папке.
- Сопоставьте расширение, внутренний формат и Content-Type.
- Откройте прямой адрес файла и убедитесь, что сервер не возвращает HTML-страницу.
- Проверьте статус запроса и отсутствие лишних перенаправлений.
- Сравните путь в CSS с фактическим расположением файла после сборки.
- Проверьте CORS, если CSS и шрифт находятся на разных источниках.
- Убедитесь, что страница и шрифт используют HTTPS.
- Проверьте каждое начертание: regular, medium, bold, italic и variable, если они заявлены.
- Очистите кэш или выполните жёсткое обновление после исправления.
- Сравните отображение текста с резервным шрифтом на компьютере и мобильном устройстве.
Частые ошибки при подключении шрифтов
- Использовать имя файла как доказательство формата и не проверять его содержимое.
- Указать в CSS локальный путь, который существует только на компьютере разработчика.
- Скопировать путь из исходников до сборки и забыть о хешировании или переносе файлов.
- Настроить MIME-тип для WOFF2 как text/plain или text/html.
- Проверять только визуальный результат и не смотреть сетевые запросы.
- Забыть про CORS при размещении шрифтов на CDN или отдельном поддомене.
- Подключить слишком много начертаний, увеличив количество запросов и объём ресурсов.
- Переопределить font-family позже в CSS и принять это за ошибку загрузки.
Часто задаваемые вопросы
Почему WOFF2 не загружается, хотя файл существует?
Само наличие файла не гарантирует успешную загрузку. Проверьте точный URL, регистр символов, статус ответа, Content-Type, CORS и реальное содержимое файла. Если сервер возвращает HTML, повреждённый ресурс или неподходящий тип данных, браузер отклонит шрифт несмотря на правильное расширение .woff2.
Какой MIME-тип нужен для WOFF2?
Для WOFF2 обычно используют MIME-тип application/font-woff2. Он должен отправляться в заголовке Content-Type при запросе файла. Проверьте заголовок в панели Network, потому что настройка расширения на сервере может отсутствовать, работать только для другого каталога или перекрываться правилами CDN.
Можно ли подключать TTF вместо WOFF2?
TTF можно подключать в проектах, где это оправдано поддержкой конкретной среды, но для современной веб-доставки обычно выбирают WOFF2. Он предназначен для компактной передачи шрифтов через сеть. При использовании TTF проверьте поддержку браузеров, размер файла, корректный MIME-тип и лицензионные условия.
Почему шрифт работает локально, но не работает на хостинге?
Локальная среда может обращаться к файлу напрямую, а хостинг меняет пути, регистр имён, заголовки или правила доступа. После публикации проверьте итоговую папку сборки и фактический ответ сервера. Частые причины — неправильный относительный путь, отсутствие файла в деплое, MIME-тип по умолчанию и блокировка CORS.
Нужно ли добавлять WOFF, если есть WOFF2?
Не всегда. Если проект рассчитан на современные браузеры, корректного WOFF2 может быть достаточно. WOFF добавляют как запасной вариант, когда нужно поддержать более старые окружения или особую инфраструктуру. Каждый дополнительный файл увеличивает сложность настройки, поэтому его следует включать только при понятной потребности.
Что делать, если в консоли появляется ошибка CORS?
Настройте сервер, CDN или объектное хранилище так, чтобы оно разрешало запрос шрифта с домена страницы. Проверьте Access-Control-Allow-Origin и другие правила, влияющие на кросс-доменные запросы. Не заменяйте исправление CORS отключением защиты в браузере: такой обход помогает только локально и не решает проблему для посетителей сайта.
Почему загружается regular, но не загружается bold?
У каждого начертания может быть отдельный файл и отдельная ошибка. Проверьте путь к bold-файлу, значение font-weight, MIME-тип, статус ответа и соответствие фактического содержимого. Если файл bold отсутствует, браузер иногда синтезирует жирность из regular, поэтому визуальная разница может маскировать проблему.
Вывод
Когда веб-шрифт не загружается, начинайте с Network: статус запроса, Content-Type, адрес файла и текст ошибки обычно сразу показывают причину. После этого проверьте CORS, HTTPS и связь между @font-face и нужным начертанием. Для нового проекта используйте корректно подготовленный WOFF2 и тестируйте опубликованную версию сайта, а не только локальную сборку.
Нужен собственный шрифт для сайта, бренда или интерфейса? Создайте и подготовьте шрифт на fontgenerator.ru, а затем проверьте его веб-версию по этому чеклисту перед публикацией.