【问题标题】:ImageMagick not rendering all Unicode charactersImageMagick 不呈现所有 Unicode 字符
【发布时间】:2015-10-14 19:09:25
【问题描述】:

我想用 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 中只是一个问号。没有特殊标记,只是一个问号。它适用于其他一些字符,例如这些特殊的括号:⟨⟩ 27e827e9,但下一对不再起作用。

我需要做什么才能启用字体提供的所有字符?我是不是设置错字体了?

我的发行版是 LMDE。

【问题讨论】:

    标签: linux unicode imagemagick imagemagick-convert


    【解决方案1】:

    使用 bash 和 unicode,我总是需要退后一步,多做一步。

    echo -n ᐇ | hexdump
    

    这给了我正确的十六进制三元组

    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
    

    但是,这会产生以下图像 ,因为该角色不属于 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
    

    Additional info关于ᐇ

    不包含此字形可能有一个完全正当的理由。礼貌的做法是联系 DejaVu 团队,询问这是一个错误,还是包含在其他地方。 IRC & Mailing lists 是一个好的开始。

    【讨论】:

    • 您好,谢谢您的回答。您可以阻止echo 使用-n 标志打印“\n”(如我的回答中所示)。我不知道\u 转义是否是zsh 特定的,但是echo 肯定会传递正确的输入进行转换。我的猜测是convert 没有使用某种回退机制。在更高的平面上有点奇怪:字素占据了不止一个字符宽度。 echo "\u33D6\n\u33D6\e[2GWow" 打印㏖,然后在下一行再次打印,但开始在中间写“哇”(我将光标移动到中间的位置 2)。
    • 短问:你知道一种方法来确定(快速)给定的字符(比如这里的)是否被覆盖通过字体文件与否? (我知道以一种复杂、冗长、间接的方式来确定它的方法......)提到一个命令行工具以一种我还不知道的非常简单的方式执行的奖励积分......
    • @KurtPfeifle 我认为 FontConfig 是您正在寻找的。我不熟悉,但请查看手册页中的fc-catfc-matchfc-queryfc-scan 等。我记得其中一个可以打印出 ASCII 表,如果没有列出 unicode 支持。跨度>
    • 哦,我过去曾涉足过fc-*-commands。它们大多很难处理... :-( 另请参阅:lists.freedesktop.org/archives/fontconfig/2013-September/…(我目前首选(间接)方法是使用ttx 转储字体的 CMAP 表,如下所示:ttx -t cmap -d . /path/to/fontfile,然后打开文件./fontfile.ttx...)
    • 啊,我忘了说:我没有找到任何选项来获取fc-*.command 来枚举字体文件中包含的所有字形和相关字符名称...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2016-04-27
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2021-03-10
    相关资源
    最近更新 更多