Etikettkontrollen mätte punkter, inte pixlar
En kontroll som skrevs den 27 augusti rapporterade 196 diagrametiketter som för breda för bilden de sitter i. Att gå igenom dem tog en dag. 103 av de 196 visade sig vara en artefakt av själva kontrollen, och kontrollen rättades samma vecka.
Punkter är inte pixlar
Kontrollen mäter en etikett med GD mot en riktig typsnittsfil:
$bb = imagettfbbox(13, 0, $font, $text);
13 är teckenstorleken från stilmallen, i pixlar. imagettfbbox() tar sin storlek i punkter. Den mätte 13 pt, vilket är 17,3 px, och varje etikett blev 96/72 — en tredjedel — för bred.
Sättet att bli säker var att fråga något som faktiskt ritar text. Headless Chromium kan läsa in det verkliga diagrammet och rapportera getComputedTextLength() för varje etikett. Vid 13 skilde sig de två åt med en tredjedel. Vid 13 * 72 / 96, alltså 9,75, stämmer de överens inom en halv procent: 219 mot 219 pixlar för en etikett, 561 mot 559 för en längre.
Typsnittet var rätt hela tiden
Kontrollen mäter mot DejaVu Sans, och kommentaren ovanför bad om ursäkt för det: DejaVu är bredare än det de flesta läsare ser, så tröskelvärdet sattes till 92 procent för att lämna marginal.
Uppmätt visar sig valet vara helt rätt, men av ett annat skäl än det kommentaren angav. Av de typsnitt som den här webbplatsens typsnittsstack faktiskt kan nå är DejaVu det bredaste. Samma mening: DejaVu 219 pixlar, Liberation 194, Cantarell 193, FreeSans 188. En läsare på Windows eller Mac får mer utrymme, aldrig mindre. Mätningen är inte pessimistisk, den är det värsta fallet, och det är just vad en kontroll ska mäta.
Vad som återstod efter räknandet
93 rapporter överlevde den rättade mätningen. Sedan visade sig 33 av dem bero på en regel snarare än ett fel: kontrollen höll en marginal på tio enheter från bildens kant och behandlade den som en fast gräns, så en årtalsetikett som satt tre enheter från kanten räknades som avklippt. Ingenting var avklippt. Gränsen är nu själva kanten, och frågan om hur trångt det får vara hör till tröskelvärdet på 95 procent.
Det som återstod var verkligt: etiketter som löpte in under staplar, kolumner för smala för en rysk mening, en bildtext som låg över sin granne. De rättades genom att flytta geometri, vilket är billigt — geometrin är identisk i alla elva språkrader, så en enda bokstavlig ersättning rättar elva. Fyra etiketter var på riktigt längre än hela bilden på ett språk vardera, och de förkortades.
Den allmänna lärdomen
En kontroll som felar åt ett håll skapar arbete, och därför är kontrollen värd att kontrollera. Två tredjedelar av en dag gick åt till diagram som var i sin ordning — och samma genomgång lagade de som inte var det, eftersom de felaktiga rapporterna låg bredvid verkliga.
Det som avgjorde saken var inte att läsa koden mer noggrant. Det var att mäta mätningen mot något oberoende som ritar riktig text — och det tog tio minuter. Kontrollen använder nu storleken 13 * 72 / 96 och har körts på den grunden sedan dess.