gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:55:31 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com