Кратко
СкопированоОткрывает доступ к расширенным типографическим функциям OpenType-шрифтов через четырёхбуквенные теги: лигатуры, дроби, строчные капители, альтернативные начертания и многое другое.
Пример
Скопировано
/* Включить строчные капители и перечёркнутый ноль */.text { font-feature-settings: "smcp", "zero";}/* Включить табличные цифры */.price-table td { font-feature-settings: "tnum";}/* Отключить стандартные лигатуры */code { font-feature-settings: "liga" 0;}
/* Включить строчные капители и перечёркнутый ноль */
.text {
font-feature-settings: "smcp", "zero";
}
/* Включить табличные цифры */
.price-table td {
font-feature-settings: "tnum";
}
/* Отключить стандартные лигатуры */
code {
font-feature-settings: "liga" 0;
}
На демке видно, как одни и те же символы выглядят по-разному в зависимости от включённых функций шрифта.
Как понять
СкопированоOpenType-шрифты хранят не только очертания букв, но и таблицу дополнительных функций: лигатуры (слияние нескольких символов в один глиф), альтернативные начертания, специальные формы цифр, исторические варианты символов и многое другое.
Браузер по умолчанию включает лишь часть этих функций, обычно стандартные лигатуры (liga) и кернинг (kern). Остальные остаются выключенными. font позволяет управлять любой функцией напрямую через её четырёхбуквенный идентификатор.
Идентификаторы тегов стандартизированы в спецификации OpenType: smcp всегда означает строчные капители, tnum — табличные цифры, frac — автоматические дроби. Этих тегов десятки, и список одинаков для всех шрифтов. Однако конкретный шрифт поддерживает только часть из них, только то, что заложил в него дизайнер. Если шрифт не реализует тег, браузер просто его проигнорирует.
Как пишется
Скопировано
/* Значение по умолчанию */font-feature-settings: normal;/* Один тег — включить */font-feature-settings: "smcp";/* Один тег — выключить */font-feature-settings: "liga" 0;/* Несколько тегов */font-feature-settings: "smcp", "zero";/* Числовой вариант */font-feature-settings: "swsh" 2;
/* Значение по умолчанию */
font-feature-settings: normal;
/* Один тег — включить */
font-feature-settings: "smcp";
/* Один тег — выключить */
font-feature-settings: "liga" 0;
/* Несколько тегов */
font-feature-settings: "smcp", "zero";
/* Числовой вариант */
font-feature-settings: "swsh" 2;
Синтаксис значения
СкопированоКаждое значение — это тег в кавычках и необязательное число после него.
Тег — ровно четыре ASCII-символа. Больше или меньше будет синтаксической ошибкой.
Значение после тега:
1илиon— включить (подразумевается, если значение не указано);0илиoff— выключить;- Целое число больше 1 — для функций с несколькими вариантами, например
"swsh" 2выбирает второй вариант каллиграфического начертания.
Несколько тегов перечисляются через запятую.
Лигатуры
Скопированоliga— стандартные лигатуры (fi, fl, ff). Включены по умолчанию, можно отключить через"liga" 0.dlig— дискретные (необязательные) лигатуры.calt— контекстные альтернативы: автоматическая замена символов в зависимости от соседних знаков.hlig— исторические лигатуры.rlig— обязательные лигатуры.
Регистр и капители
Скопированоsmcp— строчные капители для строчных букв.c2sc— строчные капители для заглавных букв.case— регистрозависимые формы пунктуации (скобки, кавычки поднимаются на уровень заглавных).
Цифры
Скопированоlnum— цифры верхнего регистра (одинаковой высоты с заглавными буквами).onum— цифры старого стиля (с выносными элементами, выглядят как строчные буквы).tnum— табличные (моноширинные) цифры, полезны для выравнивания чисел в колонках.zero— перечёркнутый ноль, помогает отличить0от буквыO.frac— автоматическое форматирование дробей:1превращается в ½./ 2 sups— верхний индекс.subs— нижний индекс.
Стилистические варианты
Скопированоswsh— каллиграфические (росчерковые) начертания. Значение указывает номер варианта.ss01–ss20— стилистические наборы: полные наборы символов с альтернативным начертанием.hist— исторические формы символов.init,medi,fina,isol— начальные, срединные, конечные и изолированные формы (актуально для арабского письма и других систем).
Прочие
Скопированоkern— кернинг. Включён по умолчанию.locl— локализованные формы: например, турецкая точечнаяİвместо обычнойI.mark,mkmk— позиционирование диакритических знаков над базовыми символами.
Подсказки
Скопировано💡 font — низкоуровневое свойство. Когда нужны капители, дроби или лигатуры, лучше использовать более конкретные свойства: font, font, font и другие font. Они чище описывают намерение и лучше работают с каскадом.
💡 font можно задать прямо в @font — тогда включённые теги станут базовым поведением шрифта для всего сайта, а не только для конкретных селекторов.
💡 Если родительский элемент задаёт font с несколькими тегами, а дочернему нужно добавить ещё один, придётся перечислять все заново. Просто добавить один тег поверх унаследованного значения не получится.
- Chrome 140, поддерживается
- Edge 140, поддерживается
- Firefox 34, поддерживается
- Safari 10, поддерживается
На практике
Скопированосоветует
Скопировано🛠 tnum незаменим, когда нужно выровнять числа в колонке. По умолчанию шрифты используют пропорциональные цифры: каждая цифра имеет свою ширину, и числа разной длины в соседних строках «пляшут». С tnum все цифры становятся одинаковой ширины и выстраиваются как в таблице.
.price-table td { font-feature-settings: "tnum";}
.price-table td {
font-feature-settings: "tnum";
}
🛠 Для книжной и журнальной вёрстки удобно сочетать строчные капители (smcp) с цифрами старого стиля (onum). Заголовки и имена собственные отображаются через капитель, а цифры не торчат выше строки — текст выглядит ровнее и изящнее.
.article-body { font-feature-settings: "smcp", "onum";}
.article-body {
font-feature-settings: "smcp", "onum";
}