ImageMagick无法呈现所有Unicode字符

时间:2015-07-24 07:50:54

标签: linux unicode imagemagick imagemagick-convert

我想用ImageMagick渲染小的单个字符图像。

我这样称呼它:

echo -n "\u1407" | convert -background black -fill white \
  -font /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
  -pointsize 12 label:@- gif:1407.gif

当我在我的终端上回显时,有这个字体(DejaVu-Sans-Mono)设置,我看到这个三角形:但是在GIF中只是一个问号。没有特殊标记,只是一个问号。它适用于其他一些角色,例如⟨⟩27e8 27e9,但下一对不再有效。

如何启用字体提供的所有字符,我需要做什么?我设置了错误的字体吗?

我的发行版是LMDE。

1 个答案:

答案 0 :(得分:2)

使用bash& unicode,我总是需要退一步,然后再做一步。

echo -n ᐇ | hexdump

这给了我正确的hex-triplet

0000000 e1 90 87

那么我在bash中的unicode转义序列就是..

echo -ne "\xE1\x90\x87"

(省略作为换行的0x0A)

echo -ne "\xE1\x90\x87" | convert -background black -fill white \
  -font /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf \
  -pointsize 12 label:@- gif:1407.gif

然而,这会产生以下图像character missing,因为角色不是 DejaVu Sans Mono 集合的一部分,但它是 DejaVu Sans 的一部分

echo -ne "\xE1\x90\x87" | convert -background black -fill white \
  -font /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf \
  -pointsize 12 label:@- gif:1407.gif

works

Additional info关于ᐇ

可能有一个完全正确的理由说明为什么不包含此字形。礼貌的事情是联系DejaVu团队,并询问这是一个错误,还是包含在其他地方。 IRC& Mailing lists是一个好的开始。