Qt QML FontLoader.name混淆
我从Google Fonts下载了项目文件夹中的两个.ttf文件:Qt QML FontLoader.name混淆,qt,fonts,qml,loader,Qt,Fonts,Qml,Loader,我从Google Fonts下载了项目文件夹中的两个.ttf文件: 蒙特塞拉特-ExtraLight.ttf 蒙特塞拉特-布莱克 我适当地设置了.qrc文件,以便包含这两个文件 假设我有下一个.qml文件: import QtQuick 2.7 import QtQuick.Layouts 1.2 import QtQuick.Controls.Universal 2.0 Rectangle{ id: rectangle height: 500
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。
是否有可能以某种方式解决此问题?这不是一个理想的解决方案,但应该是一个可行的解决方案。有一个名为的开源字体编辑器,可以用来更改Qt读取的名称。打开有问题的字体文件,然后打开菜单
Element->font-Info
。这将打开一个对话框,左侧有多个选项卡。第一个选项卡应该是PS name
。这应该列出几个字段,包括Fontname
和Family Name
。你应该能够编辑那些你想要的。然后关闭该对话框,并使用文件->生成字体
重新生成.ttf文件。这不是一个理想的解决方案,但应该是一个可行的解决方案。有一个名为的开源字体编辑器,可以用来更改Qt读取的名称。打开有问题的字体文件,然后打开菜单Element->font-Info
。这将打开一个对话框,左侧有多个选项卡。第一个选项卡应该是PS name
。这应该列出几个字段,包括Fontname
和Family Name
。你应该能够编辑那些你想要的。然后关闭该对话框并使用File->Generate font
重新生成.ttf文件。设置font.weight
是否对您有效?对于此特定字体,设置font.weight
是否对您有效?对于此特定字体,是否没有任何效果?对于此应用程序,请使用thx。我在我的Mac上安装了它,并按照您的指示更改了这些字段。但是现在FontLoader名称是完全空白的。没有名字…不知道为什么会这样。我做的时候没遇到过这个问题,太好了。希望它能起作用,直到你找到更好的解决方案。在我玩了新的FontForge应用程序之后,我意识到应该在哪里进行修改:应该像你说的那样导航,比如:File->Element->Font-Info
,在PS-Names
中不应该碰任何东西,而是应该进入TTF-Names
中特定表格如果存在行首选族,应根据需要修改名称。如果没有,则应创建一个名为这样的新行,并在其中填充所需的新字体名称。再次感谢。考虑到你的答案足够好,我将结束这个问题。好吧,这个应用程序的thx。我在我的Mac上安装了它,并按照您的指示更改了这些字段。但是现在FontLoader名称是完全空白的。没有名字…不知道为什么会这样。我做的时候没遇到过这个问题,太好了。希望它能起作用,直到你找到更好的解决方案。在我玩了新的FontForge应用程序之后,我意识到应该在哪里进行修改:应该像你说的那样导航,比如:File->Element->Font-Info
,在PS-Names
中不应该碰任何东西,而是应该进入TTF-Names
中特定表格如果存在行首选族,应根据需要修改名称。如果没有,则应创建一个名为这样的新行,并在其中填充所需的新字体名称。再次感谢。考虑到你的回答足够好,我将结束这个问题。