Шрифт Qt / Qml Frobihser ведет себя по-разному в среде Linux и Windows - PullRequest
0 голосов
/ 27 января 2020

Я написал пример программы qtquickapplication для отображения текста "none" в данном прямоугольнике. Цвет границы прямоугольника установлен на красный, чтобы визуализировать, правильно ли помещается текст «нет» в пределах заданной ширины и высоты или нет.

Я скомпилировал ту же программу для windows и Linux отдельно. Я застрял со странным поведением.

При одинаковом коде и шрифте (Frobisher) текст «none» правильно помещается внутри границы прямоугольника, но усекается в среде Windows.

В чем причина? Почему шрифт ведет себя по-другому? Я что-то пропустил?

Qt Linux environment output Qt Windows environment output

main. cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtFontDatabaseSupport/QtFontDatabaseSupport>

int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));

QFontDatabase::addApplicationFont("FrobisherNormal.ttf");

engine.load(url);

return app.exec();
}

main .qml

import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.14
Window {
visible: true
width: 300
height: 200
title: qsTr("Hello World")

Rectangle
{
    width: 65
    height: 32
    border.color: "red"
    anchors.centerIn: parent

    Text {
        id: txt
        text: "none"
        font.family: "Frobisher"
        font.pointSize: 20
        font.bold: false
        anchors.verticalCenter: parent.verticalCenter
        verticalAlignment: "AlignVCenter"
    }
}
}

1 Ответ

0 голосов
/ 28 января 2020

Убедитесь, что у вас есть шрифт в обеих системах. По крайней мере, проверьте возвращаемое значение addApplicationFont .

Использование pixelSize вместо pointSize может быть полезным.

...