Если вы когда-нибудь присматривались к сочетаниям букв вроде «fi» или «fl» в хороших шрифтах, то, возможно, замечали, что они выглядят чуть иначе, чем при простом наборе. Буквы как будто «срастаются» в один знак, чтобы хвостики и точки не мешали друг другу. Это и есть лигатуры — особые глифы, которые шрифтовые дизайнеры создают для улучшения читаемости и эстетики текста. В вебе ими управляет свойство font-variant-ligatures.

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

Для фронтенд-разработчика важно знать, что лигатуры меняют только вид текста, но не его содержимое в DOM. Поиск, копирование, скрин-ридеры — всё продолжает работать корректно, ведь под капотом там по-прежнему две буквы, а не одна.

Включить или выключить лигатуры

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

/* Запретить все лигатуры */
p {
  font-variant-ligatures: none;
}

/* Вернуть стандартное поведение (лигатуры по умолчанию) */
p {
  font-variant-ligatures: normal;
}

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

Тонкая настройка

Иногда хочется управлять не всеми лигатурами сразу, а только некоторыми их типами. CSS даёт такую возможность:

  • common-ligatures / no-common-ligatures — стандартные, часто используемые лигатуры (fi, fl, ffi).
  • discretionary-ligatures / no-discretionary-ligatures — дополнительные декоративные, применяются по усмотрению дизайнера.
  • historical-ligatures / no-historical-ligatures — исторические формы, которые сегодня встречаются редко.
/* Только стандартные лигатуры */
p {
  font-variant-ligatures: common-ligatures;
}

/* Включаем декоративные, но выключаем исторические */
h1 {
  font-variant-ligatures: common-ligatures discretionary-ligatures no-historical-ligatures;
}

/* Оставляем только исторические */
blockquote {
  font-variant-ligatures: no-common-ligatures historical-ligatures;
}

Демонстрация в браузере

Чтобы увидеть разницу в живую, создадим маленький HTML-файл. В первом абзаце включим лигатуры, во втором — отключим.

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Пример font-variant-ligatures</title>
  <style>
    p {
      font-family: "Times New Roman", serif;
      font-size: 2rem;
    }
    .with-ligatures {
      font-variant-ligatures: normal;
    }
    .no-ligatures {
      font-variant-ligatures: none;
    }
  </style>
</head>
<body>
  <p class="with-ligatures">Office, fireplace, affluent</p>
  <p class="no-ligatures">Office, fireplace, affluent</p>
</body>
</html>

Если шрифт поддерживает лигатуры, то в первом абзаце «fi» и «fl» сольются в единый глиф, а во втором останутся отдельными буквами. Эффект особенно заметен на большом кегле и в шрифтах с хорошей проработкой OpenType-функций.

Когда использовать, а когда нет

Лигатуры хорошо подходят для заголовков, цитат, промо-блоков и длинных текстов, где важна эстетика. Они придают тексту завершённость, делают его более плавным. Но в интерфейсах с мелким шрифтом или в технических текстах (например, код, команды терминала) лигатуры могут только мешать: буквы будут выглядеть иначе, чем ожидает пользователь.

Иногда дизайнеры отключают лигатуры специально, чтобы подчеркнуть индивидуальность каждой буквы. Например, в лого или на кнопках, где важна читаемость на микроразмере.

Итог

font-variant-ligatures — это небольшой, но полезный инструмент для тонкой настройки типографики в вебе. Он помогает либо подчеркнуть эстетику текста, либо, наоборот, сделать его максимально нейтральным. Если вы работаете с дизайном, где важны детали, обязательно поэкспериментируйте с разными типами лигатур — результат может удивить.