php - ImageMagick unicode 字体在 Linux 上安装不起作用

标签 php linux unicode fonts imagemagick

我在 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.

更新 自从通过这篇文章的评论获得帮助以来,我了解到:

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

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

  3. 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/

相关文章:

php - Laravel 粗鲁显示为空

python - FIFO(命名管道)消息传递障碍

java - 如何在不使用第三方库的情况下转义java字符串中的unicode字符

javascript - 如何引用 php 文件中未在 <form> 中提及的元素

php - 我的登录页面上的数据丢失?

javascript - 当内容到达div底部时如何将div中的内容打包以向右移动

linux - 使用配置文件的 bash 命令的别名

找不到 C 中 malloc() 和 calloc() 之间的区别(从虚拟机 Linux 运行)

oracle - 显示来自 oracle varchar2 的字符串的十六进制值?

python - 安装 Mayavi : UnicodeEncodeError: 'charmap' codec can't encode character