2015-10-25 31 views
2

我有一个PHP正在从服务器加载字体,以便在图像上写文本。从服务器加载字体

加载字体的所有示例,我在the manual或迄今为止的搜索中都看到过,明确命名字体(例如Arial.ttf)。我的PHP目前使用的是同一个目录中的字体,但是我希望通过不强制部署它的人来包含字体文件来使PHP更容易移植。因此,我想让PHP使用的字体已经在服务器上安装了

是否有设施(核心)PHP来确定服务器上安装了哪些字体?如果没有,是否有办法让服务器加载逻辑字体(Serif,Sans-Serif,Monospaced等)?

  1. 注意:可以执行上述操作的PHP API无意义。这将需要上传/安装API,并且打败了“使其变得简单”的意图。只有使用核心PHP的解决方案才有用。
+1

这不便携,便携性较差。永远不要假设服务器上预装了任何字体,特别是只有ssh访问权限的系统级别字体混乱的服务器。如果您的应用程序依赖于特定的字体,请将其与它捆绑在一起,或者如果该字体的许可证不允许,请告诉用户他们可以编辑'.ini'文件或其他内容来设置字体的位置用过的。 –

+1

我当然可以做到这一点。 PHP核心不使用字体(它不知道如何处理它们),但像ImageMagic,pdf生成器等扩展可以与它们一起工作。如果重要的部分是他们在浏览器中使用了字体,那么这是一个webfont定位问题,而不是真正的PHP问题。 –

回答

2

这种方法可能会让事情变得更加便携,而不是更加便携:您不能真正依赖给定系统上存在的字体,但更重要的是,考虑到很多PHP安装都采用SSH - 仅VPS或共享主机服务,可用的任何系统字体的几率相当低(没有GUI意味着字体通常只是混乱)。

如果您的应用程序依赖于特定的字体,请将其与您的版本绑定,或者如果字体许可证不允许(对于Microsoft所拥有的Arial,这一定是正确的),您的发布文档可以告诉他们必须自己将文件放入特定目录(例如./resources/fonts),或让脚本根据环境中的位置或.ini文件或其他内容获取字体,以便人们可以指向它们的本地副本字体存在。

也就是说,PHP本身并不使用字体(它不知道该如何处理它们),但像ImageMagic,pdf生成器等服务器上的PHP扩展可以与它们一起工作。另一方面,如果重要的部分是字体在浏览器中正确加载,当用户调用你的PHP脚本并且他们发送了一个通过它与你的代码库交互的网页时,那么这就是一个webfont位置问题(只要确保页面代码PHP生成点到可解析的URL),而不是PHP问题。

作为一个对应的“PHP的API,可以做上述不感兴趣这需要上传/安装的API,并击败“可以很容易的意图。”声明:PHP使用PEAR为包管理。这通常是"pear install dependencyname"的事情,所以没有什么困难甚至不方便。

+1

特别感谢在最后一段中的澄清。似乎我正在做出一些不正确的假设! –