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

font-stretch в CSS: как управлять шириной шрифта

font-stretch в CSS: как управлять шириной шрифта

font-stretch в CSS: как управлять шириной шрифта

font-stretch в CSS задаёт ширину начертания шрифта: браузер выбирает узкую, стандартную или расширенную версию гарнитуры, если она доступна. Свойство не сжимает и не растягивает буквы как графический объект. В статье разберём ключевые значения, проценты, variable fonts, практические сценарии, отличия от transform и типичные ошибки.

Дата актуальности: 22 июля 2026 года. Материал ориентирован на разработчиков, дизайнеров и всех, кто настраивает веб-типографику без потери читаемости и визуального качества.

Что делает свойство font-stretch

Свойство font-stretch управляет параметром ширины шрифтового начертания. Для одной гарнитуры могут существовать варианты normal, condensed и expanded. Браузер сопоставляет заданное значение с доступными файлами шрифта и выбирает наиболее подходящий вариант. Если нужного начертания нет, визуальный результат может не измениться.

Начальное значение свойства — normal, которое соответствует стандартной ширине, или примерно 100 процентам. font-stretch является наследуемым свойством, поэтому его значение, заданное контейнеру, обычно применяется к дочерним элементам. Это удобно для отдельных текстовых зон, но требует осторожности: узкое начертание заголовка не всегда подходит для основного текста внутри того же блока.

Какие значения поддерживает font-stretch

Именованные значения описывают относительную ширину начертания. Набор построен от ultra-condensed до ultra-expanded, а normal обозначает стандартную ширину. Процентные значения дают более точный контроль и особенно полезны для вариативных шрифтов, в которых ширина может меняться плавно, а не только переключаться между несколькими готовыми файлами.

Процент записывается непосредственно в CSS: font-stretch: 90%;. Чем меньше значение, тем уже выбранное начертание; чем больше, тем шире. Однако проценты не означают универсальное масштабирование каждой буквы. Итог зависит от того, какие ширины предусмотрены конкретной гарнитурой и какой диапазон объявлен в описании шрифта.

Как браузер выбирает ширину начертания

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

Если подходящей ширины нет, браузер применяет алгоритм сопоставления шрифтов и может выбрать ближайший доступный вариант. В результате font-stretch: condensed у гарнитуры без узкого начертания часто выглядит так же, как normal. Это не ошибка свойства: CSS не обязан искусственно деформировать шрифт, если подходящей формы в семействе нет.

Главная проверка перед использованием font-stretch — убедиться, что шрифт действительно содержит нужную ширину. В каталоге гарнитуры ищите названия Narrow, Condensed, Compressed, Semi Expanded или Variable и проверяйте диапазон оси ширины.

font-stretch для статических шрифтов

В статической гарнитуре ширина обычно представлена отдельными файлами. Например, у семейства могут быть Regular, Condensed Regular и Expanded Regular. В таком случае правила @font-face описывают каждую версию как один и тот же font-family, но с разным значением font-stretch. Элемент с font-stretch: condensed получит узкий файл, если он зарегистрирован корректно.

Практическая схема может выглядеть так: font-family: 'Studio Sans', sans-serif; font-stretch: condensed;. Если браузер не найдёт объявленную condensed-версию, он перейдёт к доступному начертанию из этого семейства или к резервному шрифту. Поэтому fallback-цепочка должна быть визуально совместимой по пропорциям и насыщенности, особенно в интерфейсах с фиксированной шириной карточек.

font-stretch в variable fonts

Вариативный шрифт хранит диапазон параметров в одном файле. Ширина обычно управляется стандартной осью wdth, а font-stretch становится удобным CSS-интерфейсом для обращения к этой оси. Например, значение 82% может выбрать промежуточную ширину между стандартным и конденсированным вариантом, если такой диапазон предусмотрен автором гарнитуры.

При подключении variable font желательно указать диапазон ширины в @font-face, например font-stretch: 75% 125%;. Это сообщает браузеру, какие значения поддерживаются данным ресурсом. Если запрашивать значение за пределами диапазона, браузер может ограничить его ближайшей доступной границей. Фактический результат также зависит от дизайна оси wdth: разные шрифты меняют пропорции неодинаково.

Практические примеры применения

Узкий заголовок в плотном интерфейсе

Condensed-начертание полезно для коротких заголовков, подписей кнопок, навигации и числовых показателей, когда ширина блока ограничена. Пример: .dashboard-title { font-family: 'Studio Sans', sans-serif; font-stretch: 85%; font-weight: 700; }. Значение 85% сохраняет характер гарнитуры и помогает уместить заголовок, но перед публикацией его нужно проверить на кириллице и в разных размерах.

Плавная ширина для variable font

Для вариативной гарнитуры можно задать умеренно сжатую ширину для карточек каталога: .card-title { font-family: 'Studio Sans Variable', sans-serif; font-stretch: 92%; font-weight: 650; }. Такое решение подходит, когда нужно сохранить одинаковое количество строк без грубого уменьшения размера текста. Если ширина меняется динамически, тестируйте длинные слова, дефисы и переносы.

Адаптивное начертание на узком экране

На мобильном экране более узкая версия может помочь заголовку не выходить за границы, но не должна заменять адаптивную сетку. Например, в медиазапросе можно использовать .hero-title { font-stretch: condensed; }, а на широком экране вернуть normal. Если текст всё равно плохо читается, сначала уменьшите размер заголовка или измените ширину контейнера, а не применяйте экстремальное сжатие.

