Bug/Error fuente TTF con caracteres extendidos con librería GD, imagettftext y PHP

Ayer me topé con una de esas situaciones en la que a los quemetemos mano al código de vez en cuando nos ponen “contentos”. Una de esas sorpresas que a veces el dios del código nos tiene preparadas para recordarnos que no somos nadie y que estamos expuestos al peor de los males. Una de esas obras de arte que te permiten disfrutar durante horas de un bug loco para terminar emocionado y contento por haber encontrado la causa, cuando en realidad hemos perdido un precioso tiempo de nuestras miserables vidas…

Por el título ya sabéis que es de PHP, que tiene que ver con la librería GD y que se refiere al uso de textos en dicha librería, concretamente con fuentes TrueType, es decir, extensión TTF. Es un bug/error que te puedes encontrar o no, dependiendo precisamente de cómo está instalada y configurada la librería GD dentro de PHP. Básicamente consiste en que a la hora de usar una tipografía TrueType para escribir texto en una imagen sobre la que estamos trabajando con GD en PHP a través del método imagettftext, tendremos problemas a la hora de ver caracteres extendidos tales como acentos, eñes, etc. dependieno de dicha configuración.

Lo que verías es algo como esto:
Texto con fuente TTF con el error causado por la configuración de GD

Si usas WAMP, o XAMPP seguramente este bug ni te lo encuentres, ya que la configuración por defecto de GD viene sin el regalo sorpresa, pero puede pasarte que en tu hosting se hayan tomado la molestia de compilar con –enable-gd-jis-conv lo que nos arroja una configuración de GD con JIS-mapped Japanese Font Support enabled. Es decir que si en tu phpinfo, accedes a la zona dedicada a GD, y ves que tienes esa opción enabled… tienes un problema, y ya somos dos.

Configuración problemática de GD en PHP por causa de la compatibilidad con JIS-mapped Japanese Font Support enabled

¿La solución? Pues no la tengo clara, ni soy un administrador de sistemas, ni lo quiero ser, pero leyendo un par de hilos donde se comentaba este problema es posible que haya un workaround sin necesidad de cargarse la JIS-mapped Japanese Font Support, y a la vez tener nuestros queridos acentos disponibles. En todo caso, si no quieres usar rollos japoneses siempre podrías desactivarla (si el hosting lo permite, o tiene la amabilidad de hacerlo por ti en caso de que no esté a tu alcance, cosa habitual en hostings compartidos).

Lo más raro ha sido ver que hay muy poca información de este problema en Internet, cuando yo esperaba que si fuera algo de este tipo (de configuración de servidor) estuviera lleno de información sobre el problema. Ha costado dar con ello y no lo hubiera hecho sin la orientaciones y confirmaciones por twitter de Maikel Salazar (@maikelsalazar) y de Nacho Suárez (@nacsua). Mis agradecimientos desde este rinconcito :)

Tags