我的应用程序使用潘戈、Cairo和GTK3显示字符串。其中一些字符串包含一些特殊字符,包括一个不在Unicode基本平面中的字符。在Linux上,这只是起作用,但在Windows上,它无法找到特殊字符,而是显示未知字符框。
我使用Roboto作为文本,但它不包括这些字符。使用一个技巧I 在这里发现的,我发现在Linux上底层的fontconfig库会失败到塞姆利卡或斯蒂克斯。
FC_DEBUG=4 pango-查看-q -t '{character}‘2>&1 \ grep -o’家族:"^"+‘\{}\、\
我试过在Windows机器上安装这些字体,但没有joy。
我的Windows机器正在运行明威-W64,它附带了包含fontconfig文件的/etc/fonts,但是它们似乎没有做正确的事情。不幸的是,pango-view似乎没有注意到那里的FC_DEBUG环境变量,所以我无法知道它在做什么。
我如何告诉Windows上的fontconfig如何获取Roboto不提供的代码点的符号呢?
更新:我已经将所讨论的字符串上的AttrFallback设置为True,以防Pango构建在Linux和Windows上对此有不同的处理方式。还是没有运气。
发布于 2018-11-16 10:45:07
我仍然不知道为什么这在Windows和Linux中的工作方式不同,但答案却隐藏在Pango.FontDescription.set_family文档中:
在pango.FontDescription的某些用法中,也可以为该字段使用逗号分隔的姓氏列表。
当我在逗号分隔的列表中添加所需的回退字体时,它起了作用。
https://stackoverflow.com/questions/53285313
复制相似问题