2
检测文本中缺少的字形
我编写了一个Python3应用程序,该调用程序fortune捕获并捕获输出以在屏幕通知中显示。 当当前字体中不存在相应的字形时,某些时运会包含带有十六进制数字的正方形。每个正方形代表缺失字形的十六进制Unicode代码点的表示形式。 我想在显示给用户之前删除十六进制文本。我希望找到一些Python API,该API可让我逐字符检查文本,以确定类似char.isValidCodePoint()或类似的内容,但我找不到类似的东西。 我在这里找到了一个可能要研究的解决方案,但是fonttools通过终端安装后,我的Python程序无法导入fonttools/fontTools。 有什么想法-使用Python API还是调用终端? 更新#1:从那以后,我意识到fonttools上面链接中的示例代码对我不起作用,因为它是Python2。我想如果fonttools可以以某种方式使用它,我可以从我的Python3脚本中调用一个Python2解释器。 更新#2:经过大量阅读(请参阅下面的参考资料),我找到了,fc-match但是它不能始终唯一地标识所使用的字体。我获得了Python中的当前字体: from gi.repository import Gio fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" ) 导致Ubuntu 11。将此结果pango-view与十六进制字符一起传递,我得到了包括在内的字体列表Ubuntu。我认为如果字形不是由字体呈现的,则该字体不应出现在pango-view!的结果中 参考文献: 如何找出fc-match如何配对? 找出fontconfig用于特定字符的后备字体 我凝视着fontconfig,fontconfig凝视着我