- Si la même grille de 10.8pt × 7.2pt n’est pas alignée entre LaTeX et Inkscape, c’est parce que les deux outils utilisent des définitions différentes du point
- LaTeX calcule 1pt comme 1/72.27 pouce, tandis qu’Inkscape utilise le 1/72 pouce des familles SVG et PostScript
- Le point est une unité typographique utilisée depuis 1517, mais à l’origine sa taille variait selon les entreprises, les équipements et les pays
- Le point d’imprimerie américain a évolué vers la définition 0.013837 pouce du NIST et celle de TeX à 72.27pt/in, avec un écart extrêmement faible
- PostScript a défini son espace utilisateur de base en 1/72 pouce et, via le LaserWriter, cette valeur s’est imposée dans CSS, SVG et Inkscape
Pourquoi les points de LaTeX et d’Inkscape ne coïncident pas
- En recréant des schémas de Logic for Programmers, un problème est apparu : la grille 10.8pt × 7.2pt n’avait pas exactement la même taille dans LaTeX et Inkscape
- LaTeX définit 1 point comme 1/72.27 pouce, soit environ 0.3515 mm
- Inkscape utilise 1 point comme 1/72 pouce, soit environ 0.3528 mm
- L’écart n’est que d’environ 0,4 %, mais il conduit malgré tout à ce que deux outils numériques très répandus utilisent des unités de point différentes
Origine du point et problème de normalisation
- Le point) est une unité typographique utilisée depuis 1517, pensée comme la plus petite taille qu’un imprimeur puisse manipuler de façon significative
- Au départ, le point n’était pas une unité normalisée, et différentes tailles étaient utilisées selon les entreprises et les équipements
- Une normalisation a ensuite eu lieu, mais chaque pays a adopté sa propre référence
- En Allemagne et au Japon, le point vaut 0.250 mm
- Le point français est connu pour valoir 0.399 mm
- Comme l’histoire de l’informatique s’est d’abord développée autour des États-Unis, les technologies numériques ont surtout repris des variantes du point américain
Le point américain et le 72.27pt/in de TeX
- Aux États-Unis, le point a été normalisé vers la fin du XIXe siècle, mais les documents de l’époque donnaient encore des valeurs légèrement différentes
- Un document de 1900 donne une longueur de point de 35/996 cm, ce qui correspond à 72.281 points par pouce, tout en indiquant aussi 867.4699 « ems » par pied, soit 72.289 points par pouce
- Un document de 1916 indique que la pica standard (12 points) mesure 0.16604 pouce et donne 72.272 « pica ems » par pied, soit 72.272 points par pouce
- La page suivante du même document redonne la pica à 0.166044 pouce et le point exactement à 0.013837 pouce
- Ces écarts s’expliquent par l’évolution des définitions du mètre et du pied au fil du temps, et par le fait que les différences étaient inférieures au micron, donc faciles à ignorer en pratique
- La définition officielle du NIST fixe le point à 0.013837 pouce ; par simple calcul, cela revient à environ 72.27 points par pouce
- En recalculant à partir de 0.013837 pouce, on obtient en fait 72.270001 points/pouce, et Donald Knuth a corrigé ce minuscule écart dans TeX
- TeX définit 72.27pt = 1in
- Le « pt » de TeX est légèrement plus grand que le point d’imprimerie officiel défini en 1886 par l’American Typefounders Association
- Un point classique vaut exactement 0.99999999pt, soit une erreur d’environ un cent-millionième
- Cette nouvelle définition 72.27pt = 1in est simple à calculer et facile à mémoriser
- Les imprimeurs américains définissaient le point à partir du pouce, alors que TeX raisonne à partir du point et définit le pouce en points
- Le NIST semble aussi considérer que 72 points/pouce est une approximation suffisante, ce que TeX appelle
bp (big point)
PostScript, CSS, SVG et Inkscape en 72pt/in
- La valeur utilisée côté Inkscape semble provenir de la définition de l’espace utilisateur par défaut (default user space) du format PostScript
- La documentation PostScript définit la longueur d’une unité sur les axes x et y comme 1/72 pouce, et appelle cela l’espace utilisateur par défaut
- Cette unité a été choisie pour des raisons de simplicité mathématique et de commodité, tout en étant considérée comme très proche de l’unité standard de l’imprimerie, le point d’imprimeur à 1/72.27 pouce
- Plus loin, à la page 86, le 1/72 pouce est tout simplement appelé « point »
- Une édition ultérieure résume que 1/72 pouce est presque identique au point, sans l’être exactement, et qu’il n’existe pas de définition universelle du point
- Apple a intégré PostScript dans l’imprimante laser LaserWriter, puis d’autres entreprises ont suivi, ce qui a fait de PostScript le langage d’impression de facto
- En conséquence, 72 points/pouce s’est imposé comme une sorte de standard pour les mesures numériques
- Le W3C utilise également cette même base dans CSS et SVG
- Inkscape étant un éditeur SVG, ses points relèvent donc eux aussi de la famille 1/72 pouce
- L’éditeur SVG draw.io fait exception en utilisant une taille de point de 1/100 pouce
Les traces de cette définition d’unité dans Frink
- On peut aussi retrouver la trace de ces définitions du point dans Frink, un langage Turing-complet avec une forte prise en charge des unités
- En utilisant Frink pour recalculer les valeurs du document de 1900 avec le pouce d’avant 1959, on obtient ceci
oldinch := surveyfoot / 12 // pre 1959 inch
35 cm / (996 pts) -> oldinch / pts
0.013834839357429718876
point := 0.013837ee0 inch // exact, NIST Handbook 44, Appendix 3
printerspoint := point
texscaledpoint := 1/65536 point // The TeX typesetting system uses
texsp := texscaledpoint // this for all computations.
computerpoint := 1/72 inch // The American point was rounded
computerpica := 12 computerpoint // to an even 1/72 inch by computer
postscriptpoint := computerpoint // people at some point.
- Ici, « computer people at some point » renvoie à ce moment de bascule lié à l’unité de base 1/72 pouce de PostScript
- La définition de
texscaledpoint dans Frink diffère légèrement de la définition réelle de TeX
- Si on la réécrit en partant du point réellement utilisé par TeX, on obtient ceci
realtexpoint := 1/72.27 inch
realtexsp := 1/65536 realtexpoint
(realtexsp - texsp)
5.36285100578e-17 m (length)
(realtexsp - texsp) / realtexsp
1.0000000000005691827e-8
- L’écart introduit par la définition de Frink est d’environ 50 attomètres, soit à peu près 3 % de la largeur d’un proton
- TeX utilise en pratique des « scaled points » pour ses calculs, avec 2^16 sp = 1 pt
1 commentaires
Commentaires de Lobste.rs
À la fin, la référence à Frink fait apparaître la différence entre le US Survey Inch et l’International Inch
J’avais déjà écrit auparavant sur la forme qu’avait l’international inch, et comme c’est l’un de mes exemples préférés parmi les histoires de métrologie, il semble très probable que les différences dans la définition du point autour de 1900 venaient des limites de précision des mesures de l’époque
La différence entre le point TeX de Knuth et le point NIST est même plus petite que celle qui apparaît lorsqu’on se base sur deux définitions différentes du pouce
Les variations produites lorsqu’on cale des caractères métalliques dans un châssis ou qu’on coule des caractères en plomb avec une Linotype dépassaient largement la précision nécessaire pour distinguer ces écarts de point, donc cela n’aurait probablement pas posé de problème en pratique dans les techniques d’impression de l’époque
Comme autre origine historique possible du point à 1/72 inch en informatique, les écrans Apple des années 1980 affichaient généralement 72 pixels par pouce, donc 1 point correspondait à 1 pixel, ce qui permettait aux logiciels d’aligner facilement la taille des documents à l’écran avec celle des pages imprimées
Les machines à écrire étaient nominalement à 6 lignes par pouce, et sur une feuille de 11 pouces, du texte en corps 12 avec 72,27 points par pouce donne non pas 66 lignes, mais presque 66,25 lignes
Sur une machine à écrire, un écart d’un quart de ligne par page n’était peut-être pas très grave, mais pour des impressions en volume sur papier listing, il est important que la longueur de page soit un multiple entier de l’interligne afin de conserver l’alignement
Pendant des décennies avant la PAO, une grande partie de l’impression informatique servait à produire des fiches de paie ou des relevés bancaires
Avant les imprimantes laser, les sorties graphiques utilisaient des imprimantes matricielles, elles aussi conçues pour s’aligner sur un espacement de 6 lignes par pouce du papier listing
Donc s’il y a bien eu une raison de rétrocompatibilité derrière le choix des 72 points par pouce en PAO, elle visait sans doute davantage la compatibilité avec les anciennes techniques d’impression informatique basse résolution qu’avec la composition typographique
À l’inverse, l’objectif de TeX chez Knuth était la photocomposition, donc il fallait correspondre aux dimensions utilisées dans l’imprimerie traditionnelle
Les systèmes de mesure américain et britannique spécifiaient des températures de mesure légèrement différentes, et fabriquer un bloc compatible avec les deux normes exigeait un usinage à la limite de la précision possible à l’époque
Si les Jo blocks se sont autant répandus, c’est parce que Henry Ford les a tellement appréciés qu’il a pratiquement racheté l’entreprise, à la manière de Victor Kiam
Ah, je pensais que le point était défini exactement comme 1/72 inch
Dans les fichiers Rich Text Format, c’est-à-dire RTF, il existe une autre unité appelée « twip », utilisée pour la plupart des dimensions ; elle vaut 1/20 de point
Je n’en connais pas l’histoire, mais si le point n’est pas ce que je pensais, alors le twip non plus, et c’est agaçant de se dire que les erreurs s’accumulent
Le lien est erroné, mais c’était une lecture amusante
Les unités de mesure ressemblent aux modèles : ce qui compte, ce n’est pas tant qu’elles soient justes que leur utilité
Si un devoir scolaire exige simplement une police de 12 points, le sens exact de ce nombre importe peu
Si les avions volaient en points par seconde, il existerait peut-être une unité plus standardisée
Je me demande encore s’il y a une raison d’utiliser les pt aujourd’hui
Je ne sais pas s’il y a un avantage réel, ou si c’est simplement resté par inertie, comme le système impérial
Il semble évident qu’un point devrait correspondre à 72 points par pouce, puisque 12 × 6 = 72
Ce qui me surprend vraiment, c’est qu’on ait pu standardiser autre chose
Sa valeur était approximativement de 1/6 de pouce, mais en pratique elle variait légèrement d’une imprimerie à l’autre, et le pica standard a été choisi pour correspondre à la dimension réelle la plus couramment utilisée