qt - QML FontLoader.name 混淆
问题描述
我从 Google Fonts 下载了项目文件夹中的两个 .ttf 文件:
- 蒙特塞拉特-ExtraLight.ttf
- 蒙特塞拉特-布莱克.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
...
}
}
}
问题是 themyCustomFont1.name
和 themyCustomFont2.name
是相同的,即“蒙特塞拉特”,我没有任何解决方案来区分它们。因此,即使我指定了正确的 FontLoader-s id-s,第二个文本也将具有与第一个文本相同的 font.family。有可能以某种方式解决这个问题吗?
解决方案
这不是一个理想的解决方案,而是一个应该有效的解决方法。有一个名为FontForge的开源字体编辑器,您可以使用它来更改 Qt 读取的名称。打开有问题的字体文件,然后打开菜单Element->Font Info
。这将打开一个对话框,左侧有多个选项卡。第一个选项卡应该是PS Names
. 这应该列出几个字段,包括Fontname
和Family Name
。您应该能够将它们编辑为您想要的任何内容。然后关闭该对话框并用于File->Generate Fonts
重新生成 .ttf 文件。
推荐阅读
- analytics - 跟踪退出时的用户获取 - Google Analytics
- python - 每台服务器的特定经济性
- powerbi - 非不同表的产量 - Easy PowerBi
- meshlab - MeshLab:使用四边形网格重新划分网格,其中网格间距与主曲率成反比
- python - cv2.resize 错误 "(-215:Assertion failed) !dsize.empty()" 用于 16 位图像,但不适用于 8 位图像
- json - 在控制台中打印 JSON 而不是 XML,以进行测试
- python - 如何在 tkinter 中查看和取消查看密码
- puppeteer - Headless Puppeteer - 避免被 Akamai 检测到
- php - 有没有办法为 php echo 消息添加优先级?
- java - 文件编写器分隔符问题在扫描第一行后引发异常