Qt:无法加载TTF文件

时间:2011-08-16 11:31:56

标签: c++ qt true-type-fonts opensuse fontconfig

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

这正是我们用于PhantomJS的技术,因此它在Linux上运行headlessly(没有X11),同时仍然利用Fontconfig(因此也FreeType)文字呈现。

不幸的是我觉得Qt 4.5太老了,无法运行Lighthouse。要么转到4.8,正式支持QPA,要么试图支持灯塔。