ADR 023
StatutStatus ActifActive
DateDate 2026-05-29
DécideursDecision makers Guilherme Negreiros — Design System Lead

ADR-023 — Échelle typographique : Minor Third rem + règles de line-height

Date : 2026-05-29 Statut : ✅ Actif Décideurs : Guilherme Negreiros — Design System Lead Type: contract Chemin logique: decisions/ADR-023-echelle-typographique-minor-third.md Lecture avant: AGENTS.md, DESIGN.md, .claude/rules/tokens-system.md Relations: tokens/primitives.json, tokens/semantic.json, guidelines/foundations/typography.md


Contexte

L'échelle typographique précédente comportait 3 tailles (sm/md/xl en px) sans logique d'échelle formalisée, sans gestion du line-height par contexte, et sans distinction entre les besoins des contextes marketing, e-commerce et SaaS. L'objectif est une échelle accessible, cohérente, et adaptée aux profils d'usage.

Situation avant

"fontSize": {
  "sm": "14px",
  "md": "16px",
  "xl": "24px"
},
"lineHeight": {
  "tight": "1.25",
  "normal": "1.5"
}

Trois tailles en px, deux line-heights sans règles d'assignation.


Décision

Unité : rem (relatif à la base navigateur)

Toutes les tailles de police sont exprimées en rem (reference = 1rem = 16px). Cette convention :

Échelle : Minor Third (ratio 1.2)

L'échelle des grandes tailles (titres) suit la gamme musicale Minor Third (ratio 1.2), arrondie au multiple de 4px le plus proche pour respecter la grille.

16px × 1.200¹ = 19.2  → 20px  (lg)
16px × 1.200² = 23.0  → 24px  (xl)
16px × 1.200³ = 27.6  → 28px  (2xl)
16px × 1.200⁴ = 33.2  → 32px  (3xl)
16px × 1.200⁵ = 39.8  → 40px  (4xl)
TokenrempxLine-heightRôle
fontSize.xs0.75rem12px1.6Détails, annotations, captions
fontSize.sm0.875rem14px1.6Labels, métadonnées, helper text
fontSize.base1rem16px1.6Corps de texte principal
fontSize.lg1.25rem20px1.1Heading 5, sous-titres
fontSize.xl1.5rem24px1.1Heading 4
fontSize.2xl1.75rem28px1.1Heading 3
fontSize.3xl2rem32px1.0Heading 2
fontSize.4xl2.5rem40px1.0Heading 1
fontSize.5xl3rem48px1.0Hero display

Règles de line-height

Trois valeurs seulement, assignées par contexte :

TokenValeurRègle d'assignation
lineHeight.reading1.6Tout texte de taille ≤ base (xs, sm, base)
lineHeight.heading1.1Titres intermédiaires (lg, xl, 2xl)
lineHeight.display1.0Grands titres (3xl, 4xl, 5xl)

Justification :


Argumentaire

Pourquoi Minor Third ?

Le Minor Third (1.200) est l'échelle la plus adaptée aux interfaces hybrides (marketing + SaaS) :

Pourquoi rem et pas px ?

Les préférences d'accessibilité navigateur (zoom texte, taille police de base) utilisent rem comme levier. Un système en px ignore ces préférences. La WCAG recommande les unités relatives pour le texte (Success Criterion 1.4.4).

Pourquoi line-height 1.6 pour les textes courants ?

La WCAG 2.1 Success Criterion 1.4.12 (Text Spacing) demande que le contenu reste lisible avec un line-height de 1.5×. Une valeur par défaut de 1.6 couvre d'office ce critère sans nécessiter d'override.


Alternatives rejetées

AlternativeRaison du rejet
Major Second (1.125)Différenciation trop faible entre les niveaux de titre
Perfect Fourth (1.333)Trop dramatique pour les interfaces SaaS à forte densité d'information
Scale fixe (8, 12, 16, 20, 24, 32, 40)Pas de ratio mathématique — difficile à étendre cohéremment
Garder les pxIncompatible avec les préférences de zoom navigateur (WCAG 1.4.4)
line-height unique 1.5Trop compressé sur les petits textes, trop aéré sur les très grands

Conséquences

Pour les tokens :

Pour les agents IA :

Pour les équipes :

← ADR-022 ADR-024 →