Bhinish Dhiman

Pourquoi 16px ne font pas 16px : la hauteur d'x de 872 familles de polices

Traduit de l’original en anglais. Lire l’original

Sur 872 familles de polices mesurées à partir de leurs tables OS/2, la hauteur d'x va de 0.351 em (Suravaram) à 0.84 em (Matangi), avec une médiane de 0.500 em et une bande de 0.411 à 0.570 entre le 5e et le 95e centile. Égaler la hauteur d'x d'Helvetica en 16px demande 15.2 px en Inter, 18.6 px en Times New Roman et 20.8 px en EB Garamond.

font-size: 16px fixe la hauteur d’une boîte invisible. Ce que voit le lecteur, ce sont les minuscules à l’intérieur, et la part de la boîte qu’elles occupent est une propriété du caractère. Nous avions les mesures de 872 familles dans notre table de métriques de polices : nous en avons calculé la distribution.

La notion

La hauteur d’x (x-height) est la hauteur d’une lettre minuscule sans hampe ni jambage, comme le x, le a ou le e, exprimée en fraction du cadratin (em), la boîte que fixe font-size. Un caractère dont la hauteur d’x vaut 0.5 em affiche en 16px des minuscules de 8 px de haut. C’est la mesure qui prédit le mieux la taille apparente d’un texte, et c’est celle que CSS ne vous permet pas de régler.

La mesure

src/lib/type/font-metrics.json est construit à partir de @capsizecss/metrics 4.3.0, qui lit la table OS/2 de chaque police. La construction conserve les familles sans empattement, à empattements et à chasse fixe, exclut les familles Noto et Material propres à une écriture, et exclut 48 familles dont les fichiers n’indiquent aucune hauteur d’x ou une valeur inférieure à 0.35 em, ce qui en laisse 872. Nous avons calculé les centiles, la répartition par catégorie et, pour chaque famille, la taille en pixels qui donne la même hauteur de minuscules qu’Helvetica en 16px. Helvetica mesure 0.523 em, contre la référence de 0.52 em sur laquelle est calibrée la table de correspondance des polices d’APCA. Calcul effectué le 1er octobre 2026.

Centile Hauteur d’x (em) Taille pour égaler Helvetica en 16px
Minimum 0.351 23.7 px
5e 0.411 20.3 px
10e 0.440 18.9 px
25e 0.478 17.4 px
Médiane 0.500 16.6 px
75e 0.524 15.9 px
90e 0.546 15.2 px
95e 0.570 14.6 px
Maximum 0.840 9.9 px

Entre le 5e et le 95e centile, une même taille nominale produit des minuscules qui diffèrent d’un facteur 1.39. Entre les extrêmes, de 2.39.

L’écart des familles par rapport à la référence

166 familles, soit 19.0%, ont une hauteur d’x inférieure de plus de 10% à 0.52 em. 39 familles, 4.5%, la dépassent de plus de 10%. Seules 458, soit 52.5%, se situent à moins de 5% de la référence. Celle-ci décrit donc environ la moitié du catalogue ; une table de tailles minimales calibrée sur elle est discrètement fausse pour l’autre moitié, et fausse dans le sens du trop petit pour une famille sur cinq.

Les médianes par catégorie diffèrent moins que la dispersion à l’intérieur de chacune : 0.508 pour les sans empattement, 0.479 pour les caractères à empattements, 0.518 pour les chasses fixes. Les caractères à empattements sont en moyenne plus bas parce que la tradition des elzévirs tend vers les petites hauteurs d’x, mais Merriweather, un caractère à empattements, atteint 0.556, et Josefin Sans, un sans empattement, 0.378.

Familles nommées

Famille Hauteur d’x (em) Taille pour égaler Helvetica en 16px
Merriweather 0.556 15.0 px
Inter 0.546 15.2 px
Verdana 0.545 15.3 px
Roboto 0.528 15.8 px
Helvetica 0.523 15.9 px
Arial 0.519 16.0 px
Lato 0.506 16.4 px
Georgia 0.481 17.3 px
Source Serif 4 0.475 17.5 px
Times New Roman 0.447 18.6 px
Crimson Pro 0.420 19.8 px
EB Garamond 0.400 20.8 px
Cormorant Garamond 0.386 21.6 px
Josefin Sans 0.378 22.0 px

En 16px, EB Garamond a des minuscules de 6.4 px de haut. Inter en 16px les affiche à 8.7 px, soit 37% plus hautes, pour la même taille déclarée. Deux pages qui « utilisent un texte courant en 16px » peuvent différer de plus d’un palier entier d’échelle typographique dans ce que le lecteur reçoit réellement.

Le haut de la distribution n’est pas ce qu’il paraît

Les familles au-dessus de 0.7 em (Matangi, Anton, Antonio, Bebas Neue) sont des caractères de titrage étroits. Bebas Neue indique une hauteur d’x de 0.700 em pour une hauteur de capitales de 0.700 em, parce qu’elle n’a pas de minuscules et que son fichier mesure à la place des petites capitales ; Anton et Antonio dessinent des minuscules presque aussi hautes que leurs capitales. À ce niveau, « grande hauteur d’x » désigne un caractère de titre, pas un caractère de texte généreux. Pour le texte, le vrai haut de la fourchette se situe autour de 0.55 à 0.58 em : Merriweather, Poppins, Oswald.

Ce que cela implique pour une taille minimale

La table de correspondance d’APCA donne une taille minimale à chaque niveau de contraste pour une police proche de la référence, et sa documentation indique de multiplier ce minimum par 0.52 divisé par la hauteur d’x de votre police. Le tableau ci-dessus est cette correction, précalculée. Pour la famille médiane, l’ajustement est de 4% ; au 5e centile, de 27% ; pour EB Garamond, de 30%. Notre vérificateur de lisibilité typographique l’applique à partir des mêmes métriques : la taille minimale qu’il indique correspond donc à la famille que vous avez choisie, et non à Helvetica.