Nuestra propia comprobación medía un 32 por ciento de más
Una comprobación escrita el 27 de agosto señaló 196 etiquetas de diagrama como demasiado anchas para la imagen en la que están. Arreglarlas costó un día. 103 nunca fueron demasiado anchas.
Los puntos no son píxeles
La comprobación mide una etiqueta con GD contra un archivo de fuente real:
$bb = imagettfbbox(13, 0, $font, $text);
13 es el tamaño de letra de la hoja de estilos, en píxeles. imagettfbbox() toma su tamaño en puntos. Estaba midiendo 13pt, que son 17,3px, y cada etiqueta salía 96/72 — un tercio — más ancha.
La certeza llegó al preguntar a algo que dibuja texto de verdad. Un Chromium sin ventana puede cargar el diagrama real e informar del getComputedTextLength() de cada etiqueta. Con 13 los dos diferían en un tercio. Con 13 * 72 / 96, es decir 9,75, coinciden dentro del medio por ciento: 219 contra 219 píxeles en una etiqueta, 561 contra 559 en otra más larga.
La fuente estuvo bien todo el tiempo
La comprobación mide contra DejaVu Sans, y el comentario de encima se disculpaba por ello: DejaVu es más ancha que lo que ve la mayoría, así que el umbral se puso en el 92 por ciento.
Medida, la elección resulta exactamente correcta, pero por otro motivo que el declarado. De las fuentes que la pila de este sitio puede alcanzar, DejaVu es la más ancha. La misma frase: DejaVu 219 píxeles, Liberation 194, Cantarell 193, FreeSans 188. Quien lee en Windows o en un Mac tiene más sitio, nunca menos. La medida no es prudente, es el peor caso, y eso es lo que una comprobación debe medir.
Lo que quedó tras la cuenta
93 avisos sobrevivieron a la medición corregida. De ellos, 33 resultaron ser una regla y no un fallo: la comprobación guardaba diez unidades de margen respecto al borde y lo trataba como límite duro, así que un año a tres unidades del borde contaba como cortado. No había nada cortado. El límite es ahora el borde mismo, y la cuestión de la estrechez le toca al umbral del 95 por ciento.
Lo que quedó era real: etiquetas metiéndose bajo las barras, columnas demasiado estrechas para una frase en ruso, un pie de imagen cruzado sobre la caja vecina. Se arreglaron moviendo geometría, que es barato: la geometría es idéntica en las once filas de idioma, así que una sustitución literal arregla once. Cuatro etiquetas eran de verdad más largas que la imagen entera en un idioma cada una, y esas se acortaron.
Lo que se generaliza
Una comprobación equivocada en una sola dirección es peor que ninguna, porque genera trabajo. Dos tercios de un día se fueron en diagramas que estaban bien, y la única razón por la que se arregló el resto es que los avisos falsos estaban al lado de los verdaderos.
Lo que deshizo el empate no fue leer el código con más cuidado. Fue medir la medición contra algo independiente que dibuja texto real, y eso costó diez minutos, después de una semana confiando en la comprobación.