Letter placement error with GD2, TTF and PHP
- by Javier Parra
Some time ago I made a script that takes some text and returns it as an image, and worked flawlessly. But I'm not sure since when a weird bug started to happen. The letters that have a (my apologies to the font geeks) "glyph" on the left get pushed to the right so the letter starts on it, but leaves space only for the main letter, hehe, I think an example should do it.
The expected result is:
The "bad" one was generated, obviously, by my script, located here: http://www.esbasura.com/images/text.php?txt=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog.&fnt=1&size=23&bg=lightgrey
And the good one was generated by dafont here: http://img.dafont.com/preview.php?text=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog.&ttf=bleeding_cowboys0&ext=1&size=23&psize=m&y=46
I'm not doing anything fancy in the script, here is the relevant part:
imagefilledrectangle($im, 0, 0, $width, $height, $$bg);
imagettftext($im, $size, 0, (-1*$textsize[6]), (-1*$textsize[7]), $$color, $font, $text);
// imagefttext($im, $size, 0, (-1*$textsize[6]), (-1*$textsize[7]), $$color, $font, $text); same results using imagefttext
imagecolortransparent($im, $$bg);
header("Cache-Control: public"); // HTTP/1.1
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
}
I'm kind of surprised, because, as I said, it used to work flawlessly. Maybe my host changed my machine.
(here's my phpinfo: http://www.work4bandwidth.com/info.php)
Relevant bit:
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled