0

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

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

不同的字体显示不同的结果,不少没有显示问题。

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

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

所以基本上我很难过。我不确定我应该从这里走向哪个方向,任何帮助将不胜感激。

4

2 回答 2

1

这是一个字体问题。在过去的几千年里,甚至在活字发明之前,当然在计算机发明之前,排版师就一直面临着这个问题并解决了这个问题。它甚至还有一个技术名称:它叫做kerning

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

因此,问题不在于您的库、代码或编程语言,而在于您使用了设计不良的字体。我会建议简单地避免它们并为按钮使用设计更好的字体。如果你真的需要字体既漂亮又完美,那么可能是时候投资为屏幕设计的专业制作的商业字体了(为印刷设计的字体不合适,而且可能更贵)。

抱歉,答案很长,但有时您只需要了解历史即可了解您要解决的“真实”问题。


PS:我说渲染器不是罪魁祸首,但我有点撒谎,只是因为如果你包括渲染器扮演的角色,故事会变得更加复杂。

如果您之前的解决方案使用相同的字体,但您在 Web 浏览器中的字距调整不佳,那么这是字体问题。您之前使用的渲染器很可能使用了它自己的不依赖于字体提示的自动字距调整算法,我知道 Gimp 可以做到这一点。

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

于 2010-08-09T07:05:47.057 回答
1

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

于 2011-01-12T12:07:42.813 回答