Типографика

Источник: ds-docs/component-contracts/foundations/typography.md

Источник: tokens/typography.tokens.json · выгрузка оригинала eGpqY0OqVR8l8zhmlHdfb9 (плагин, 03.09.2026). Только факты. Находки — в конце.

Компоненты к этим переменным не привязаны. Они ссылаются на текстовый стиль, а уже стиль — на переменную: текстовые стили. Здесь описано, что стоит за стилем.

Три коллекции

typography115Mode 1смысловой слой: к нему привязаны стили, из него берёт имена кодоткрыта целиком114 из 115
typography-tokens113valueпримитивы: числа лежат здесьскрыто 100 из 113, открыты 13 трекингов17 из 113
old-typography294valueнаследие: по шесть переменных на каждый из 49 стилейскрыто 108 из 294нет

Смысловой слой держит своими только начертания и семейство — десять переменных. Остальные 105 берут значение из подключённой библиотеки, а не из примитивов рядом. То есть три слоя — это не «слой ссылается на слой»: примитивы и смысловой слой параллельны, и совпадение их значений сегодня ничем не закреплено.

Экспорт typography.tokens.json снят с примитивов: 113 записей — это typography-tokens без font-size-6xll плюс component-type из смыслового слоя.

Группы

font-family11FONT_FAMILY
font-weight99FONT_WEIGHT
font-size3031FONT_SIZE
line-height3030LINE_HEIGHT
paragraph-spacing3030PARAGRAPH_SPACING
letter-spacing1313LETTER_SPACING
component-type—1ALL_SCOPES

font-family

Onest — единственное семейство. В примитивах скрыто от публикации, в смысловом слое открыто и отдаёт коду var(--font-family).

font-weight

font-weight-thin100
font-weight-extralight200
font-weight-light300
font-weight-regular400
font-weight-medium500
font-weight-semibold600
font-weight-bold700
font-weight-extrabold800
font-weight-black900

Стили пользуются четырьмя: Regular 400, Medium 500, SemiBold 600, Bold 700. Пять остальных в стилях не встречаются.

font-size, line-height, paragraph-spacing

Один и тот же ряд: 8–64 с шагом 2, имена xxs, xs, s, m, l, xl, дальше 2xl…24xl. У абзацного отступа ряд начинается с paragraph-spacing-none (0), у интерлиньяжа в ряд вклинено line-height-4xls (25) — единственное нечётное значение.

letter-spacing

letter-spacing-none0
letter-spacing-xxs0.1
letter-spacing-xs0.125
letter-spacing-s0.2
letter-spacing-m0.25
letter-spacing-l0.3
letter-spacing-xl0.4
letter-spacing-2xl0.5
letter-spacing-3xl0.6
letter-spacing-4xl0.7
letter-spacing-5xl0.8
letter-spacing-6xl0.9
letter-spacing-7xl1

Стили используют два: letter-spacing-none (50 стилей) и letter-spacing-s (один). Числа хранятся с точностью float32, поэтому в выгрузке 0.3 выглядит как 0.30000001192092896.

component-type

Строковая переменная в смысловом слое, значение Base, алиас в подключённую библиотеку. Единственная переменная типографики со scope: ALL_SCOPES — то есть предлагается везде.

Наследная коллекция

old-typography — 294 переменные: шесть полей (text-font, text-weight, font-size, text-lineHeight, text-letterSpacing, text-paragraphSpacing) на каждый из 49 стилей. Двух стилей Special/section-heading/* в ней нет — они появились позже.

Значения не устарели: у всех 49 групп семейство, вес, размер, интерлиньяж и трекинг совпадают с нынешними стилями. Расходится только абзацный отступ у Title/H1–H4: в стилях 26, 24, 22, 20, в наследной коллекции ноль. То есть это не заброшенная копия, а работающий дубликат стилей в переменных — 294 записи, повторяющие то, что уже сказано стилем.

Ни один контракт базы на эти переменные не ссылается.

Находки

  • Экспорт снят не с того слоя. Стили и код читают typography, а typography.tokens.json — это typography-tokens. Значения сегодня совпадают, но это разные переменные в разных коллекциях, и ничто не держит их вместе.
  • Примитивы скрыты от публикации неполно: 100 переменных скрыты, а 13 letter-spacing — нет. Публикуемым оказывается кусок слоя, который публиковать не собирались.
  • Имена-двойники. 113 имён совпадают у typography и typography-tokens — это 113 из 133 неоднозначных имён всего файла. Какая переменная стоит за именем, решено один раз в tokens/variables.json.
  • font-size-2xll и font-size-6xll — имена с лишней буквой. Первое есть только в смысловом слое, второе в обеих коллекциях (в примитивах 29), но в экспорт не попало. Ни одно не используется стилями.
  • line-height-4xls (25) ломает ряд и значением, и именем. Его использует Articles/Paragraph/P1.
  • Режим смыслового слоя называется Mode 1 — имя по умолчанию, оставленное как есть.
  • old-typography дублирует 49 стилей и содержит собственные несогласованности имён: в группе articles/paragraph/p1 пять переменных из шести названы …-articles-title-p1, а в special/tag-small абзацный отступ назван text-paragraphSpacing-small-bold — из-за чего это имя в файле встречается дважды.
  • Утверждение прошлой версии документа о коллекции Typo Scale не подтвердилось: такой коллекции в файле нет, а component-type — алиас в библиотеку, а не ссылка на неё.

См. также: текстовые стили, README.