Ce que le secteur recommande réellement
Avant de débattre de goût, il est utile de compter. Nous avons extrait les résultats pour cette requête et analysé chaque page dont le contenu était accessible, puis comptabilisé les familles recommandées par chacune.
| Pages la recommandant | |
|---|---|
| Inter | 4 / 5 |
| Plus Jakarta Sans | 4 / 5 |
| Geist | 2 / 5 |
| Lato | 2 / 5 |
| Space Grotesk | 2 / 5 |
| Outfit | 2 / 5 |
Cette convergence est réelle, et l'interpréter comme de la paresse serait une erreur. Ces polices reviennent systématiquement car elles satisfont une liste de contraintes spécifiques que la plupart des typographies ne respectent pas — et une fois cette liste connue, la convergence ainsi que la manière d'en sortir deviennent évidentes.
Dans un produit, une association se résume généralement à une seule famille
Les conseils en association de polices proviennent massivement du design éditorial et de marque, où l'usage classique consiste à placer une serif d'affichage au-dessus d'une sans-serif de corps. Les interfaces produit fonctionnent différemment. La majeure partie du texte sur un écran produit mesure entre 12 et 16 pixels : labels, cellules de tableau, indices de formulaire, éléments de navigation, états vides. Il y a très peu de texte « d'affichage » et énormément de texte fonctionnel, petit et dense.
La réponse classique consiste donc à utiliser une seule famille pour deux rôles — un réglage plus gras et serré pour les titres, un réglage régulier pour le corps de texte — la différence étant portée par la graisse, la taille et l'approche plutôt que par un second design. Ce n'est pas un compromis. C'est ce qui permet à une interface dense de paraître sereine, et cela élimine toute une catégorie d'incohérences visuelles subtiles.
Token specimen · real values
Ambient Sage
Live renderAmbient Sage's actual tokens — the same values its exports use.
Typography
Ambient Sage
Scale: compact-product
Density: balanced
Heading · Plus Jakarta Sans · 1.875rem
Sample headline
Subheading · Plus Jakarta Sans · 1.375rem
A warm-sage neutral-surface mobile kit with a single vivid yellow accent, flat tonal cards, and oversized display numerals.
Body · Plus Jakarta Sans · 1rem
Ambient Sage uses a near-white warm-sage canvas (#f3f4ef) with card panels distinguished only by a tonal shift to #e5e6e0, never by shadows or borders. A single vivid yellow (#fee951) is the only saturated color and appears sparingly at component scale as orbs, button fills, and focus rings. Primary data values render as oversized bold hero numerals with a small superscript unit. Typography is a friendly rounded geometric (Plus Jakarta Sans) with no uppercase and no tight tracking, while JetBrains Mono is reserved for hex codes and technical strings. Generous rounding and luminance-only contrast give the whole system a calm, minimal feel.
Mono · JetBrains Mono · 0.8125rem
npx shadcn add ambientsage.json
Aa
Plus Jakarta Sans · Heading
Aa
Plus Jakarta Sans · Body
ABCDEFGHIJKLM NOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 & @ # % →
Deux polices presque identiques sont perçues comme un bug. Deux polices manifestement différentes sont perçues comme un choix.
Les cinq impératifs d'une police de produit
- Les chiffres tabulaires. Dès que vous avez un tableau, une facture, une liste de prix ou une métrique qui s'actualise, les chiffres proportionnels font osciller les colonnes et modifient la largeur des nombres selon leur valeur. Une police sans chiffres tabulaires — ou une UI qui ne les active jamais — produit ces tableaux de bord instables que tout le monde a déjà vus sans jamais pouvoir en nommer la cause.
- Une réelle séparation entre graisses adjacentes. La hiérarchie d'un produit se joue généralement entre 400 et 600 pour les petites tailles. Si le 400 et le 500 sont quasi identiques à 14px, chaque libellé semble avoir la même graisse et la hiérarchie disparaît silencieusement. Vérifiez cela à votre taille de corps réelle, pas à 48px où toutes les familles semblent correctes.
- Une hauteur d'x importante. Le texte petit constitue l'essentiel d'un produit. Les polices avec une hauteur d'x généreuse et des ouvertures larges restent lisibles à 12–13px ; les polices élégantes à faible hauteur d'x deviennent illisibles, et on compense en augmentant la taille, ce qui brise alors la densité de l'interface.
- Des caractères sans ambiguïté.
1,letI;0etO;rnetm. Les produits affichent des ID, des clés API, des codes d'erreur et des noms d'utilisateur. Une police où ces caractères se confondent génère des tickets de support, et ce défaut est invisible dans un spécimen en lorem ipsum. - Une licence couvrant une application web. Auto-hébergement, intégration dans l'app et palier de trafic prévu. C'est la contrainte que l'on découvre en dernier et celle qui fait le plus mal, ce qui explique en grande partie pourquoi les polices Google sous licence libre dominent toutes les listes.
Ces cinq critères éliminent la plupart des polices, et c'est précisément pour cela que les mêmes noms reviennent sans cesse. Mais notez ce qui *ne figure pas* sur la liste : rien sur l'ambiance, l'époque ou la personnalité. Les contraintes réduisent le champ à quelques dizaines de familles, pas à quatre — et le choix final vous appartient réellement.
D'où vient réellement la distinction
Si la police de corps de tout le monde est un grotesk neutre, s'aligner sur ce standard ne vous coûte rien et s'en différencier vous apporte peu — le lecteur ne contemple pas vos cellules de tableau en admirant la typographie. Deux autres leviers sont bien plus efficaces :
- Un rôle « display » véritablement différent. Un sans condensed, un vrai serif, ou un grotesk aux formes distinctes utilisé uniquement pour les titres de page et les surfaces marketing. Il apparaît rarement et définit la voix du produit ; comme il ne supporte pas de textes denses, il n'a pas à satisfaire les cinq contraintes précédentes.
- Une monospace choisie plutôt qu'héritée. Tout produit affichant du code, des ID, des horodatages ou des métriques a une police mono constamment à l'écran. La laisser par défaut selon le navigateur est une décision non prise et visible ; en choisir une est un geste simple et distinctif que personne ne copie.
Les pairings réels des kits de production suivent exactement ce schéma : un sans condensed sur un corps neutre ; un display serif sur un sans géométrique ; ou une seule famille pour les deux rôles quand le produit est assez dense pour qu'une seconde police crée du bruit visuel. Ce qu'aucun d'entre eux ne fait, c'est associer deux grotesks similaires en espérant que la différence soit perceptible.
Voici trois de ces configurations rendues en direct, afin que vous puissiez comparer directement le *rôle display* — le seul endroit où la typographie d'un produit diffère significativement. Observez-les à l'extrémité « légende » de l'échelle plutôt qu'à l'extrémité « titre » : tout semble distinctif à 48px.
Token specimen · real values
Terrain Vivant
Live renderTerrain Vivant's actual tokens — the same values its exports use.
Typography
Terrain Vivant
Scale: perfect-fourth
Density: balanced
Heading · Space Mono · 3rem
Sample headline
Subheading · Space Mono · 2.25rem
A bold two-color institutional editorial system built on vivid green and cobalt blue full-screen surfaces, with monospace type throughout and zero-radius geometry.
Body · Space Mono · 1rem
A resolutely flat two-color surface system. Vivid grass-green (#229f39) and deep cobalt-blue (#2b3386) are sovereign peers: either can fill an entire screen or section, with no neutral intermediary. All text is set in Space Mono at every scale from hero display down to captions, making the monospace grid the primary typographic voice rather than a code aesthetic. All shapes are sharp 90-degree rectangles, and section breaks use stacked parallel horizontal lines as a graphic band.
Mono · Space Mono · 0.75rem
npx shadcn add terrainvivant.json
Aa
Space Mono · Heading
Aa
Space Mono · Body
ABCDEFGHIJKLM NOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 & @ # % →
L'échelle importe plus que la famille
C'est la partie que les listicles n'abordent jamais, et c'est là que la plupart des typographies de produit échouent. Une famille parfaitement choisie appliquée sur une échelle ad hoc aura un rendu pire qu'une famille banale appliquée sur une échelle cohérente.
Fixez quatre éléments et consignez-les : une taille de base, un ratio entre les paliers, un petit ensemble de hauteurs de ligne (line-height) et les graisses autorisées. Un ratio autour de 1.2 à 1.25 convient aux UI de produits denses — des ratios plus larges créent de belles pages marketing mais ne laissent rien d'utilisable entre un titre de section et un libellé de tableau. La hauteur de ligne doit se resserrer à mesure que la taille augmente, alors qu'on s'attend souvent à l'inverse. Enfin, limiter les graisses autorisées à deux ou trois évite qu'une base de code n'en accumule cinq.
Définissez la règle des chiffres avec l'échelle
font-variant-numeric: tabular-nums doit être appliqué aux tableaux, aux métriques et à tout élément avec des chiffres alignés — et proportional-nums au texte courant, où les chiffres tabulaires paraissent trop espacés. Décider cela une fois au niveau de l'échelle est une règle de deux lignes ; le découvrir composant par composant conduit à une année d'incohérences mineures.
Pourquoi la situation s'est dégradée récemment
Les interfaces sont de plus en plus générées à partir d'un brief écrit, et la typographie est le point où ces briefs sont les plus succincts. Nous avons analysé 299 fichiers DESIGN.md publics — le document qu'un agent de code lit avant d'écrire l'UI. 83 % mentionnent la typographie, ce qui semble positif jusqu'à ce que l'on regarde le contenu : 44 % n'indiquent aucune valeur de taille concrète, et 54 % contiennent au moins un adjectif imprécis, le plus souvent « clean » ou « moderne ».
« La typographie doit paraître raffinée » n'est pas une spécification — c'est un accord. Un agent satisfait cela avec son idée moyenne du raffinement, qui est Inter à 16px avec une hauteur de ligne de 1.5, et l'agent de tout le monde fait de même. Une famille nommée, une taille de base, un ratio et une liste de graisses autorisées modifient le résultat en quatre lignes.
Choisir, dans l'ordre
- 1
Filtrer selon les cinq contraintes
Chiffres tabulaires, séparation des graisses à votre taille de corps, hauteur d'x, ambiguïté des caractères, licence. Cela prend vingt minutes et élimine la majeure partie du champ avant même que le goût n'intervienne.
- 2
Tester à 13px dans un tableau
Pas dans un spécimen. Créez un vrai tableau avec des chiffres, une colonne d'ID et un mélange de graisses 400 et 500. Presque tous les échecs apparaissent ici et nulle part ailleurs.
- 3
Décider si vous avez besoin d'une seconde famille
Si le produit est dense, probablement pas — investissez plutôt vos efforts dans l'échelle. Si vous en ajoutez une, choisissez une police display qui soit indiscutablement différente.
- 4
Choisir la monospace délibérément
Si du code, un ID ou un horodatage apparaît dans votre UI, cette police est constamment à l'écran et est généralement le défaut du navigateur par accident.
- 5
Consigner l'échelle par écrit
Taille de base, ratio, interlignage, graisses légales et règles relatives aux chiffres. Dans le repo, là où la prochaine personne et l'agent liront tous deux le code.
La typographie fait partie d'un système, pas d'un simple échantillon
Chaque kit inclut un véritable appariement typographique avec une échelle complète, les graisses et le lettrage — ainsi que ses rôles de couleur, ses rayons et son mouvement, installables en un seul élément du registre shadcn. Les kits gratuits ne nécessitent aucun compte.
FAQ
Quel est le meilleur appariement de polices pour un produit SaaS?
Pour la plupart des interfaces produit, une seule famille en deux rôles — un réglage plus épais et serré pour les titres et un réglage régulier pour le corps — la hiérarchie étant assurée par la graisse, la taille et l'espacement des lettres. N'ajoutez une seconde famille que pour un rôle d'affichage, et rendez-la incontestablement différente. Une ressemblance étroite entre deux grotesques similaires sera perçue comme une erreur plutôt que comme un choix de design.
Pourquoi chaque liste de polices SaaS recommande-t-elle les mêmes polices?
Parce qu'une police de produit doit satisfaire cinq contraintes que la plupart des polices ne respectent pas : chiffres tabulaires, séparation visible entre les graisses adjacentes aux petites tailles, une hauteur d'x importante, l'absence d'ambiguïté entre 1/l/I et 0/O, et une licence couvrant une application web. Cela réduit considérablement le champ des possibles, et les polices sous licence libre franchissent l'obstacle juridique sans discussion.
Les chiffres tabulaires sont-ils vraiment importants?
Dès que vous utilisez un tableau, une liste de prix ou une métrique dynamique. Avec des chiffres proportionnels, les colonnes ne s'alignent plus et la largeur des nombres varie selon leur valeur, ce qui crée ces micro-sauts visuels dans les tableaux de bord que les utilisateurs ressentent sans savoir les nommer. Appliquez font-variant-numeric: tabular-nums aux chiffres alignés et conservez le mode proportionnel pour le corps de texte.
Combien de graisses dois-je utiliser?
Deux ou trois, décidées dès le départ. La hiérarchie produit se situe principalement entre 400 et 600 aux petites tailles, et si le 400 et le 500 semblent identiques à votre taille de corps, la hiérarchie cesse silencieusement de fonctionner. Limiter le jeu de graisses légales est aussi ce qui empêche une base de code d'accumuler cinq graisses que personne n'a choisies.
Une police serif est-elle parfois adaptée à une interface produit?
Comme police d'affichage, souvent — c'est le moyen le plus simple de ne pas ressembler à tous les autres produits, et elle supporte peu de texte dense, elle n'a donc pas besoin de passer les contraintes de petite taille. Comme police de corps dans une interface dense, rarement : les exigences de hauteur d'x et d'ouverture excluent la plupart d'entre elles à 12–14px.