Fonts 转换为图像时文本中字符之间无法解释的间距

Fonts 转换为图像时文本中字符之间无法解释的间距,fonts,imagettftext,Fonts,Imagettftext,我已经使用imagettftext系统一段时间了,现在可以在网站上添加nog标准字体。几个月前,为了更好的选择,我放弃了这种方法,但我在一年前创建的一个网站上遇到了一个问题 该网站已被移动到一个新的服务器,除了稳定性和性能问题,该服务器还有一个更新的php版本和其他改进。 除了一个细节外,这个动作非常完美。此后,所有生成的图像文本按钮都在特定字母之间留有间距。最值得注意的是W和J。生成图像的脚本本身似乎没有错,因为它是从头开始重建的,并且使用了其他程序员使用的几个实现 不同的字体显示不同的结果,

我已经使用imagettftext系统一段时间了,现在可以在网站上添加nog标准字体。几个月前,为了更好的选择,我放弃了这种方法,但我在一年前创建的一个网站上遇到了一个问题

该网站已被移动到一个新的服务器,除了稳定性和性能问题,该服务器还有一个更新的php版本和其他改进。 除了一个细节外,这个动作非常完美。此后,所有生成的图像文本按钮都在特定字母之间留有间距。最值得注意的是W和J。生成图像的脚本本身似乎没有错,因为它是从头开始重建的,并且使用了其他程序员使用的几个实现

不同的字体显示不同的结果,并且相当多的字体没有显示问题

现在,合乎逻辑的解决方案是切换到cufon甚至fontface这样的系统,但这两种解决方案都有两个主要缺点

  • 这样做非常耗时(实现imagettftext解决方案的低效方式是我停止使用它的原因之一)
  • 该网站还有一个html通讯系统,显然不支持这两种解决方案

  • 所以基本上我被难住了。我真的不确定我应该从这里走向何方,任何帮助都将不胜感激。

    这是字体问题。在过去的几千年里,印刷工作者一直面临着这个问题并解决它,甚至在活字印刷术发明之前,也肯定是在计算机发明之前。它甚至有一个技术名称:它叫

    这是一个研究得很好、解决得很好的问题。计算机化字体的出现导致了更多可以应用自动字距调整的算法的发明。大多数情况下,它需要字体本身来支持渲染器的“提示”。不幸的是,计算机的出现似乎也催生了懒惰的字体设计师:那些有工具但没有受过培训的人。我所说的培训不是指如何使用这些工具的培训,而是指字体工匠的艺术培训:印刷术培训。同时,我们也看到了设计糟糕的数字字体的兴起

    因此,问题不在于你的库、代码或编程语言,而在于你使用了设计糟糕的字体。我建议尽量避免使用这些字体,并为按钮使用设计更好的字体。如果你真的需要这种字体既别致又完美,那么也许是时候投资于为屏幕设计的专业商业字体了(为打印设计的字体不合适,甚至可能更贵)

    很抱歉回答得太长,但有时你只需要了解历史就可以知道你试图解决的“真正”问题


    PS:我说过渲染器不应该受到责备,但我有点撒谎,只是因为如果你把渲染器扮演的角色包括进来,故事会变得复杂得多

    如果您以前的解决方案使用相同的字体,但在web浏览器中出现了错误的字距,那么这就是字体问题。您以前使用的渲染器很可能使用了自己的自动紧排算法,它不依赖于字体暗示,我知道Gimp可以做到这一点


    但是,如果它在web浏览器中按原样工作(即简单地将font属性设置为自定义字体),但在使用当前方法时中断,则这是一个渲染器问题。Web浏览器使用操作系统提供的系统渲染器,该渲染器尊重字体提示。一些渲染器,例如Adobe PhotoShop,就是不理解字体提示。

    我意识到这是旧的,并且已经标记为已完成,但问题在于PHP中的回归,而不是字体。我相当肯定所有>5.2.9的版本都有这个问题。imagettftext()函数有问题。

    谢谢您的回答。使用基于imagettftext的系统时确实存在此问题。比如说Cufon就不是这样。因此,gd渲染器可能有问题。不幸的是,由于我不是设计师,我几乎没有选择不同字体的自由:)但也许我可以用这些信息来找出一些东西。