如何在文本到图像处理中使用带有中文字体的 ImageMagick

How to use ImageMagick with Chinese fonts on Text to Image Handling

我尝试使用 ImageMagick 将中文字符处理为我 MacBook 上的图像。

我用命令查看系统可用的中文字体

convert -list font | grep Font

我没有收到。

从ImageMagick指南看Text to Image Handling,好像支持中文字体,比如ZenKaiUni

并且从我MacBook的应用字体相册中看到。中文字体真多

我觉得还行。怎么算出来的?

您可以告诉 ImageMagick 您系统上的所有字体,例如 this 然后如果您这样做它们就会显示:

convert -list font

那么你可以使用shorthand:

convert -font Arial ...

或者,您可以在每次调用的基础上告诉 ImageMagick 任何字体的完整路径:

printf "Hello" | convert -pointsize 72 \
   -font "/Applications/iMovie.app/Contents/Frameworks/Flexo.framework/Versions/A/Resources/Fonts/Zingende Regular.ttf" \
   label:@- result.png

你可能会用汉字的 Unicode 代替我的 "Hello".

我的系统上没有任何中文字体,但这里是我建议使用符号字体的示例。首先下载一个合适的 UTF-8 中文字体,即支持 UTF-8 字符的字体。然后打开一个 UTF-8 兼容的文本编辑器,选择该字体并键入您的字符串。例如,这是我在 Mac.

上使用 BBEdit UTF-8 兼容文本编辑器中的符号字体创建的 symbols.txt 文件的屏幕截图


然后使用 ImageMagick,

convert -size 100x -font "/library/fonts/GreekMathSymbols Normal.ttf" label:@symbols.txt symbol.gif


结果 symbol.gif 图像是:


添加 .utf8 作为文件后缀是不够的。您必须使用 UTF-8 兼容字体在 UTF-8 兼容文本编辑器中创建文本文件。

此外,大多数终端windows不支持UTF-8字符/字体。因此,直接在终端 window 的命令行中输入字符并不总是有效。参见 http://www.imagemagick.org/Usage/text/#unicode

您无法在 ImagMagick 中像 the font information it uses doesn't include language support 那样执行此操作,但在 Font Book.app 中创建一个 Smart Collection[=26 很容易=]如下:

在我的 Mac 我有 35 种字体,其中包括汉字。

(dimmed/greyed 字体可用,但需要先从 Apple 服务器下载才能使用,这是在任何应用程序中选择这些字体时自动完成的过程。)