Etikečių patikra matavo punktus, o ne pikselius
Šiame straipsnyje
Rugpjūčio 27 d. parašyta patikra pranešė apie 196 diagramų etiketes, per plačias savo paveikslėliams. Jas peržiūrėti užtruko dieną. 103 iš 196 pasirodė esą pačios patikros padarinys, ir ji pataisyta tą pačią savaitę.
Punktai nėra pikseliai
Patikra matuoja etiketę su GD pagal tikrą šrifto failą:
$bb = imagettfbbox(13, 0, $font, $text);
13 yra šrifto dydis iš stilių aprašo, pikseliais. imagettfbbox() priima dydį punktais. Buvo matuojama 13pt, tai yra 17,3px, todėl kiekviena etiketė išėjo 96/72 — trečdaliu — per plati.
Užtikrinti buvo galima paklausus to, kas iš tiesų piešia tekstą. Headless Chromium gali įkelti tikrą diagramą ir kiekvienai etiketei pateikti getComputedTextLength() reikšmę. Ties 13 abu būdai skyrėsi trečdaliu. Ties 13 * 72 / 96, tai yra 9,75, sutampa pusės procento tikslumu: vienai etiketei 219 ir 219 pikselių, ilgesnei – 561 ir 559.
Šriftas visą laiką buvo teisingas
Patikra matuoja pagal DejaVu Sans, o virš jos buvęs komentaras dėl to atsiprašė: DejaVu platesnis, nei mato dauguma skaitytojų, todėl slenkstis nustatytas ties 92 procentais, kad liktų vietos.
Išmatavus paaiškėja, kad pasirinkimas visiškai teisingas, bet dėl kitos priežasties nei komentare. Iš šriftų, kuriuos šios svetainės sąrašas iš tiesų gali pasiekti, DejaVu plačiausias. Tas pats sakinys: DejaVu – 219 pikselių, Liberation – 194, Cantarell – 193, FreeSans – 188. Skaitytojas su Windows ar Mac gauna daugiau vietos, niekada mažiau. Matavimas ne pesimistinis – tai blogiausias atvejis, ir būtent jį patikra turėtų matuoti.
Kas liko po aritmetikos
Pataisius matavimą išliko 93 pranešimai. Tada 33 iš jų pasirodė esą taisyklė, o ne trūkumas: patikra laikė dešimties vienetų tarpą nuo paveikslėlio krašto griežta riba, todėl metų etiketė už trijų vienetų nuo krašto buvo laikoma nukirpta. Niekas nebuvo nukirpta. Dabar riba – pats kraštas, o ankštumo klausimas priklauso 95 procentų slenksčiui.
Likusi dalis tikra: etiketės po stulpeliais, per siauri stulpeliai rusiškam sakiniui, užrašas ant kaimyninio. Tai pataisyta perkeliant geometriją, kas pigu — ji vienoda visose vienuolikoje kalbų eilučių, todėl vienas pažodinis pakeitimas pataiso vienuolika. Keturios etiketės iš tiesų buvo ilgesnės už visą paveikslėlį, kiekviena viena kalba, ir jos sutrumpintos.
Bendroji mintis
Viena kryptimi klystanti patikra sukuria darbą, todėl verta tikrinti tikrintuvą. Du trečdaliai dienos teko tvarkingoms diagramoms — ir per tą patį perėjimą pataisytos netvarkingos, nes klaidingi pranešimai buvo greta tikrų.
Atsakymą davė ne atidesnis kodo skaitymas. Atsakymą davė matavimo palyginimas su nepriklausomu dalyku, piešiančiu tikrą tekstą, — tai truko dešimt minučių. Dabar patikra nustato dydį ties 13 * 72 / 96 ir nuo tada taip veikia.