Все статьи
22 июля 2026 г.9 мин чтения

Как запретить искусственный жирный шрифт с помощью font-synthesis

Как запретить искусственный жирный шрифт с помощью font-synthesis

font-synthesis нужен, чтобы управлять тем, как браузер заменяет отсутствующие начертания шрифта. Если гарнитура не содержит жирной или курсивной версии, браузер может создать её искусственно. Чтобы запретить такой жирный и сохранить предсказуемый вид текста, используйте font-synthesis: none, а для отдельных случаев разрешайте только нужные виды синтеза.

Материал актуален на 22 июля 2026 года. Ниже разобраны принцип работы font-synthesis, различия между настоящим и синтетическим начертанием, практические CSS-примеры, типичные ошибки и правила проверки результата в интерфейсе.

Что такое font-synthesis в CSS

font-synthesis — CSS-свойство, которое определяет, может ли браузер самостоятельно имитировать отсутствующие варианты шрифта. Когда в стилях указано font-weight: 700, а подключённый файл содержит только обычное начертание, браузер иногда расширяет штрихи и получает условный жирный текст. Аналогично он может наклонять символы при запросе курсива или имитировать малые капители.

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

Почему браузер создаёт искусственный жирный

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

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

Проблема появляется не только из-за отсутствия файла weight 700. Причиной может быть неверно указанное имя font-family, ошибка в font-weight внутри правила @font-face, блокировка загрузки веб-шрифта или использование локальной версии гарнитуры, в которой набор начертаний отличается от ожидаемого.

Какие виды синтеза управляет свойство

Свойство позволяет отключить синтез полностью или перечислить разрешённые виды. На практике чаще всего используются три компонента: weight для жирного начертания, style для курсива и small-caps для малых капителей. Такой подход удобнее, чем безусловно полагаться на поведение браузера во всех комбинациях шрифта и CSS.

  • none — запрещает синтез начертаний, которые браузер мог бы создать самостоятельно.
  • weight — разрешает имитацию жирного начертания, если настоящий вес недоступен.
  • style — разрешает синтез курсива или наклонного начертания.
  • small-caps — разрешает создание малых капителей при отсутствии соответствующего варианта.
  • Комбинация значений — оставляет только перечисленные виды синтеза, например weight style.

Если значение не задано, браузер использует стандартное поведение. Поэтому отсутствие font-synthesis в проекте не означает запрет синтетики: напротив, при нехватке начертаний браузер может попытаться компенсировать её автоматически. Явное правило делает типографическую политику интерфейса понятной и контролируемой.

Как запретить искусственный жирный шрифт

Для полного запрета синтеза добавьте свойство к нужному элементу или к контейнеру с текстом: font-synthesis: none. Если правило применяется к body, оно может повлиять на весь сайт. Для дизайн-системы такой вариант полезен, когда команда хочет использовать только реальные файлы начертаний и сразу замечать ошибки подключения.

Практическая запись выглядит так: .text { font-family: "Название гарнитуры", sans-serif; font-weight: 700; font-synthesis: none; }. Если файл с весом 700 не загружен, браузер не должен дорисовывать жирность из обычного файла. Итогом может стать менее жирный текст, переход на запасную гарнитуру или визуально обычное начертание — это ожидаемое поведение, а не ошибка свойства.

Запрет для всей типографики проекта

В интерфейсе с жёсткими требованиями к брендингу правило можно задать на корневом контейнере: .app { font-synthesis: none; }. Такой вариант отключает не только искусственный жирный, но и синтез курсива и малых капителей внутри контейнера. Перед внедрением проверьте все компоненты: некоторые подписи могут специально рассчитывать на наклон или выделение средствами браузера.

Точечный запрет только для жирного

Иногда полный запрет не нужен. Например, проекту важно сохранить курсив в цитатах, но нельзя допускать искусственное утолщение логотипа, заголовков или кнопок. Тогда применяйте font-synthesis: style; к конкретной группе элементов. Это разрешает синтез стиля, но не разрешает синтез веса.

Для более явной политики можно записать font-synthesis: style small-caps; или font-synthesis: weight style;. В первом случае жирный синтез отключён, а во втором разрешены только жирность и курсив. Значение выбирают не по названию класса, а по реальному набору начертаний и требованиям макета.

font-synthesis: none не заменяет подключение настоящего жирного файла. Свойство лишь запрещает браузеру имитировать отсутствующий вариант, поэтому после его включения обязательно проверьте, что нужные веса и стили действительно объявлены и загружаются.

Как подключить настоящее жирное начертание

Качественная типографика начинается с корректной пары font-family и font-weight. Для каждого доступного веса создайте отдельное правило @font-face или используйте переменный шрифт с поддерживаемым диапазоном осей. Важно, чтобы значение font-weight в описании файла соответствовало тому весу, который запрашивает CSS.

Например, если файл содержит Bold, но в @font-face ему ошибочно назначен font-weight: 400, браузер может считать его обычным начертанием. При запросе 700 движок не найдёт ожидаемый вариант и начнёт подбирать замену. Проверяйте не только наличие файла на сервере, но и его связь с конкретным семейством, весом и стилем.

  • Задайте одинаковое имя семейства во всех правилах @font-face.
  • Укажите реальный вес каждого файла: 400 для обычного, 700 для жирного — если именно такие варианты предусмотрены гарнитурой.
  • Разделяйте normal и italic, чтобы браузер не путал прямое и курсивное начертания.
  • Проверьте путь к файлу, формат, сетевые ошибки и ограничения загрузки.
  • Не объявляйте один файл сразу как несколько разных весов без технической причины.

Практические примеры для веб-интерфейсов

Заголовки и кнопки

