Текстовые стили
Источник:
ds-docs/component-contracts/foundations/text-styles.md
Источник: 51 текстовый стиль файла Astra DS · привязки — tokens/styles.json.
Значения сверены с оригиналом (eGpqY0OqVR8l8zhmlHdfb9): расхождений нет.
Только факты. Находки — в конце.
Стиль — единственное, что компонент говорит о типографике. Контракт пишет
text.style: Headline/H5, и больше ничего: размер, интерлиньяж и начертание живут у стиля
и меняются вместе с ним. Компонент, записавший их у себя, при перенастройке стиля соврал бы.
Правило записи — в формате контракта.
Цепочка
узел компонента → текстовый стиль → переменная typography → переменная библиотеки
text.style 51 штука смысловой слой число живёт там
Стиль задаёт пять свойств: семейство, начертание, размер, интерлиньяж, трекинг. Шестое, абзацный отступ, задают не все. Цвет, выравнивание, число строк и обрезка стилю не принадлежат — это свойства узла, и их контракт пишет сам.
Все 276 привязок ведут в переменные: 272 в смысловой слой typography, 4 в примитивы
typography-tokens. Библиотечных привязок и стилей без привязок нет. Что за этими слоями —
в типографике.
Семейства
Title/* | 6 | SemiBold 600 | 16–26 | 2 из 6 |
Headline/* | 6 | Medium 500 | 14–24 | 1 из 6 |
Body/* | 6 | Regular 400 | 10–20 | 3 из 6 |
Articles/* | 12 | SemiBold, Medium, Regular | 12–32 | 0 из 12 |
Special/* | 7 | от Regular до Bold | 8–32 | 2 из 7 |
Mask/* | 14 | от Regular до Bold | 10–26 | 14 из 14 |
Три первых семейства — общий ряд заголовков и текста, разделённый по весу: Title тяжелее
Headline, Headline тяжелее Body. Articles — отдельный ряд для статей, Special —
одиночные случаи, Mask — ряд для маски суммы и каретки, где начертание задано осью компонента.
Title
Title/H1 | SemiBold 600 | 26 | 36 | 0 | 26 | navigation-bar |
Title/H2 | SemiBold 600 | 24 | 28 | 0 | 24 | — |
Title/H3 | SemiBold 600 | 22 | 26 | 0 | 22 | — |
Title/H4 | SemiBold 600 | 20 | 24 | 0 | 20 | — |
Title/H5 | SemiBold 600 | 18 | 22 | 0 | 0 | swapper-utility |
Title/H6 | SemiBold 600 | 16 | 20 | 0 | 0 | — |
Абзацный отступ задают только H1–H4, у H5 и H6 он paragraph-spacing-none.
Headline
Headline/H1 | Medium 500 | 24 | 28 | 0 | 0 | — |
Headline/H2 | Medium 500 | 22 | 26 | 0 | 0 | — |
Headline/H3 | Medium 500 | 20 | 24 | 0 | 0 | — |
Headline/H4 | Medium 500 | 18 | 22 | 0 | 0 | — |
Headline/H5 | Medium 500 | 16 | 20 | 0 | 0 | action, button, navigation-bar |
Headline/H6 | Medium 500 | 14 | 18 | 0 | 0 | — |
Body
Body/H1 | Regular 400 | 20 | 24 | 0 | 0 | — |
Body/H2 | Regular 400 | 18 | 22 | 0 | 0 | — |
Body/H3 | Regular 400 | 16 | 20 | 0 | 20 | amount-mask, small-search-input |
Body/H4 | Regular 400 | 14 | 18 | 0 | 0 | skeleton-text, small-search-input, swapper-utility |
Body/H5 | Regular 400 | 12 | 16 | 0 | 0 | button, navigation-bar, select-city |
Body/H6 | Regular 400 | 10 | 14 | 0 | 0 | — |
Articles
Articles/Titile/H1 | SemiBold 600 | 32 | 36 | 0 | — | — |
Articles/Titile/H2 | SemiBold 600 | 26 | 28 | 0 | — | — |
Articles/Titile/H3 | SemiBold 600 | 24 | 28 | 0 | — | — |
Articles/Titile/H4 | SemiBold 600 | 22 | 26 | 0 | — | — |
Articles/Titile/H5 | SemiBold 600 | 18 | 22 | 0 | — | — |
Articles/Titile/H6 | SemiBold 600 | 14 | 18 | 0 | — | — |
Articles/Subtitle/S1 | Medium 500 | 18 | 24 | 0 | — | — |
Articles/Subtitle/S2 | Medium 500 | 16 | 22 | 0 | — | — |
Articles/Paragraph/P1 | Regular 400 | 18 | 25 | 0 | — | — |
Articles/Paragraph/P2 | Regular 400 | 16 | 22 | 0 | — | — |
Articles/Paragraph/P3 | Regular 400 | 14 | 20 | 0 | — | — |
Articles/Paragraph/P4 | Regular 400 | 12 | 16 | 0 | — | — |
Ни один стиль семейства не задаёт абзацный отступ, хотя семейство для статей.
Special
Special/stories-preview-heading | Medium 500 | 10 | 12 | 0.2 | 0 | — |
Special/small-card-number | Bold 700 | 8 | 8 | 0 | — | — |
Special/numkey | Medium 500 | 32 | 32 | 0 | — | — |
Special/tag/tag-small | Regular 400 | 12 | 16 | 0 | — | tag |
Special/tag/tag-regular | Regular 400 | 14 | 18 | 0 | — | tag |
Special/section-heading/section-heading-large-title | Medium 500 | 20 | 24 | 0 | 0 | — |
Special/section-heading/section-heading-large-description | Regular 400 | 16 | 20 | 0 | 20 | — |
Mask
Mask/Mask Bold/XXSmall | Medium 500 | 10 | 12 | 0 | — | caret-animate |
Mask/Mask Bold/XSmall | Medium 500 | 12 | 16 | 0 | — | amount-mask, caret-animate |
Mask/Mask Bold/Small | SemiBold 600 | 14 | 18 | 0 | — | amount-mask, caret-animate |
Mask/Mask Bold/Medium | SemiBold 600 | 16 | 20 | 0 | — | amount-mask, caret-animate |
Mask/Mask Bold/Large | SemiBold 600 | 20 | 24 | 0 | — | amount-mask, caret-animate |
Mask/Mask Bold/XLarge | SemiBold 600 | 24 | 28 | 0 | — | amount-mask, caret-animate |
Mask/Mask Bold/Max | Bold 700 | 26 | 36 | 0 | — | amount-mask, caret-animate |
Mask/Mask Regular/XXSmall | Regular 400 | 10 | 12 | 0 | — | caret-animate |
Mask/Mask Regular/XSmall | Regular 400 | 12 | 16 | 0 | — | amount-mask, caret-animate, tag |
Mask/Mask Regular/Small | Regular 400 | 14 | 18 | 0 | — | amount-mask, caret-animate |
Mask/Mask Regular/Medium | Regular 400 | 16 | 20 | 0 | — | amount-mask, caret-animate |
Mask/Mask Regular/Large | Medium 500 | 20 | 24 | 0 | — | amount-mask, caret-animate |
Mask/Mask Regular/XLarge | Medium 500 | 24 | 28 | 0 | — | amount-mask, caret-animate |
Mask/Mask Regular/Max | SemiBold 600 | 26 | 36 | 0 | — | amount-mask, caret-animate |
Ряд построен парами «Bold — Regular» на семь размеров. Внутри пары различается только вес, размер и интерлиньяж у обеих половин одинаковы.
Чем пользуется база
Из 51 стиля контракты ссылаются на 22. Остальные 29 в описанных компонентах
не встречаются: всё семейство Articles/*, половина Title/*, Headline/* и Body/*,
и четыре одиночных Special/*. Это не значит, что стили лишние, — описано пока 27 компонентов.
Стиль попадает в контракт двумя способами: именем прямо на узле или через привязку, когда его
выбирает ось. Второй способ — у маски суммы, каретки и ярлыка: там ось Size выбирает стиль
из таблицы, а text.style: $bold ссылается на неё.
Находки
Articles/Titile/*— опечатка в имени группы, шесть стилей. В наследной коллекции те же стили названы правильно (articles/title/*) — значит, ошибка только в имени стиля.Mask/Mask Bold/*— «Bold» на три разных веса: XXSmall и XSmall — Medium 500, Small–XLarge — SemiBold 600, Max — Bold 700. Имя обещает одно начертание, ряд даёт три.Mask/Mask Regular/*с ростом размера перестаёт быть Regular: Large и XLarge — Medium 500, Max — SemiBold 600. Крупная «обычная» маска тяжелее мелкой «жирной».Articles/Paragraph/P1— единственный интерлиньяж 25 (line-height-4xls). Весь остальной ряд чётный с шагом 2; имя выбивается из схемы так же, как значение.Special/section-heading/*привязаны к примитивамtypography-tokens, а не к смысловому слою, как остальные 49. Четыре привязки из 276.- 30 стилей из 51 не задают абзацный отступ. Задают его 21, и из них 15 ставят ноль.
Осмысленное значение — только у
Title/H1–H4,Body/H3иsection-heading-large-description. - Компоненты дублируют стиль прямыми привязками. У Button это 278 надписей, у Caret Animate
56, у Skeleton Text одна: поверх стиля стоят те же переменные, и при перенастройке стиля
надпись за ним не пойдёт. Записано в
gapsэтих контрактов. - Системная строка стилей не использует вовсе: часы в
system-status-barнабраны шрифтом платформы (SF Pro Semibold 17, Roboto Medium 14) без стиля и без переменных. В контракте этоstyle: none.
См. также: типографика, README.