7

我有一个在 OpenSuse 11.4 中开发的 Qt 嵌入式应用程序,我需要在其中加载 TTF 字体文件。但是,当我调用int QFontDatabase::addApplicationFont()函数时,它会返回-1.

阅读文档后,我发现目前不支持在没有 fontconfig 的 Unix/X11 平台上添加应用程序字体。

我通过 YaST 检查了是否安装了 fontconfig,并且它已安装 - 但我认为这与我使用的是 qt 嵌入式库无关。我想我必须让 fontconfig 支持 qt-embedded 库,但我该怎么做呢?

fontconfig 甚至支持 qt-embedded 吗?谁能告诉我发生了什么事?

4

1 回答 1

5

您可以使用 QPA 或Qt Platform Abstraction(以前称为Lighthouse)。您需要创建一个公开自定义 QPlatformFontDatabase的QPlatformIntegration的实现(可以作为插件或直接使用) 。这里的诀窍是重用 Qt 现有的QFontconfigDatabase实现的大部分(它是 QBasicUnixFontDatabase 的子类)。

这正是我们用于PhantomJS的技术,因此它可以在 Linux 上无头(没有 X11)工作,同时仍然利用Fontconfig(因此还有FreeType)进行文本渲染。

不幸的是,我认为 Qt 4.5 太旧而无法运行 Lighthouse。要么移动到官方支持 QPA 的 4.8,要么尝试向后移植 Lighthouse。

于 2012-12-25T03:21:31.463 回答