在linux上的ImageMagick unicode字体安装无法正常工作

时间:2011-01-31 11:34:27

标签: php linux unicode fonts imagemagick

我在CentOS linux服务器上安装了ImageMagick。

我正在尝试让ImageMagick将unicode(非罗马)字体转换为图像。 我可以使用基于罗马/拉丁语的字体执行此操作,但不能使用非拉丁语,例如中文。

编辑*当我尝试转换非拉丁字体时,它们会显示为垃圾,例如%$ ?? W * ??

我在系统上安装了unicode字体,并将ImageMagick type.xml文件更新为 反映这一点(我也更新了我的定位数据库)。

当我跑(在我的shell中):#identify -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.

更新 自从通过对这篇文章的评论获得帮助后,我学会了:

  1. ImageMagick能够转换unicode非拉丁字符 这是通过linux命令行将希伯来语传递给ImageMagick来测试的。

  2. 因此问题在于ImageMagick PHP模块能够解释unicode非拉丁文本。

  3. php文件本身具有支持UTF-8的所有必要元素,实际上创建了一个 具有从相同文本varible派生的文件名的文件我传递给ImageMagick进行图像创建。 php以非拉丁语unicode文本成功保存在我的服务器上。

  4. 我在网上四处看看,但在此问题上无法找到有关此问题的任何信息 使用ImageMagick PHP模块以unicode非拉丁字体文本创建和映像。

    这可能是一个ImageMagick错误吗?任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

这个问题的解决方案是在我之前未在PHP中看到的编码问题中找到的。 基本上我将字符串拆分成单独的字符,并且需要以不会的方式这样做 销毁2字节的unicode字符。

我没想到要为那些试图帮我解决这个问题的人展示我的其余代码 对我来说是一个很大的错误。吸取教训。