我有一个运行Linux的嵌入式ARM系统。我已经成功地在我的目标上构建并安装了Qt 5.3.1,并且我能够构建Qt应用程序并运行/调试它们。请注意,我的目标没有安装X,正在使用的QPA是eglfs(如果这很重要)。
屏幕上显示的任何文本都显示为一系列方形字符。我怀疑字体没有正确定位/加载。我找不到很多关于这个主题的文件。
不幸的是,没有用于解决此问题的错误消息!所以,我有以下问题:
以下是我运行的一些代码,看看我是否可以了解Qt认为它对可用字体的影响:
QFontDatabase db;
foreach (const QString &fam, db.families()) {
foreach (const QString &style, db.styles(fam)) {
std::cout << fam.toStdString() << std::endl;
QString sizes;
foreach (int points, db.smoothSizes(fam, style))
sizes += QString::number(points) + " ";
std::cout << sizes.trimmed().toStdString() << std::endl;
}
}
输出:
Monospace
Normal
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Italic
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Oblique
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Sans Serif
Normal
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Italic
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Oblique
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Serif
Normal
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Italic
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
Oblique
6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 36 48 72
答案 0 :(得分:3)
似乎你缺少字体渲染引擎。
Qt在哪里寻找字体?
根据Qt embedded reference document on fonts,
如果fontconfig不可用,例如在专用嵌入式系统中 ......,Qt将回归使用 QBasicFontDatabase。在这种情况下,Qt应用程序将查找字体 在Qt的lib / fonts /目录
中
因为你能够列出它们看来这些字体确实在Qt的lib/fonts/
子目录中。
现在您需要确保拥有FreeType 2字体引擎,Qt用于字体渲染。您是否在启用-qt-freetype
的情况下编译?查看configure page了解更多信息。
是否有某种字体后备方案?...是否选择了最近的字体&#34;?
没有字体&#34;距离&#34;。我希望只要找到这些字体就会加载某种优先级。
是否有工具报告特定的各种字体 应用程序需要,以便我可以确保他们的目标?
我不确定是否可能。但您可以使用查看可用的字体
&#34;工具中的QConfig
工具&#34; Qt源的子目录。