Qt:无法加载 TTF 文件

发布于 2024-11-29 16:32:11 字数 359 浏览 7 评论 0原文

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

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

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

fontconfig 是否支持 qt 嵌入?谁能告诉我发生了什么事吗?

I have a Qt-embedded application that I develop in OpenSuse 11.4 where I need to load a TTF font file. However when I call int QFontDatabase::addApplicationFont() function, it's returning -1.

Upon reading the documentation, I found out that adding application fonts on Unix/X11 platforms without fontconfig is currently not supported.

I checked through YaST whether I have fontconfig installed, and it is installed - but I don't think it's related coz I'm using a qt-embedded library. I'm thinking I gotta have fontconfig support qt-embedded library, but how do I do that?

Does fontconfig even support qt-embedded? Can anybody tell me what's going on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一笔一画续写前缘 2024-12-06 16:32:11

您可以使用 QPA 或 Qt 平台抽象(以前称为 灯塔)。您需要创建一个公开自定义 QPlatformFontDatabase 的 QPlatformIntegration 实现(可以作为插件或直接使用)。这里的技巧是重用 Qt 现有的 QFontconfigDatabase 实现(它只是 QBasicUnixFontDatabase 的子类)。

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

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

You can use QPA or Qt Platform Abstraction (formerly known as Lighthouse). You need to create an implementation (could be made as a plugin or just being used directly) of QPlatformIntegration which exposes a custom QPlatformFontDatabase. The trick here is to reuse much of Qt's existing implementation of QFontconfigDatabase (which is just as subclass of QBasicUnixFontDatabase).

This is exactly the technique we use for PhantomJS so that it works headlessly (without X11) on Linux while still leveraging Fontconfig (and thus also FreeType) for text rendering.

Unfortunately I think Qt 4.5 is too old to run Lighthouse. Either move to 4.8 which officialy supports QPA or try to backport Lighthouse.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文