- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 Python 中,当我渲染一个 unicode 字符时,例如一个汉字,选择了字体,对于常见的unicode字符,有时字体不完整,无法呈现有问题的unicode字符。在那些情况下,如果我调用“print”函数,输出通常看起来就像一个方框,不管底层的 unicode 字符应该是什么样子。
当然,一旦我打印了 unicode 字符,我就可以查看输出,然后确定所选字体是否遗漏了特定的 unicode 字符。但是有没有一种方法可以在我打印之前自动判断,而不必借助我自己的肉眼来确定字体中是否包含一个字符?
我还要澄清,我知道比其他字体更完整的字体。我的问题不是我可以使用哪种字体,这样如果我调用“打印”,我通常会有一个合理的输出。也请忽略我如何打印字符或我是否真的想打印字符的问题。我的问题很简单,对于任何给定的字体,我如何判断字体中是否缺少 unicode 字符,而不使用依赖于人对输出的判断的任何手动过程。
最佳答案
简而言之,可以安装 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/
我是一名优秀的程序员,十分优秀!