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.