Заголовки, кнопки и элементы навигации обычно имеют короткий текст, поэтому даже небольшое изменение толщины заметно влияет на композицию. Если макет построен на конкретном жирном начертании, задайте для этих компонентов font-synthesis: none и подключите нужный файл. Так границы кнопок, ширина заголовка и переносы будут ближе к макету.

Основной текст и курсив

Для длинного текста иногда допустимо разрешить искусственный курсив, если настоящая версия не предусмотрена, но запретить искусственный вес. В этом случае применяйте font-synthesis: style; к текстовому контейнеру. Однако для брендовых материалов, сложной антиквы и интерфейсов с несколькими языками безопаснее отключить синтез полностью и подключить все необходимые стили.

Переменный шрифт

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

Резервная гарнитура

При сбое загрузки веб-шрифта текст может временно или постоянно отображаться запасной гарнитурой. У неё может быть другой набор весов, поэтому результат при font-synthesis: none будет отличаться от результата после загрузки основного файла. Это нормально: проверяйте типографику в состоянии загрузки, после загрузки и при отключённом интернете.

Чем font-synthesis отличается от font-weight

font-weight сообщает, какую толщину текста нужно выбрать, а font-synthesis определяет, разрешено ли создавать отсутствующую толщину искусственно. Эти свойства не конкурируют и не заменяют друг друга. Запись font-weight: 700 без font-synthesis может привести к синтезу, если вес 700 недоступен; запись font-synthesis: none запрещает компенсацию, но сама по себе не делает текст жирным.

Поэтому корректная связка состоит из трёх частей: объявить семейство, подключить реальные файлы или ось переменного шрифта и запросить нужный вес через font-weight. Затем font-synthesis используют как ограничитель поведения. Такой порядок помогает отделить проблему выбора начертания от проблемы его отсутствия.

Частые ошибки при запрете синтетики

  • Запретить синтез и не подключить настоящий вес. В результате текст перестанет быть визуально жирным, хотя CSS по-прежнему запрашивает 700.
  • Использовать неправильное имя семейства. Правило с font-synthesis не поможет, если элемент фактически отображается другой гарнитурой.
  • Считать font-weight: 700 гарантией файла Bold. Это только запрос веса, а не подтверждение, что соответствующий ресурс загружен.
  • Объявить Bold как обычный вес. Браузер будет выбирать файл непредсказуемо и может синтезировать другие варианты.
  • Запретить синтез на всём сайте без аудита. Курсив, малые капители и сторонние компоненты могут потерять ожидаемое оформление.
  • Проверить только один браузер. Разные движки и платформы могут по-разному отображать недоступные начертания.
  • Оценивать результат только по толщине. Сравнивайте также ширину букв, просветы, наклон, переносы и межстрочный ритм.

Чеклист проверки font-synthesis

Проверка должна подтвердить не только наличие CSS-декларации, но и соответствие всей цепочки: от макета до файла шрифта. Выполните её для заголовков, основного текста, кнопок, форм, навигации и компонентов, которые подключаются отдельно. Отдельно протестируйте латиницу, кириллицу и специальные символы, поскольку наборы глифов могут различаться.

  1. Определите, какие веса и стили реально нужны макету.
  2. Проверьте, что для каждого варианта есть файл или диапазон переменного шрифта.
  3. Сверьте имя family, значение weight и значение style в правилах @font-face.
  4. Добавьте font-synthesis: none к компонентам, где искусственные начертания недопустимы.
  5. Загрузите страницу с очищенным кэшем и проверьте сетевые запросы к файлам шрифтов.
  6. Сравните текст до и после загрузки веб-шрифта.
  7. Проверьте состояние при ошибке загрузки и с резервной гарнитурой.
  8. Оцените переносы, ширину строк, контраст штрихов и визуальную иерархию.

Частые вопросы о font-synthesis

Что делает font-synthesis: none?

font-synthesis: none запрещает браузеру синтезировать отсутствующие варианты шрифта. В первую очередь это касается искусственного жирного и курсива, а также малых капителей, если они не представлены отдельным начертанием. Свойство не загружает файлы и не меняет font-weight, поэтому нужные веса необходимо подключить отдельно.

Можно ли запретить только искусственный жирный?

Да. Используйте значение font-synthesis: style;, если хотите запретить синтез веса, но сохранить возможность искусственного курсива. Такой выбор оправдан только при осознанной типографической политике. Если синтетика не нужна ни для одного начертания, используйте font-synthesis: none.

Сделает ли font-synthesis: none текст тоньше?

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

Нужно ли использовать font-synthesis для каждого элемента?

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

Работает ли font-synthesis с variable fonts?

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

Почему после запрета жирный всё равно выглядит неправильно?

Причина может быть в другом файле, ошибке @font-face, запасной гарнитуре или неверном значении font-weight. Проверьте вычисленные стили, фактически используемый шрифт в инструментах разработчика, сетевые запросы и порядок правил CSS. Также убедитесь, что жирность не создаётся другим свойством или компонентной библиотекой.

Можно ли применять запрет только к заголовкам?

Да. Это распространённый компромисс для сайтов, где брендовые заголовки требуют точного рисунка, а основной текст допускает более гибкое поведение. Создайте отдельный класс для заголовков, задайте ему font-synthesis: none и подключите реальные веса. Такой подход снижает риск побочных изменений в остальных компонентах.

Вывод

font-synthesis помогает контролировать замену отсутствующих начертаний и не позволяет браузеру незаметно создавать искусственный жирный шрифт. Используйте font-synthesis: none там, где важны точность гарнитуры и стабильная верстка, а для остальных случаев выбирайте ограниченный набор разрешённых значений.

Нужен шрифт с подходящими весами и стилями? Создайте собственную гарнитуру на fontgenerator.ru, подготовьте необходимые начертания и подключите их в проект без компромиссов с синтетическим жирным.