如何在Qt for Embedded Linux中定位和使用字体
How to locate and use fonts in Qt for Embedded Linux?
这个问题可能与这个问题有关:QT在哪里查找字体?
我正在使用Ubuntu 14.04和Qt for Embedded 4.8,我想在全局范围内更改我的应用程序的字体,但我只能使用我安装的字体中的一小部分。
我的应用程序的样式是从一个CSS文件加载的,我在其中写道:
QWidget {
font-family: "DejaVu Sans"; /*or any other font*/
}
问题是Qt似乎无法找到我安装的字体。根据文档"为嵌入式Linux应用程序部署Qt",Qt应用程序在lib/fonts/目录中查找字体,特别是查找名为fontdir的文件。我不知道这个文件是关于什么的,也找不到。我的字体完整路径(用于调试构建)是:/usr/local/Tolltech/QtEmbedded-4.8.6-x86-dbg/lib/fonts
我使用Qt 4.8文档中的QFontDatabase来打印我所有可用的字体。不幸的是,输出是:
DejaVu Sans: Normal (11)
fixed: Normal (7 12)
helvetica: Normal (8 10 12 14 18 24) Italic (8 10 12 14 18 24) Bold (8 10 12 14 18 24) Bold Italic (8 10 12 14 18 24)
japanese: Normal (23)
micro: Normal (4)
unifont: Normal (16)
但我安装了更多的字体。例如,DejaVu Sans也存在于bold和其他类型中,但只找到"Normal"类型。以下是我的字体文件夹中的一小部分字体(这些字体也位于用于发布和调试的Qt文件夹中):
couri.pfa
cour.pfa
cursor.pfa
dejavu_sans_11_50.qpf2
DejaVuSans-BoldOblique.ttf
DejaVuSans-Bold.ttf
DejaVuSansMono-BoldOblique.ttf
DejaVuSansMono-Bold.ttf
DejaVuSansMono-Oblique.ttf
DejaVuSansMono.ttf
DejaVuSans-Oblique.ttf
DejaVuSans.ttf
DejaVuSerif-BoldOblique.ttf
VeraMono.ttf
VeraSeBd.ttf
VeraSe.ttf
Vera.ttf
fontdir文件用于什么?我需要它吗?我如何创建它?
我该怎么做才能让Qt找到我所有安装的字体?
有没有一种方法可以简单地使用我感兴趣的字体的副本,并将其放入应用程序的子目录中,将其视为图标,这样我就不必摆弄所有的系统位置了?
编辑:根据这个线程,我认为我也不支持TTF字体。我查看了一下我的字体,发现所有的*.qpf和*.qpf2字体都找到了。因此,我将尝试将我的TTF转换为QPF。
fontdir文件是用来做什么的,我需要它吗?我该如何创建它?
只有在使用QPF字体时才需要此文件,QPF字体是Qt特定的"轻量级"格式。Qt工具makeqpf使用该文件(据我所知)。
我该怎么做才能让Qt找到我所有安装的字体?
如果Qt是用编译的-没有freetype,则不能使用TTF字体,因此QFontDatabase找不到这些字体。要启用TTF支持,必须在没有此编译配置标志的情况下编译Qt。我已经重新编译了它,并且找到了/usr/local/Tolltech/QtEmbedded-4.8.6-x86-dbg/lib/fonts中的所有字体。
有没有一种方法可以简单地使用我感兴趣的字体的副本并将其放置进入我的应用程序的子目录,将其视为图标我不必到处乱搞所有的系统位置?
是的。可以简单地使用QFontDatabase::addApplicationFont,对于支持的字体格式,它不应该失败。
注意,我决定重新编译Qt,因为我不想破坏Qt中的makeqpf工具,该工具可用于将TTF字体转换为QPF格式。
- 在C++中测量postscript字体宽度
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 重新定位图像时如何前进到下一个内存块
- 流填充字符的默认定位
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- SetCurrentConsoleFontEx() 不适用于自定义安装的字体
- C++ wxWidgets:在创建小部件后设置字体
- C++ wxWidgets:更改大小器的字体
- C++ 位图中的 ttc 字体
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- NS3 - python.h 文件无法定位编译错误
- 更改 Windows GUI 中静态文本框的字体大小
- 设置我的应用程序 API 感知并防止系统使其模糊和错误定位
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- 如何获取控制面板设置值,如字体大小
- ExtTextOut 文本的持续闪烁,在一段时间后,文本将恢复为默认字体
- 使用 TTF_RenderText() 加载字体时获取段错误 TTF_OpenFontRW()
- 通知 Windows 系统应用程序字体已被卸载/删除
- 如何在Qt for Embedded Linux中定位和使用字体