我有一个使用免费提供的Encode Sans font的QML应用,它有9个与Qt 5.6's font weights匹配的权重。
我已将所有.ttf添加到我的项目中,并使用FontLoader
加载它们。除了字体的轻薄外,一切都很完美。
除了下面的代码,我还尝试在FontLoader for Thin上提供一个唯一的id
,以确保姓氏相同(确实如此)。如何调试此问题并使Thin工作?
### main.qml
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-Thin.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-ExtraLight.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-Light.ttf" }
FontLoader { id:mainFont; source:"qrc:/fonts/encodesans/EncodeSans-Regular.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-Medium.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-SemiBold.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-Bold.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-ExtraBold.ttf" }
FontLoader { source:"qrc:/fonts/encodesans/EncodeSans-Black.ttf" }
Column {
TextLine { weight:"Thin" }
TextLine { weight:"ExtraLight" }
TextLine { weight:"Light" }
TextLine { weight:"Normal" }
TextLine { weight:"Medium" }
TextLine { weight:"DemiBold" }
TextLine { weight:"Bold" }
TextLine { weight:"ExtraBold" }
TextLine { weight:"Black" }
}
### TextLine.qml
import QtQuick 2.0
Text {
property string weight
text: "1 2 3 4 font.weight: Font."+weight
color:"white"
font {
weight: Font[weight]
family: mainFont.name
pixelSize: 36
}
}
在Ubuntu上使用Qt 5.6,如果重要的话。
答案 0 :(得分:2)
这是一个Qt错误:in codepen
您可以使用的一种解决方法是使用Qt 5.6中引入的[QTBUG-53196] Thin fonts do not work in Qt。
这种方法的缺点是,如果你的文本中有一些嵌入的粗体(使用html或富文本),它就不会工作(如果我正确地理解了这个styleName
property)。
你可以像这样使用它:
### TextLine.qml
import QtQuick 2.0
Text {
property string weight
text: "1 2 3 4 font.weight: Font."+weight
color:"white"
font {
styleName: weight
family: mainFont.name
pixelSize: 36
}
}