Чем font-stretch отличается от других способов

font-stretch выбирает дизайнерски подготовленную ширину шрифта. Свойство transform: scaleX() визуально масштабирует весь элемент после расчёта раскладки: оно может исказить буквы, повлиять на видимый размер блока и привести к наложениям. letter-spacing меняет расстояние между символами, но не ширину самих глифов. Поэтому эти инструменты решают разные задачи.

Свойство font-size меняет общий размер текста, а не только горизонтальные пропорции. Свойство size-adjust в @font-face масштабирует резервную гарнитуру для более точного сопоставления с основной, но тоже не является заменой font-stretch. Для качественной типографики сначала выбирайте подходящее начертание, затем настраивайте размер, межстрочный интервал и расстояние между буквами.

Правила для читаемой типографики

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

  • Проверяйте кириллицу, латиницу, цифры и знаки препинания отдельно.
  • Сравнивайте начертания при реальном размере текста, а не только в макете.
  • Оставляйте достаточный line-height после изменения ширины букв.
  • Тестируйте заголовки с длинными словами и разными вариантами переноса.
  • Используйте резервные шрифты, близкие по ширине и насыщенности.
  • Проверяйте контраст и читаемость на мобильных устройствах.
  • Не применяйте экстремальные значения только ради экономии нескольких пикселей.

Частые ошибки при использовании font-stretch

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

  1. Ожидать механического сжатия символов. font-stretch не обязан деформировать гарнитуру без нужного начертания.
  2. Подключать только Regular. Для статических шрифтов нужны отдельные файлы и корректные описания @font-face.
  3. Путать проценты с масштабированием. Значение 80% выбирает ширину, а не гарантированно уменьшает каждый глиф до 80%.
  4. Использовать font-stretch вместо responsive-вёрстки. Свойство не исправляет слишком узкий контейнер и неверные брейкпоинты.
  5. Забывать о fallback. Резервный шрифт может не поддерживать узкую или широкую версию.
  6. Сжимать основной текст без проверки. Плотная гарнитура способна ухудшить комфорт чтения.
  7. Не учитывать диапазон variable font. Запрошенное значение может быть ограничено возможностями файла.

Чеклист перед публикацией стилей

  • Определите задачу: вместить заголовок, создать акцент или настроить фирменную типографику.
  • Проверьте, есть ли у выбранного семейства статические ширины или ось wdth.
  • Задайте font-stretch только тем элементам, которым действительно нужна другая ширина.
  • Проверьте отображение в основном браузере проекта и на резервной гарнитуре.
  • Сравните переносы, высоту строк и визуальный ритм до и после изменения.
  • Убедитесь, что текст остаётся читаемым на узком экране.
  • Зафиксируйте диапазоны variable font в документации проекта.

Часто задаваемые вопросы о font-stretch

Можно ли растянуть любой шрифт с помощью font-stretch?

Нет. Свойство в первую очередь выбирает доступное начертание или диапазон variable font. Если семейство содержит только обычную ширину и не имеет оси wdth, браузер может оставить визуально неизменное начертание. Для принудительного геометрического масштабирования используют другие CSS-инструменты, но они могут исказить форму букв.

Что означает font-stretch: condensed?

font-stretch: condensed просит браузер выбрать сжатую версию шрифта, обычно более узкую, чем normal. Точное соотношение зависит от семейства и его внутренних метрик. У одной гарнитуры condensed будет заметно плотным, у другой — лишь немного уже стандартного начертания.

Работает ли font-stretch с Google Fonts и локальными файлами?

Да, если подключаемая гарнитура предоставляет соответствующие ширины или является вариативной. Для локальных файлов нужно правильно описать font-family, src и font-stretch в @font-face. Сам факт загрузки шрифта не гарантирует поддержку condensed или expanded: это свойство конкретного семейства, а не браузера.

Можно ли использовать проценты вместо condensed?

Да. Процентные значения позволяют указать более точную ширину, например font-stretch: 92%;. Такой подход особенно полезен для variable fonts и дизайн-систем, где нужно согласовать длину заголовков в нескольких компонентах. Для статической гарнитуры браузер выберет ближайший доступный вариант, поэтому точность зависит от подключённых файлов.

Почему font-stretch не меняет внешний вид текста?

Чаще всего в подключённом семействе нет нужной ширины, либо браузер использует резервный шрифт. Проверьте загрузку файла, совпадение имени font-family и диапазон font-stretch в @font-face. Также убедитесь, что декларация не переопределяется более специфичным правилом или значением из font shorthand.

Что выбрать для длинного текста: condensed или normal?

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

Вывод: используйте ширину шрифта осознанно

font-stretch — инструмент выбора пропорций начертания, а не универсальный способ сжимать текст. Используйте его с готовыми condensed и expanded-версиями или variable fonts, проверяйте диапазон оси wdth и не заменяйте им адаптивную вёрстку. Такой подход помогает сохранить характер гарнитуры и управлять плотностью интерфейса без грубой деформации букв.

Если вам нужен собственный шрифт с контролируемыми пропорциями и выразительным характером, создайте его на fontgenerator.ru. Подготовленная гарнитура упростит настройку заголовков, интерфейсных подписей и фирменной типографики в CSS.