QML字体加载器无法工作

8
我试图使用QML内置的FontLoader元素加载自定义字体,但没有成功。
我已经尝试使用OTF和TTF字体,结果相同。
这些字体与项目文件在同一个目录中。只有一个QML,主要是这个FontLoader所在的地方。
应该看起来像这样:
这是我的代码:
import QtQuick 2.0

Rectangle {
    width: 360
    height: 360

    FontLoader {
        id: cFontLoader
        source: "./fontlol.ttf"
    }

    Text {
        id: testText
        anchors.centerIn: parent
        text: "Hello Fonts!"
        font.family: cFontLoader.name
        font.pointSize: 32
    }
}

好的,看起来使用单一风格如Bebas Neue还可以。问题在于我们需要使用Helvetica Neue LT Pro,它有各种子样式:http://puu.sh/27fq9/e42b7c3004我该如何指定我想要的那个? - Andrew
在打印屏幕上,我看到了.otf文件。 - progpow
2
我很久以前就解决了这个问题,但是忘记回帖了。由于某种原因,QML不喜欢某些字体文件。它们在其他应用程序、网络等中都可以正常工作,但在QML中根本无法呈现。我从未能够弄清楚为什么,但我确实成功找到了一个可行的字体包。只是试错而已。 - Andrew
3个回答

6
我在使用Qt/QML时遇到了字体处理方面的头疼问题,其中“多样子样式”的字体似乎是根本问题。当我需要访问Qt中的某个特定字体样式时,通过使用fontforge创建一个自定义版本,将所需样式重命名为“normal”,似乎可以解决该问题。

2

我也遇到过这个问题,但是我的情况是因为我添加了“name”属性。当我删除name时,字体开始显示。


1
不知道为什么这个被踩了...我也遇到了同样的问题:原来我们不能覆盖字体的名称。感谢提示。 - Michael

1
QML的文本组件通过字体名称来识别字体。然而,如果您加载不同类型的字体,通常字体元数据中的字体名称是相同的。
文本组件有一个属性font.styleName,您可以使用它来访问字体的不同类型。
FontLoader{id: loader source: "AwesomeFont-Bold.ttf"}
Text
{
    font.family: loader.name
    font.styleName: "Bold"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接