Contactar con soporte

Respondemos por correo, normalmente en dos días.

Google reCAPTCHA revisa este envío frente a abusos; se transmiten datos a Google. El script se carga solo al abrir el formulario.

← Todas las entradas

La comprobación de etiquetas medía en puntos, no en píxeles

Sobre el contenido y su revisión

En este artículo

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. Repasarlas costó un día. 103 de las 196 resultaron ser un artefacto de la propia comprobación, que se corrigió esa misma semana.

etiquetas señaladas como demasiado anchas primer aviso 196 medición y entidades corregidas 93 geometría movida 38 regla del borde corregida 3 cuatro etiquetas acortadas 0 5.093 etiquetas medidas en 77 entradas y once idiomas 103 de las 196 nunca fueron anchas — lo era la comprobación

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 genera trabajo, y por eso conviene comprobar la comprobación. Dos tercios de un día se fueron en diagramas que estaban bien, y la misma pasada arregló los que no lo estaban, porque los avisos falsos estaban al lado de los verdaderos.

Lo que lo resolvió 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. La comprobación calcula ahora con 13 * 72 / 96 y funciona sobre esa base desde entonces.

Publicidad