Warm tip: This article is reproduced from serverfault.com, please click

qt-QML FontLoader.name混淆

(qt - QML FontLoader.name confusion)

发布于 2020-11-28 16:55:50

我从Google字体下载了项目文件夹中的两个.ttf文件:

  1. 蒙特塞拉特-ExtraLight.ttf
  2. 蒙特塞拉特-布莱克.ttf

我正确设置了.qrc文件,以包含它们两者。

假设我有下一个.qml文件:

import QtQuick 2.7
import QtQuick.Layouts 1.2
import QtQuick.Controls.Universal 2.0

Rectangle{
        id: rectangle
        height: 500
        width: 700
          Column{
              FontLoader { id: myCustomFont1; source: "../Fonts/Montserrat/Montserrat-ExtraLight.ttf" }
              FontLoader { id: myCustomFont2; source: "../Fonts/Montserrat/Montserrat-Black.ttf" }
              Text{
                  ...
                  text: "Qt for python"
                  font.family: myCustomFont1.name
                  ...
              }
              Text{
                  ...
                  text: "Qt for c++"
                  font.family: myCustomFont2.name
                  ...
              }
          }
        
}

问题在于myCustomFont1.namemyCustomFont2.name是相同的,即“蒙特塞拉特”,我没有任何办法可以区分它们。因此,即使我指定了正确的FontLoader-s id-s,第二个文本也将具有与第一个文本相同的font.family。有可能以某种方式解决这个问题吗?

Questioner
Armonicus
Viewed
11
JarMan 2020-11-29 05:06:40

这不是理想的解决方案,但是应该可以解决。有一个名为FontForge的开源字体编辑器,可用于更改Qt读取的名称。打开有问题的字体文件,然后打开菜单Element->Font Info这将打开一个对话框,该对话框的左侧有多个选项卡。第一个标签应为PS Names这应该列出几个字段,包括FontnameFamily Name你应该可以将它们编辑为所需的任何内容。然后关闭该对话框并用于File->Generate Fonts重新生成.ttf文件。