python unicode渲染: how to know if a unicode character is missing from the font

标签 python unicode fonts

在 Python 中,当我渲染一个 unicode 字符时,例如一个汉字,选择了字体,对于常见的unicode字符,有时字体不完整,无法呈现有问题的unicode字符。在那些情况下,如果我调用“print”函数,输出通常看起来就像一个方框,不管底层的 unicode 字符应该是什么样子。

当然,一旦我打印了 unicode 字符,我就可以查看输出,然后确定所选字体是否遗漏了特定的 unicode 字符。但是有没有一种方法可以在我打印之前自动判断,而不必借助我自己的肉眼来确定字体中是否包含一个字符?

我还要澄清,我知道比其他字体更完整的字体。我的问题不是我可以使用哪种字体,这样如果我调用“打印”,我通常会有一个合理的输出。也请忽略我如何打印字符或我是否真的想打印字符的问题。我的问题很简单,对于任何给定的字体,我如何判断字体中是否缺少 unicode 字符,而不使用依赖于人对输出的判断的任何手动过程。

最佳答案

参见 https://unix.stackexchange.com/questions/247108/how-to-find-out-which-unicode-codepoints-are-defined-in-a-ttf-file

简而言之,可以安装 fonttools 包,为其提供任何感兴趣的 .ttf 字体文件的路径,并检查字体文件的 unicode 映射表中是否包含感兴趣的 unicode 字符的长格式。

from fontTools.ttLib import TTFont
font = TTFont(fontpath)   # specify the path to the font in question


def char_in_font(unicode_char, font):
    for cmap in font['cmap'].tables:
        if cmap.isUnicode():
            if ord(unicode_char) in cmap.cmap:
                return True
    return False

然后只需调用char_in_font 函数来检查字体中是否包含unicode 字符。

关于python unicode渲染: how to know if a unicode character is missing from the font,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834362/

相关文章:

android - Android 浏览器/GUI(古吉拉特语)上的印度语呈现不当

python - 匹配数字时,我似乎没有在 python 的正则表达式中得到正确的结果

python - 如何将 tf.while_loop() 用于 tensorflow 中的可变长度输入?

Python-类型错误 : object of type 'NoneType' has no len()

mysql - Python MySQL 插入 unicode

linux - 如何使用免费的 Linux 命令行工具将字体嵌入到 PDF 中?

Python:如何获得 HH:MM 格式的两个日期的差异?

unicode - 好的,我已经阅读了所有 unicode/mako 帖子,但我仍然可以使用这个简单的代码

通过 chromebook 终端访问的远程机器上的 MySQL 返回无意义的 unicode,它在我离开 MySQL 后仍然存在

svg - 如何展平 SVG 文件