首页 > 解决方案 > 为什么在嵌入式 linux 上运行的 Qt 应用程序的“ascender”行上方的字体会被削减?

问题描述

更新在其他测试之后,我验证了下面的这个问题与字体渲染中的一些问题有关。
所以最后我选择了一个更简单的解决方案:我编辑了将“上升”线向上移动的字体,现在所有符号都在这条线下。现在我可以正确看到所有符号了!

==================================================== ==========================

我在嵌入式设备上正确可视化字体 Helvetica Neue LT Std Font 时遇到了一些问题。问题是我看不到字体上升区域中的字符部分,例如我看不到字符“À”的重音。但也例如,字符“ê”上方的符号 ^ 被剪切。使用 fontdrop.info 检查字体我可以确认被剪切的字符部分是上升区域中的部分。

如果我在 PC 上运行该应用程序,它工作正常。我的嵌入式设备基于 iMx6 ULL 处理器。屏幕分辨率为 800x480。

“上升区”的含义 在此处输入图像描述

我确认显示的字体是正确的。我尝试编辑将符号移动到“上升”行下方的“À”上方的字体,这样符号就可见了。所以我可以确认问题出在符号的可视化或上升区域中的字符部分的可视化中。

主文件

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QFont>
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    QFont font("HelveticaNeueLTStd");
//    font.setStretch(QFont::Condensed);
    app.setFont(font);
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

main.qml

import QtQuick 2.6
import QtQuick.Window 2.2

Window {
    visible: true
    width: 800
    height: 480
//    FontLoader { id: fixedFont; name: "HelveticaNeueLTStd" }

    Text {
        id: textEdit
        text: qsTr("212Àê\u222B")
        font.pointSize: 24
        verticalAlignment: Text.AlignVCenter
        anchors.top: parent.top
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.topMargin: 20
//        font.family: fixedFont.name
    }
}

PC 与嵌入式示例 在此处输入图像描述

也许不是 Qt 问题,而是我的嵌入式系统上某些字体管理配置的问题?请帮忙!

标签: linuxqtfontsembeddedembedded-linux

解决方案


推荐阅读