Search code examples
phpgdimagettftext

php imagettftext letter spacing


Does anybody have a function that draws a ttf string (imagettftext) with specified letter spacing?

I cannot find any build-in GD function so I think that it should be done letter by letter adding some constant width.

Maybe someone have such function already :)

ps. the best font will be arial.ttf


Solution

  • function imagettftextSp($image, $size, $angle, $x, $y, $color, $font, $text, $spacing = 0)
    {        
        if ($spacing == 0)
        {
            imagettftext($image, $size, $angle, $x, $y, $color, $font, $text);
        }
        else
        {
            $temp_x = $x;
            for ($i = 0; $i < strlen($text); $i++)
            {
                $bbox = imagettftext($image, $size, $angle, $temp_x, $y, $color, $font, $text[$i]);
                $temp_x += $spacing + ($bbox[2] - $bbox[0]);
            }
        }
    }
    

    and the call:

    imagettftextSp($image, 30, 0, 30, 30, $black, 'arial.ttf', $text, 23);
    

    Function parameters order meets standard imagettftext parameters order, and the last parameter is optional $spacing parameter. If not set or the passed value is 0, the kerning / letter spacing is not set.