Qt:无法加载TTF文件

7
我有一个Qt-embedded 应用程序,我在OpenSuse 11.4中开发,在这个应用程序中,我需要加载TTF字体文件。但是,当我调用 int QFontDatabase::addApplicationFont() 函数时,它返回-1
阅读文档后,我发现在没有fontconfig的Unix/X11平台上添加应用程序字体目前不受支持。
我通过YaST检查了我是否安装了fontconfig,它已经被安装了 - 但我认为这与我使用的qt-embedded库无关。我想我必须要让fontconfig 支持qt-embedded库,但我该怎么做?
fontconfig是否支持qt-embedded?有人能告诉我发生了什么吗?

1
你能用“fc-list”命令确认你的字体是否被fontconfig列出吗? - O.C.
如果它不在列表中怎么办?下一步是什么? :) - Owen
1
在列表中找到合适的字体,或从yast安装字体。您甚至可以将字体路径添加到正在运行的X中,并使用xrdb重新加载它。因此,man xset和man xrdb会告诉您详细信息。 - Peter Varga
顺便说一下,我正在使用4.5.3 qt-embedded库构建此应用程序。而不是OpenSuse预装的QT。 - Owen
如果不在列表中,QT 就无法加载它!明确记录了 QT 使用 fontconfig 数据库来加载字体。我认为使用 qt-embedded 没有任何区别。 - O.C.
字体配置(fontconfig)是否支持嵌入式 QT? - Owen
1个回答

5
你可以使用QPA或Qt平台抽象(以前称为Lighthouse)。您需要创建一个实现(可以作为插件或直接使用)QPlatformIntegration的自定义QPlatformFontDatabase。这里的诀窍是重用Qt对QFontconfigDatabase的现有实现(它只是QBasicUnixFontDatabase的子类)。
这正是我们在PhantomJS中使用的技术,使其在Linux上无需X11即可正常工作headlessly,同时利用Fontconfig(因此也是FreeType)进行文本渲染。
很遗憾,我认为Qt 4.5太旧了,无法运行Lighthouse。要么升级到官方支持QPA的4.8版本,要么尝试将Lighthouse进行回溯移植。

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