使用GD库和文本时,左侧会出现恼人的空白

时间:2014-11-26 21:00:33

标签: php gd

我正在研究一个类,它可以创建许多文本输入并将它们放在彼此的顶部,以便它们左右对齐 - 就像这样:

3 lines 问题是有时,文本定位不正确。 绘制A时,它有效。当绘制M(和其他一些带有垂直笔划的字母--P,I等)时,它会在左边放一个空格,然后将句子裁剪到右边。如果你看下面的两行,它们应该完美对齐 - 但不是。

3 lines 3 lines

如果右键单击并直接查看图像,则问题会更明显。

它的工作原理如下:

  1. 创建一个空画布,将文本“虚拟”放在上面以测量宽度和高度
  2. 获取尺寸后,创建与文本尺寸匹配的画布。我们现在有一个舞台,如宽度为800像素
  3. 缩小句子或单词以适合宽度为400像素
  4. 增加另一个句子或单词的y偏移量
  5. 只要我们有句子/单词显示
  6. ,就可以重复做同样的事情

    我的出发点是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);
    

    然后,所有调整大小的东西,它的工作原理。但为什么文本对齐错误?

1 个答案:

答案 0 :(得分:0)

解决!这是一个字体问题,而不是GD问题。我在High-Logic FontCreator中打开了TrueType字体,发现其中几个字母左边有一个间隔符。

我在名为“自动度量向导”的程序中使用了一个函数来删除左缩进的所有字符,这些字符在几秒钟内完成 - 字体看起来仍然可以接受。像j这样的字母上的字距看起来有点偏 - 但它会做的。

相关问题