我正在研究一个类,它可以创建许多文本输入并将它们放在彼此的顶部,以便它们左右对齐 - 就像这样:
问题是有时,文本定位不正确。
绘制A时,它有效。当绘制M(和其他一些带有垂直笔划的字母--P,I等)时,它会在左边放一个空格,然后将句子裁剪到右边。如果你看下面的两行,它们应该完美对齐 - 但不是。
如果右键单击并直接查看图像,则问题会更明显。
它的工作原理如下:
我的出发点是this,我构建了这段代码:
$fontsize = 120;
$size = imagettfbbox($fontsize, 0, "./fonts/".$fontname, $text);
$xsize = abs($size[0]) + abs($size[2]);
$ysize = abs($size[5]) + abs($size[1]);
//print_r($size);
$image = imagecreate($xsize, $ysize);
// Colors
$backgroundcolor = imagecolorallocate($image, 255, 255, 255);
$textcolor = imagecolorallocate($image, 155, 142, 138);
imagettftext($image, $fontsize, 0, 0, abs($size[5]), $textcolor, "./fonts/".$fontname, $text);
header("content-type: image/png");
imagepng($image);
然后,所有调整大小的东西,它的工作原理。但为什么文本对齐错误?
答案 0 :(得分:0)
解决!这是一个字体问题,而不是GD问题。我在High-Logic FontCreator中打开了TrueType字体,发现其中几个字母左边有一个间隔符。
我在名为“自动度量向导”的程序中使用了一个函数来删除左缩进的所有字符,这些字符在几秒钟内完成 - 字体看起来仍然可以接受。像j这样的字母上的字距看起来有点偏 - 但它会做的。