QML不使用Thin字体粗细

时间:2016-06-01 15:38:50

标签: qt fonts qml

我有一个使用免费提供的Encode Sans font的QML应用,它有9个与Qt 5.6's font weights匹配的权重。

我已将所有.ttf添加到我的项目中,并使用FontLoader加载它们。除了字体的轻薄外,一切都很完美。

除了下面的代码,我还尝试在FontLoader for Thin上提供一个唯一的id,以确保姓氏相同(确实如此)。如何调试此问题并使Thin工作?

Screenshot of all weights being used. The Thin weight is listed first, and shows the same result as the Normal weight. All other weights vary as expected and look correct.

### 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,如果重要的话。

1 个答案:

答案 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
  }
}