C

font QML基本类型

字体配置。 更多信息...

描述字体配置的字体类型。可用的属性有

在使用Monotype Spark字体引擎时,字体配置使用字体类映射规则

另请参阅文本渲染和字体Qt.font()。

此基本类型由QtQuick导入提供。

使用示例

Text {
    font.family: "Helvetica";
    font.pixelSize: 24;
    font.bold: true
}

常量字体配置

注意: 静态字体引擎只支持常量字体配置。

常量字体配置是指通过qmltocpp将字体的一系列子属性解析为常量值的情况。因此,绑定到只读属性是允许的。例子:

readonly property int titlePixelSize: 40
readonly property font myFontConfig: Qt.font({ pixelSize: titlePixelSize })

Text {
    text: "hello world"
    font.pixelSize: titlePixelSize
}

Text {
    text: "hello world 2"
    font: myFontConfig
}

Text {
    text: "hello world 3"
    font.italic: true
}

Qt Quick Ultralite或字体引擎特定细节

绑定

从版本1.7开始,可以使用Spark字体引擎在字体子属性上定义绑定。

Text {
    text: "Hello world from Qt"
    font.italic: italicSwitch.checked
    font.pixelSize: pixelSizeSlider.value
}

有关如何将绑定评估映射到字体映射文件中字体类名称的更多细节,请参阅字体绑定示例。

两个字体引擎都允许对字体属性进行绑定。例如

readonly property font fontConf1: Qt.font({ pixelSize: 30 })
readonly property font fontConf2: Qt.font({ pixelSize: 50 })

Text {
    // Binding on font property.
    font: someCondition ? fontConf1 : fontConf2
    text: "some text"
}

这允许使用静态引擎在运行时更改字体,尽管没有使用Spark引擎那样对字体子属性绑定进行细微控制的灵活性。

优化

可以通过共享相同的字体配置(Text.font)来优化内存使用,其中文本使用相同的样式。另请参阅Qt.font()。

Text {
    // Sharing the font configuration with other Text element through a binding.
    font: myText.font
    text: "some text"
}

常量字体配置在生成的C++代码中被自动共享。

分配

Qt Quick Ultralite 中,字体基本类型是常量值,因此不支持对字体子属性的赋值。

// error: Assigning to properties of 'font' is not supported, use bindings
onClicked: myText.font.italic = false

如错误信息中所建议,可以使用绑定来实现相同的结果。

property bool isItalic: true

Text {
    text: "hello world"
    font.italic: isItalic
}

MouseArea {
    anchors.fill: parent
    onClicked: isItalic = false
}

读取

未实现读取字体子属性。

字体属性

字体家族

设置字体的家族名称。默认的字体家族由 MCU.Config.defaultFontFamily 设定。

静态字体引擎

家族名称不区分大小写,可以包含字体制造商的名称。例如,"Helvetica [Cronyx]"。如果家族来自多个制造商,并且没有指定制造商,则选择任意制造商。如果家族不可用,将使用字体匹配算法设定家族。

Spark 字体引擎

当使用Fontmap 文件格式时,会读取 MCU.Config.defaultFontFamily QmlProject 属性的值。否则,仅使用字体像素大小配置。

字体粗体

设置字体是否加粗。

字体斜体

设置字体是否具有斜体风格。

字体点大小

已知问题或限制页面所述,pointSize属性不尊重屏幕DPI。当前设置的值被简单地缩放至1.5倍。建议使用font.pixelSize代替。

字体像素大小

设置字体大小(以像素为单位)。

字体unicode覆盖范围

仅在 Qt.font() 上下文中支持此属性。

注意: unicodeCoverage 属性的意义取决于所使用的字体引擎。有关字体引擎特定详细信息,请参阅文本渲染和字体

MCU.Config.autoGenerateGlyphs一起使用此属性以优化ROM使用。

数组可能包含

  • 包含要添加的符号的字面量字符串,如 "\u1722"。
  • Unicode块枚举值,如 Font.UnicodeBlock_Kannada。有关支持枚举值的列表,请参阅Unicode块名称
  • 指示Unicode范围的成对列表,如 [0x600, 0x61F]

示例

Text {
    font: Qt.font({
        family: "DejaVu Sans",
        unicodeCoverage: [Font.UnicodeBlock_Kannada, "ᜠᜡ\u1722", [0x600, 0x61F]]
    })
    text: CppSingleton.retrieveText()
}

在先前的示例中,为 Text 项目使用的字体配置预先渲染了许多额外Unicode码点的符号。这些信息编译到应用程序的二进制文件中。包括 "Kannada" Unicode块中的码点,码点范围0x600到0x61F(包含),以及单个字符ᜠ、ᜡ和U+1722。

即使码点包含在多个范围、块或字符串中,也只为每个码点生成一个符号。

字体重量

设置字体的重量。支持以下枚举

  • 字体.细
  • 字体.非常轻
  • 字体.轻
  • 字体.正常
  • 字体.中等
  • 字体.半粗体
  • 字体.粗体
  • 字体.非常粗
  • 字体.黑色

字体质量

字体的渲染质量。

font.quality属性通过提供对渲染低质量符号的提示,支持更细致的优化。

请求的质量必须为预定义值之一

  • 字体.质量非常低
  • 字体.质量非常高

示例

Text {
    font: Qt.font({ quality: Font.QualityVeryHigh })
    text: "..."
}

注意: quality属性只能在Qt.font()函数中设置。

注意:该功能可能不在所有参考板上的硬件上得到支持。有关更多信息,请参阅支持功能表。

优化

默认情况下,字体编译器为所有使用的字体配置中所有使用的字符生成符号。这可能导致生成重复的符号。例如

Text {
    font: Qt.font({ quality: Font.QualityVeryHigh })
    text: "a"
}
Text {
    font: Qt.font({ quality: Font.QualityVeryLow })
    text: "b"
}

在上面的例子中,为"ab"字符生成了两次符号,一次为VeryHigh质量,另一次为VeryLow质量。这允许在现有的Text项之间绑定文本属性。您可以通过将MCU.Config.autoGenerateGlyphs设置为OFF来禁用此行为。

要设置应用程序的默认字体质量,请参阅MCU.Config.defaultFontQuality QmlProject属性。

在某些Qt许可证下可用。
了解更多。