A nossa própria verificação media 32 por cento a mais
Uma verificação escrita a 27 de agosto apontou 196 legendas de diagramas como largas demais para a imagem onde estão. Corrigi-las custou um dia. 103 nunca foram largas demais.
Pontos não são píxeis
A verificação mede uma legenda com o GD contra um ficheiro de tipo de letra real:
$bb = imagettfbbox(13, 0, $font, $text);
13 é o tamanho de letra da folha de estilos, em píxeis. imagettfbbox() recebe o tamanho em pontos. Estava a medir 13pt, ou seja 17,3px, e cada legenda saía 96/72 — um terço — larga demais.
A certeza veio de perguntar a algo que desenha texto a sério. Um Chromium sem janela consegue carregar o diagrama verdadeiro e indicar para cada legenda o getComputedTextLength(). Com 13 os dois divergiam num terço. Com 13 * 72 / 96, isto é 9,75, coincidem dentro de meio por cento: 219 contra 219 píxeis numa legenda, 561 contra 559 numa mais longa.
O tipo de letra sempre esteve certo
A verificação mede contra o DejaVu Sans, e o comentário por cima pedia desculpa por isso: o DejaVu é mais largo do que aquilo que a maioria vê, por isso o limiar estava nos 92 por cento.
Medida, a escolha revela-se exatamente certa, mas por outra razão que a declarada. Das letras que a pilha deste sítio consegue alcançar, o DejaVu é a mais larga. A mesma frase: DejaVu 219 píxeis, Liberation 194, Cantarell 193, FreeSans 188. Quem lê no Windows ou num Mac tem mais espaço, nunca menos. A medição não é prudente, é o pior caso, e é isso que uma verificação deve medir.
O que sobrou depois da conta
93 avisos sobreviveram à medição corrigida. Desses, 33 revelaram-se uma regra e não uma falha: a verificação guardava dez unidades de margem em relação ao bordo e tratava-a como limite rígido, portanto um ano a três unidades do bordo contava como cortado. Nada estava cortado. O limite é agora o próprio bordo, e a questão do aperto pertence ao limiar dos 95 por cento.
O que sobrou era real: legendas a passar por baixo de barras, colunas estreitas demais para uma frase em russo, uma legenda atravessada sobre a caixa vizinha. Corrigido movendo geometria, o que é barato: a geometria é idêntica nas onze linhas de língua, portanto uma substituição literal corrige onze. Quatro legendas eram mesmo mais compridas do que a imagem inteira, numa língua cada, e essas foram encurtadas.
O que se generaliza
Uma verificação errada num só sentido é pior do que verificação nenhuma, porque fabrica trabalho. Dois terços de um dia foram para diagramas que estavam bem, e a única razão pela qual o resto foi corrigido é que os avisos falsos estavam ao lado dos verdadeiros.
O que desempatou não foi ler o código com mais atenção. Foi medir a medição contra algo independente que desenha texto verdadeiro — e isso custou dez minutos, depois de uma semana a confiar na verificação.