代码之家  ›  专栏  ›  技术社区  ›  Tristan

PHP GD-不同的文本偏移Mac与Linux

  •  1
  • Tristan  · 技术社区  · 14 年前

    我试图使用imagettftext()和标准的Arial粗体字体将文本呈现在框的中心。

    我在Mac上开发代码,文本按我预期的方式排列在框的中心。但是,然后我将代码部署到一个合适的linux服务器上,似乎文本呈现的源代码不同,并且内核关闭。

    我已经确认我在这两台机器上都使用了最新和最好的php和php gd版本。

    请参见下面的示例图片:

    这就是mac上发生的事情 alt text

    这就是linux上发生的事情 alt text

    我的问题让任何人都有过这样的经历,并且知道如何解决这个问题,而不必在linux服务器上实际地将文本偏移几个像素。或者在使用上面的函数呈现文本时,我遗漏了什么?

    编辑:我确实使用imagettfbbox()来获取要呈现的文本的大小,以使其正确居中(我也尝试过使用imagettftext()进行虚拟呈现来获取边界框,问题似乎是imagettftext()呈现的原点太奇怪了)

    编辑2:也许这是freetype实现之间的区别?尽管我希望他们使用相同的代码库

    2 回复  |  直到 14 年前
        1
  •  0
  •   Dan Grossman    14 年前

    尝试使用imagettfbbox:

    http://www.php.net/manual/en/function.imagettfbbox.php

    它给你一个边界框(有效的宽度和高度)一些文字会占用,所以你可以决定在哪里放置文字之前,把它写在图像上。

        2
  •  0
  •   Tristan    14 年前

    我从来没有解决过这个问题,在linux服务器上的内核都是错误的。所以我去实现了我自己的紧排解决方案,用字符间距所需的位置信息分别绘制每个字符。

    如果有人能找到一个合适的解决方案那就太棒了