我在 CentOS Linux 服务器上安装了 ImageMagick。
我正在尝试让 ImageMagick 将 unicode(非罗马)字体转换为图像。 我可以使用基于罗马/拉丁的字体来执行此操作,但不能使用非拉丁字体,例如中文。
编辑* 当我尝试转换非拉丁字体时,它们显示为垃圾,例如 %$??W*??
我已在系统上安装了 unicode 字体并将 ImageMagick type.xml 文件更新为 反射(reflect)这一点(我也更新了我的定位数据库)。
当我运行时(在我的 shell 中):# recognize -list Type
我可以看到我的字体已安装并且 ImageMagick 可以看到它们,但当我运行文本到图像转换 php 脚本时它们(非拉丁字体)仍然不起作用
我查看了另一篇与此相关的文章: Make ImageMagick recognize a font
但是在完成所有操作后我仍然遇到同样的问题。 请帮忙。
谢谢。
编辑: 这是与 imagemagick 初始化相关的一些代码:
$font = 'UNICODE.TTF';
/* Create imagickdraw object */
$draw = new ImagickDraw();
$draw->setFont($font);
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);
$draw->setFontSize(100);
$draw->setTextEncoding("UTF-8");
//and than there is a bunch of code I use to manipulate the image shadow etc.
更新 自从通过这篇文章的评论获得帮助以来,我了解到:
ImageMagick 能够转换 unicode 非拉丁字符 这是通过 Linux 命令行将希伯来语单词传递给 ImageMagick 进行测试的。
因此,问题在于 ImageMagick PHP 模块解释 unicode 非拉丁文本的能力。
php 文件本身具有支持 UTF-8 的所有必要元素,并且实际上创建了一个 文件的文件名源 self 传递给 ImageMagick 进行图像创建的相同文本变量。文件名已通过 php 以非拉丁 unicode 文本成功保存在我的服务器上。
我在网上查了一下,没有找到有关此问题的任何信息 使用 ImageMagick PHP 模块从 unicode 非拉丁字体的文本创建图像。
这可能是 ImageMagick 的错误吗?任何帮助,将不胜感激。谢谢。
最佳答案
此问题的解决方案是在此处未看到的编码问题中找到的,该问题稍后在我的 PHP 中出现。 基本上我将字符串分成单独的字符,并且需要以一种不会的方式这样做 销毁 2 字节 unicode 字符。
我不想向试图帮助我解决这个问题的人展示我的其余代码 对我来说是一个很大的错误。吸取的教训。
关于php - ImageMagick unicode 字体在 Linux 上安装不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850386/