我从Google字体下载了项目文件夹中的两个.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.name
和myCustomFont2.name
是相同的,即“蒙特塞拉特”,我没有任何办法可以区分它们。因此,即使我指定了正确的FontLoader-s id-s,第二个文本也将具有与第一个文本相同的font.family。有可能以某种方式解决这个问题吗?
这不是理想的解决方案,但是应该可以解决。有一个名为FontForge的开源字体编辑器,可用于更改Qt读取的名称。打开有问题的字体文件,然后打开菜单Element->Font Info
。这将打开一个对话框,该对话框的左侧有多个选项卡。第一个标签应为PS Names
。这应该列出几个字段,包括Fontname
和Family Name
。你应该可以将它们编辑为所需的任何内容。然后关闭该对话框并用于File->Generate Fonts
重新生成.ttf文件。
好吧,这个应用程序的感谢。我将其安装在Mac上,并按照您的说明更改了这些字段。但是现在FontLoader名称绝对为空。没有任何名字...
不知道为什么会这样。完成此操作后,我还没有遇到任何问题。
伟大的。希望它能起作用,直到您找到更好的解决方案为止。
在我试用了新的FontForge应用程序之后,我意识到应该在哪里进行修改:应该像这样导航:
File->Element->Font Info
如您所说,不应触摸任何内容,PS Names
而应该进入TTF Names
该特定表中,如果存在的话,Preferred Family行 ,应根据需要修改名称。如果不是,则应创建一个新名称像这样的行,并在其中填入新的所需Font Name。再次感谢。考虑到您的回答足够好,我将结束问题。