在PHP中的GD库字体字距词与字符

时间:2015-06-21 17:18:17

标签: php gd

当我在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])
}

word kerning vs character write

我正在使用的一种解决方法是首先获得字符对的宽度,
然后减去后一个字符的宽度。
例如宽度(“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);

但即便如此,在输出线时,字距仍然有些不同。

Word output with overlay of calculated x for chars

  • 还有哪些其他方法可以从字体中获取字距调整信息?

0 个答案:

没有答案