【问题标题】:Annoying whitespace to the left when using the GD Library and text使用 GD 库和文本时左侧令人讨厌的空格
【发布时间】:2014-11-26 21:00:32
【问题描述】:

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


(来源:vandret.dk

问题是有时,文本没有正确定位。 绘制 A 时,它可以工作。当绘制 M(以及许多其他带有垂直笔划的字母 - P、I 等)时,它会在左侧放置一个空格并将句子裁剪到右侧。如果您查看下面的两行,它们应该完全对齐 - 但没有。


(来源:vandret.dk


(来源:vandret.dk

如果直接右键查看图片,问题会更明显。

它是这样工作的:

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

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

然后,所有调整大小的东西,都有效。但是为什么文本对齐错误?

【问题讨论】:

    标签: php gd


    【解决方案1】:

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

    我在程序中使用了一个名为“Automatic Metrics Wizard”的功能来去除左侧缩进的所有字符,这在几秒钟内就完成了 - 字体看起来仍然可以接受。像 j 这样的字母的字距调整看起来有点不对劲 - 但它可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2015-01-07
      • 2013-12-11
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多