簡體   English   中英

Qt/Qml Frobihser 字體在 Linux 和 Windows 環境中的行為不同

[英]Qt/ Qml Frobihser font behaving differently in Linux and Windows environment

我編寫了一個 qtquickapplication 示例程序來在給定的矩形內顯示文本“無”。 矩形邊框顏色設置為紅色以可視化文本“無”是否在給定的寬度和高度內正確擬合。

我分別為 Windows 和 Linux 環境編譯了相同的程序。 我被奇怪的行為困住了。

使用相同的代碼和字體 (Frobisher),文本“無”在矩形邊界內正確匹配,但在 Windows 環境中被截斷。

這是什么原因? 為什么字體表現不同? 我錯過了什么嗎?

Qt Linux 環境輸出 Qt Windows 環境輸出

主程序

#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();
}

主文件

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"
    }
}
}

確保您在兩個系統中都有該字體。 至少檢查addApplicationFont的返回值。

使用pixelSize替代的pointsize可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM