0

我的应用程序使用Pango、Cairo 和 GTK3 显示字符串。其中一些字符串包含一些特殊字符,包括一个不在 Unicode 基本平面中的字符。在 Linux 上这只是工作,但在 Windows 上找不到特殊字符并显示未知字符框。

我使用 Roboto 作为文本,但它不包含这些字符。使用我在这里找到的一个技巧,我发现在 Linux 上,底层fontconfig库故障转移到SymbolicaSTIX

FC_DEBUG=4 pango-view -q -t '{字符}' 2>&1 | grep -o '家庭:“[^”]+' | 切-c 10- | 尾-n 1

我尝试在 Windows 机器上安装这些字体,但没有任何乐趣。

我的 Windows 机器正在运行包含 fontconfig 文件的Mingw-w64/etc/fonts但它们似乎没有做正确的事情。不幸的是pango-view,似乎并没有注意那里的 FC_DEBUG 环境变量,所以我不知道它在做什么。

如何告诉 Windows 上的 fontconfig 从哪里获取 Roboto 不提供的代码点的字形?

更新:我已将相关字符串的AttrFallback设置为 True,以防万一 Pango 构建在 Linux 和 Windows 上对此进行不同处理。仍然没有运气。

4

1 回答 1

1

我仍然不知道为什么这在 Windows 和 Linux 中的工作方式不同,但答案竟然隐藏在Pango.FontDescription.set_family文档中:

在 pango.FontDescription 的某些用法中,也可以为此字段使用逗号分隔的姓氏列表。

当我在逗号分隔的列表中添加所需的后备字体时,它起作用了。

于 2018-11-16T10:45:07.263 回答