Contacter l'assistance

Nous répondons par e-mail, en général sous deux jours.

Pour prévenir les abus, Google reCAPTCHA vérifie cet envoi ; des données sont transmises à Google. Le script n'est chargé qu'à l'ouverture de ce formulaire.

← Tous les articles

Le contrôle des étiquettes mesurait en points, pas en pixels

À propos du contenu et de sa vérification

Dans cet article

Un contrôle écrit le 27 août a signalé 196 étiquettes de diagramme comme trop larges pour l’image où elles se trouvent. Les passer en revue a pris une journée. 103 des 196 venaient du contrôle lui-même, et le contrôle a été corrigé la même semaine.

étiquettes signalées comme trop larges premier signalement 196 mesure et entités corrigées 93 géométrie déplacée 38 règle du bord corrigée 3 quatre étiquettes raccourcies 0 5 093 étiquettes mesurées dans 77 billets et onze langues 103 des 196 n’ont jamais été trop larges — le contrôle l’était

Les points ne sont pas des pixels

Le contrôle mesure une étiquette avec GD contre un vrai fichier de police :

$bb = imagettfbbox(13, 0, $font, $text);

13 est la taille de police de la feuille de style, en pixels. imagettfbbox() prend sa taille en points. Il mesurait donc 13pt, soit 17,3px, et chaque étiquette ressortait 96/72 — un tiers — trop large.

La certitude est venue en demandant à quelque chose qui dessine vraiment du texte. Un Chromium sans fenêtre peut charger le vrai diagramme et donner pour chaque étiquette getComputedTextLength(). À 13, les deux divergeaient d’un tiers. À 13 * 72 / 96, soit 9,75, ils s’accordent à un demi pour cent près : 219 contre 219 pixels pour une étiquette, 561 contre 559 pour une plus longue.

La police était juste depuis le début

Le contrôle mesure contre DejaVu Sans, et le commentaire au-dessus s’en excusait : DejaVu est plus large que ce que voit la plupart des lecteurs, d’où un seuil à 92 pour cent.

Mesuré, le choix se révèle exactement juste, mais pour une autre raison que celle annoncée. Parmi les polices que la pile de ce site peut atteindre, DejaVu est la plus large. La même phrase : DejaVu 219 pixels, Liberation 194, Cantarell 193, FreeSans 188. Qui lit sous Windows ou sur un Mac a plus de place, jamais moins. La mesure n’est pas prudente, elle est le pire cas, et c’est ce qu’un contrôle doit mesurer.

Ce qui restait après le calcul

93 signalements ont survécu à la mesure corrigée. Parmi eux, 33 se sont révélés être une règle et non un défaut : le contrôle gardait dix unités de marge par rapport au bord et la traitait en limite dure, si bien qu’une année posée à trois unités du bord passait pour coupée. Rien n’était coupé. La limite, c’est désormais le bord lui-même, et la question de l’étroitesse revient au seuil de 95 pour cent.

Ce qui restait était réel : des étiquettes passant sous des barres, des colonnes trop étroites pour une phrase russe, une légende en travers de la case voisine. Corrigé en déplaçant de la géométrie, ce qui est bon marché : la géométrie est identique dans les onze lignes de langue, une substitution littérale en corrige donc onze. Quatre étiquettes étaient vraiment plus longues que l’image entière, dans une langue chacune ; celles-là ont été raccourcies.

Ce qui se généralise

Un contrôle faux dans un seul sens fabrique du travail, et c’est pour cela qu’il vaut la peine de contrôler le contrôle. Deux tiers d’une journée sont partis dans des diagrammes qui allaient bien, et le même passage a réparé ceux qui n’allaient pas, parce que les faux signalements côtoyaient les vrais.

Ce qui a tranché n’est pas d’avoir relu le code plus attentivement. C’est d’avoir mesuré la mesure contre quelque chose d’indépendant qui dessine du vrai texte — et cela a pris dix minutes. Le contrôle calcule désormais avec 13 * 72 / 96 et fonctionne sur cette base depuis.

Publicité