我有一个Qt嵌入式应用程序,我在OpenSuse 11.4中开发,我需要加载一个TTF字体文件。但是,当我调用int QFontDatabase::addApplicationFont()
函数时,它会返回-1
。
阅读文档后,我发现目前不支持在没有fontconfig的Unix / X11平台上添加应用程序字体。
我通过YaST检查了我是否安装了fontconfig,并且已安装 - 但我不认为它是相关的因为我使用的是qt嵌入式库。我想我必须有fontconfig支持qt嵌入式库,但我该怎么做?
fontconfig甚至支持qt-embedded?谁能告诉我发生了什么事?
答案 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,要么试图支持灯塔。