【发布时间】:2011-09-12 16:00:00
【问题描述】:
我有一个使用 GD2 创建图像的 PHP 脚本。它使用 TrueTypeFont 文件在图像中生成带有imagettftext(和imagettfbbox)的文本。
这个脚本可以在 Windows 和 Linux 机器上运行,所以我决定将一个 TTF 文件从 Windows/Fonts 目录复制到源代码中,否则我不知道在哪里寻找它。
我对这个解决方案一点也不满意,但我不知道有更好的解决方案。
但真正的问题是,在 Windows/Apache 上,字体文件在使用一次后就会被锁定。解锁它的唯一方法是重新启动 Apache。锁定是个问题,因为我无法在需要时删除文件,如果您使用的是版本系统,这尤其令人讨厌。
所以我的问题有 3 个解决方案:
- 有没有办法避免在 Windows/Apache 上锁定字体文件(在源代码/webroot 中)?
- 或者有没有办法避免复制字体文件并使用本机可用的 TrueTypeFont? (尽可能独立于操作系统,可能的主机是 Windows 和 Linux - Mac,不是那么多)
- 或者有没有办法避免使用 TrueTypeFont 并且仍然使用 PHP GD2 获得漂亮的(别名)文本?
--
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.1.9
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
【问题讨论】:
-
几年前我遇到了同样的问题,但不记得我是如何解决的。今晚我会检查我的存档硬盘,看看我是否能找到它的代码,但不记得它只是解决锁定问题还是防止它的实际解决方案。
-
拜托了!我非常想奖励赏金而不是让它付诸东流^^
-
@Frits van Campen 恐怕我要让你失望了。在我之前的项目中没有解决方案,相反,我最终在 OS tmp 文件夹中创建了一个包含字体文件内容的副本。那时我已经对它进行了相当多的研究,除非此后发生任何变化,否则问题是 FreeType 库打开了一个字体处理程序并且它不会再次关闭它。有没有在bugs.php.net/bug.php?id=24450 中评论了这个错误链接。如果您不想使用我使用的临时文件解决方案,我建议您尝试使用其他 2 个选项。
-
感谢您的评论。至少知道其他人花时间在上面但找不到解决方案会有所帮助(“没有解决方案”也是我问题的答案)。我将研究临时文件的解决方法。如果有人对其他 2 个选项有任何想法,请随时分享!我很想奖励这个赏金。
-
嗯,是的,计划永远不会重启:D