当我在PHP中输出带imagettftext()
的单词时,字符之间的间距或字距不同于输出单个字符并使用字符宽度前进$ x时的间距。 GD库似乎使用字体对字体的字距调整信息。
$string = "Hello World, how do you do";
// write whole string
$box = imagettftext($im,$size,$angle,$x,$y,$black,$font,$string);
// write individual chars
for($i=0;$i<strlen($string);$i++){
$char = substr($string,$i,1);
$box = imagettftext($im,$size,$angle,$x,$y,$black,$font,$char);
$x = abs($box[2])
}
我正在使用的一种解决方法是首先获得字符对的宽度,
然后减去后一个字符的宽度。
例如宽度(“He”) - 宽度(“e”),宽度(“el”) - 宽度(“l”
$both = imagettfbbox($size,0,$font,$char.$nextchar);
$next = imagettfbbox($size,0,$font,$nextchar);
$bothwidth = abs($both[4] - $both[0]);
$nextwidth = abs($next[4] - $next[0]);
$x += ($bothwidth - $nextwidth);
但即便如此,在输出线时,字距仍然有些不同。