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

Un échappement de trop dans huit diagrammes

Pendant un temps, huit billets de ce blog ont affiché, en plein milieu d’une phrase, les sept caractères —, et cela dans les diagrammes. Pas un tiret. Le texte lui-même. C’est corrigé depuis, dans toutes les langues.

81 lignes, 91 occurrences. Dans la prose de ces mêmes huit billets : aucune.

lignes de diagramme qui dessinaient l’entité au lieu du tiret onze langues Compter sans cookie middot, mdash Emportez vos données mdash Un compteur via le tag manager mdash Votre compteur sur une page HTTPS mdash Un compteur dans un profil Chomikuj mdash Une longue adresse a mis le compteur à terre mdash Pourquoi la liste d’exclusion n’est pas hachée mdash Le cache qui vit en mémoire mdash 81 lignes dans 8 billets, 91 occurrences — et aucune dans la prose le contrôle de largeur les voyait trop larges, jamais fausses

Un échappement de trop

Les diagrammes sont du SVG intégré, écrit dans le corps de l’article. Une étiquette qui veut un tiret porte —, et le navigateur en fait un, exactement comme dans un paragraphe.

Ce qui était enregistré, en revanche, c’était —. Le navigateur en a docilement fait les caractères qui épellent une entité et les a dessinés. La prose est restée intacte parce qu’elle n’est jamais passée par ce qui ajoutait l’échappement de trop ; seules les étiquettes y passaient, et seulement dans les billets dont les étiquettes ont été construites à ce moment-là.

La cause est petite et ennuyeuse. Ce qui mérite d’être noté, c’est pourquoi elle est restée si longtemps en pleine vue, et ce qui y a mis fin.

Le contrôle l’a vu et a dit autre chose

Il existe un contrôle qui mesure si une étiquette de diagramme tient dans son image. Il signalait ces étiquettes depuis des jours — comme trop larges.

Ce qu’elles étaient. Une étiquette qui dessine sept caractères au lieu d’un est environ quarante-cinq pixels plus large que prévu : la mesure était juste et le signalement était juste. Ce qui ne l’était pas, c’est la conclusion qu’en tire le lecteur de ce signalement. Le nombre disait que la géométrie était trop serrée. La vérité, c’est que le texte n’était pas celui qu’il paraissait être.

C’est la forme de la chose. Un contrôle répond à la question qu’on lui a donnée et ne peut pas signaler que la question était la mauvaise. Rien n’a été mal mesuré ici : la mesure portait simplement sur un autre problème que celui dont elle avait l’air.

Ce qui l’a trouvé

Rendre un diagramme et le regarder. Chromium sans fenêtre, une capture, dix secondes. L’entité se trouvait à la troisième ligne de l’image, dans des lettres de la même taille que tout le reste.

La réparation a été une migration qui remplace &amp; par &, pour une liste fixe de noms d’entités et uniquement à l’intérieur des blocs <svg class="dg">, afin qu’une esperluette voulue reste une esperluette. Tout ce qui ne figurait pas sur la liste a été signalé et laissé tranquille plutôt que deviné. Les 81 lignes ont été corrigées dans toutes les langues ; il ne reste dans le blog que les occurrences que ce billet cite exprès.

Ce qui se généralise

Chaque contrôle automatique de ce projet mesure quelque chose de chiffré, parce que les nombres sont ce qu’un programme sait comparer. Aucun ne peut voir qu’une image est devenue absurde, qu’un cadre est vide ou qu’un mot est épelé là où il faudrait un signe.

La règle qui en est sortie est courte : après toute modification d’un diagramme, en rendre un et le regarder, dans la langue qui demande le plus de place. Elle a déjà attrapé deux choses qu’aucune mesure ne pouvait — celle-ci, et un cadre vide resté là après qu’on en eut sorti une légende.

Publicité