Pango + Cairo + Fontconfig在Visual Studio中使用时存在字体渲染问题,在GCC下可以正常工作。

3

我有一个大问题,希望你能帮助我。

我正在将一款游戏从Linux移植到Windows,使用MinGW可以正常工作(除了一些崩溃问题,但这不是我的问题)。

游戏使用Fontconfig(2.4.2-3)、Cairo(1.8.8)和Pango(1.26.0)来呈现文本。

问题在于,使用Visual Studio时,我无法看到字体(所有字符都显示为小方框),输出中显示如下:

** (performous.exe:4344): CRITICAL **: No modules found:
No builtin or dynamically loaded modules were found.
PangoFc will not work correctly.
This probably means there was an error in the creation of:
  'D:\Project\PerformousInstall-vc\etc\pango\pango.modules'
You should create this file by running:
  pango-querymodules > 'D:\Project\PerformousInstall-vc\etc\pango\pango.modules'


** (performous.exe:4344): WARNING **: couldn't load font "Bitstream Charter Not-Rotated 18px", falling back to "Sans Not-Rotated 18px", expect ugly output.

** (performous.exe:4344): WARNING **: couldn't load font "Sans Not-Rotated 18px", falling back to "Sans Not-Rotated 18px", expect ugly output.

** (performous.exe:4344): WARNING **: All font fallbacks failed!!!!

** (performous.exe:4344): WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderWin32', script='latin'

** (performous.exe:4344): WARNING **: All font fallbacks failed!!!!

这个错误只出现在我使用 Visual Studio 时,但因为它已经帮我修复了很多其他的 bug,我非常有兴趣让字体在 VS 下工作。

如果我漏掉了什么或者没有发帖子,请原谅,因为我不知道该发布什么。

有人有一些提示吗?

提前感谢您的帮助,如果我的表达不清楚,请随时问我。

1个回答

3
你需要设置Pango正在使用的字体,以确保其在Windows机器上实际存在。Bitstream和Sans都不存在,这就是Pango告诉你的(它的默认字体是Sans)。尝试将其设置为Segoe UI,然后你应该能看到文本。

谢谢回复,我尝试了那个方法,现在我只有这个错误:(performous.exe:4344):警告:无法选择字体,预计输出效果不佳。引擎类型='PangoRenderWin32',脚本='latin'不知道该怎么解决。也许可以尝试使用“Arial”和“Verdana”,但都没有效果。关于模块错误呢?我在Google上找不到任何有用的信息。 - Xaldyz
进入 GNOME IRC 的 Pango 房间 "#pango" 或邮件列表,那里的人非常乐于助人和友好。 - Ana Betts
1
好的,问题已解决:将在MinGW下编译的pango生成的“module-*”复制到Visual C++的pango目录中,将第二行反转并将每个组的四个元素交换位置,然后编译即可。如果有人遇到问题,请随时与我联系。感谢Paul的回答。 - Xaldyz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接