Nadbytečné escapování v osmi diagramech
Osm článků na tomto blogu nějakou dobu ukazovalo sedm znaků — uprostřed věty, uvnitř diagramů. Ne pomlčku. Doslovný text. Mezitím byl opraven ve všech jazycích.
81 řádků, 91 výskytů. V běžném textu týchž osmi článků: ani jeden.
O jedno escapování víc
Diagramy jsou inline SVG zapsané přímo v těle článku. Popisek, který chce pomlčku, nese —, z něhož prohlížeč udělá pomlčku, přesně jako v odstavci.
Uloženo však bylo —. Prohlížeč z toho poslušně udělal sedm znaků, které vypisují entitu, a vykreslil je. Běžný text zůstal nedotčen, protože nikdy neprošel tím, co escapování navíc přidalo; prošly tím jen popisky, a to jen v článcích, jejichž popisky vznikly v té době.
Příčina je malá a nudná. Stojí za zapsání spíš to, proč zůstala tak dlouho na očích a co ji ukončilo.
Kontrola to viděla a řekla něco jiného
Existuje kontrola, která měří, zda se popisek diagramu vejde do svého obrázku. Tyto popisky hlásila už několik dní — jako příliš široké.
Což byly. Popisek, který kreslí sedm znaků místo jednoho, je asi o čtyřicet pět pixelů širší, než měl být, takže měření bylo správné a hlášení také. Závěr, který by si z hlášení čtenář vyvodil, ale ne. Číslo říkalo, že geometrie je příliš těsná. Pravda byla, že text není tím, čím se zdá.
Tak to celé vypadá. Kontrola odpovídá na otázku, kterou dostala, a nedokáže nahlásit, že otázka byla špatná. Nic tu nebylo změřeno špatně; měření se jen týkalo jiného problému, než jak vypadalo.
Co to odhalilo
Vykreslit jeden diagram a podívat se na něj. Headless Chromium, jeden snímek obrazovky, deset sekund. Entita byla na třetím řádku obrázku, písmeny stejně velkými jako všechno ostatní.
Opravou byla migrace, která zaměnila & za & u pevného seznamu názvů entit, a to jen uvnitř <svg class="dg"> bloků, aby ampersand míněný jako ampersand ampersandem zůstal. Cokoli mimo ten seznam bylo nahlášeno a ponecháno, místo aby se hádalo. Všech 81 řádků bylo opraveno ve všech jazycích; jediné výskyty, které v blogu zbyly, jsou ty, které tento článek záměrně cituje.
Co z toho plyne obecně
Každá automatická kontrola v tomto projektu měří něco číselného, protože čísla jsou to, co program umí porovnat. Žádná z nich nevidí, že se obrázek změnil v nesmysl, že je rámeček prázdný nebo že je slovo vypsané tam, kam patří symbol.
Pravidlo, které z toho vzešlo, je tedy krátké: po každé změně diagramu jeden vykreslit a podívat se na něj, v jazyce, který potřebuje nejvíc místa. Zachytilo už dvě věci, které žádné měření zachytit nemohlo — tuto a prázdný rámeček, který zůstal, když se z něj přesunul titulek.