本页内容

font QML Value Type

具有QFont 所列属性的字体值。 font 类型指具有QFont 所列属性的字体值。更多...

Import Statement: import QtQuick

属性

详细说明

font 类型的属性默认采用应用程序的默认值font 。

示例:

    Text {
        font.family: "Helvetica"
        font.pointSize: 13
        font.bold: true
    }

由于font 是一种structured value 类型,因此也可以使用JavaScript对象进行构造:

    readonly property font myFont: ({
        family: "Helvetica",
        pointSize: 13,
        bold: true
    })

在与 C++ 集成时,请注意:从 C++ 传递到 QML的任何 `QFont ` 值都会自动转换为 `font ` 值,反之亦然。

该值类型由QtQuick 导入提供。

另请参阅 QML 值类型。

属性文档

bold : bool

字体是否为粗体。

capitalization : enumeration

文本的首字母大写。

常量描述
Font.MixedCase常规情况:不进行大小写转换
Font.AllUppercase将文本更改为全部大写形式
Font.AllLowercase将文本更改为全部小写字体
Font.SmallCaps将文本渲染为小写大写字体
Font.Capitalize将文本修改为每个单词的首字母大写
Text { text: "Hello"; font.capitalization: Font.AllLowercase }

contextFontMerging : bool [since 6.8]

如果所选字体不包含某个特定字符,Qt 会自动选择一种外观相似且包含该字符的备用字体。默认情况下,此操作按字符逐个进行。

这意味着在某些不常见的情况下,即使文本属于同一字符集,也可能使用多种不同的字体来呈现同一字符串。将 `contextFontMerging ` 设置为 `true` 时,系统将尝试查找能匹配输入字符串最大子集的备用字体。对于存在缺失字形的字符串,此操作的开销会更大,但可能提供更一致的结果。 默认情况下,contextFontMerging 的值为false 。

该属性自 Qt 6.8 起引入。

另请参阅 QFont::StyleStrategy 。

family : string

该字体的字体家族名称。

字体家族名称不区分大小写,可选地包含字体厂商名称,例如“Helvetica [Cronyx]”。 如果该字体家族由多家字体厂商提供,且未指定具体厂商,则会随机选择一家。如果该字体家族不可用,系统将通过字体匹配算法设置一个字体家族。

features : object [since 6.6]

在根据内容调整文本形状时,将整数值应用于特定的 OpenType 特征。这提供了对字体调整过程的高级访问权限,可用于支持 API 中未涵盖的字体特征。

字体特征通过一个从四字母标签到整数值映射表来表示。在大多数情况下,随标签传递的该整数值代表一个布尔值:值为零表示该特征已禁用,非零值表示已启用。不过,对于某些字体特征,该值可能有其他含义。 例如,当应用于salt 功能时,该值是一个索引,用于指定要使用的样式替代方案。

例如,frac 字体功能会将用斜杠分隔的斜体分数(如1/2 )转换为不同的表示形式。通常,这会将整个分数“压缩”为单个字符宽度(如½ )。

如果字体支持frac 功能,则可以在shaper中通过以下代码启用该功能:

Text {
    text: "One divided by two is 1/2"
    font.family: "MyFractionFont"
    font.features: { "frac": 1 }
}

可以在同一映射中为多个特性分配值。例如,若还希望禁用该字体的字距调整,可以按以下方式明确禁用:

Text {
    text: "One divided by two is 1/2"
    font.family: "MyFractionFont"
    font.features: { "frac": 1, "kern": 0 }
}

您还可以将字体属性收集到一个对象中:

Text {
    text: "One divided by two is 1/2"
    font: {
        family: "MyFractionFont"
        features: { "frac": 1, "kern": 0 }
    }
}

注意:默认情况下, Qt会根据其他字体属性来启用或禁用某些字体功能。特别是,kern 功能将根据font::kerning 属性来启用或禁用。此外,如果设置了font.letterSpacing,则所有连字功能(liga 、clig 、

dlig,hlig )在设置了 font.letterSpacing 时将被禁用,但仅限于连字仅用于装饰效果的书写系统。对于必须使用连字的书写系统,这些功能将保持默认状态。 使用 `font.features ` 设置的值将覆盖默认行为。例如,如果将 `"kern" ` 设置为 1,则无论 `font::kerning ` 属性是否设置为 false,字间距调整都将始终启用。同样,

如果将其设置为0 ,则字间距将始终被禁用。

该属性在 Qt 6.6 中引入。

另请参阅 QFont::setFeature()。

hintingPreference : enumeration

文本的首选提示设置。

这是向底层文本渲染系统提供的提示,用于指定使用特定级别的提示处理,且不同平台对该功能的支持程度各不相同。更多详细信息请参阅QFont::HintingPreference 文档中的表格。

注意:此 属性仅在与渲染类型 `Text.NativeRendering` 配合使用时才生效。

常量描述
Font.PreferDefaultHinting使用目标平台的默认提示级别。
Font.PreferNoHinting如果可能,渲染文本时不对字形轮廓进行提示处理。文本布局在排版上将非常精确,使用与打印时相同的度量标准。
Font.PreferVerticalHinting如果可能,在不进行水平提示的情况下渲染文本,但将字形在垂直方向上对齐到像素网格。 在显示密度过低、无法准确呈现字形的情况下,文本将显得更加清晰。但由于字形的水平度量未经过提示处理,因此文本的布局可扩展到更高密度的设备(如打印机)上,而不会影响换行等细节。
Font.PreferFullHinting如果可能,请在水平和垂直方向都使用提示来渲染文本。 文本会进行调整以优化在目标设备上的可读性,但由于度量值取决于文本的目标大小,字形的位置、换行及其他排版细节将不会随比例调整,这意味着文本布局在像素密度不同的设备上可能会呈现不同的外观。
Text { text: "Hello"; renderType: Text.NativeRendering; font.hintingPreference: Font.PreferVerticalHinting }

italic : bool

该字体是否具有斜体样式。

kerning : bool

在调整文本形状时,启用或禁用字间距(kerning)OpenType 功能。禁用此功能可在创建或修改文本时提高性能,但会牺牲部分视觉效果。默认值为true 。

Text { text: "OATS FLAVOUR WAY"; font.kerning: false }

letterSpacing : real

该字体的字间距。

字符间距会改变字体中单个字符之间的默认间距。正值会将字符间距增加相应像素数;负值则会减少该间距。

pixelSize : int

以像素为单位的字体大小。

使字体依赖于设备。请使用pointSize 以与设备无关的方式设置字体大小。

pointSize : real

字体大小以点为单位。点数必须大于零。

preferShaping : bool

有时,字体会对一组字符应用复杂的规则,以确保其正确显示。 在某些书写系统中(例如婆罗米文系),这是确保文本可读性的必要条件;但在拉丁字母等系统中,这仅仅是一种美观功能。当不需要这些功能时,将preferShaping 属性设置为false将禁用所有此类功能,这在大多数情况下都能提升性能。

默认值为true 。

Text { text: "Some text"; font.preferShaping: false }

preferTypoLineMetrics : bool [since 6.8]

提供字体ascent 、descent 和leading 的几组相互竞争的垂直线度量值。这些通常被称为win(Windows)度量值和typo(排版)度量值。 虽然规范建议使用typo 度量值来控制行间距,但许多应用程序更倾向于使用win 度量值,除非在字体的fsSelection字段中设置了USE_TYPO_METRICS 标志。出于向后兼容性的考虑,Qt 应用程序也是如此。 对于将USE_TYPO_METRICS 标志设为有效以表明typo 度量有效的字体,以及win 度量与typo 度量相匹配的字体,这并不构成问题。然而,对于某些字体,win 度量可能大于理想的行间距,且USE_TYPO_METRICS 标志可能因疏忽而未被设置。对于此类字体,设置font.preferTypoLineMetrics 可能会获得更佳的效果。

默认情况下,preferTypoLineMetrics 的值为false 。

该属性在 Qt 6.8 中引入。

另请参阅 QFont::StyleStrategy 。

strikeout : bool

该字体是否具有删除线样式。

styleName : string

字体的样式名称。

样式名称不区分大小写。如果设置了该属性,系统将根据样式名称来匹配字体,而不是根据字体属性font.weight 、font.bold 和font.italic 。

underline : bool

该文本是否被划了下划线。

variableAxes : object [since 6.7]

将浮点数值应用于可变字体的可变轴。

可变字体提供了一种在同一字体文件中存储多种变体(具有不同的字重、字宽或样式)的方法。这些变体以浮点数值的形式表示,对应于一组预定义的参数,称为“可变轴”。 具体变体通常由字体设计师命名,在 Qt 中,可以通过 setStyleName() 像选择传统子字体家族一样来选择这些变体。

在某些情况下,为不同的轴提供任意值也很有用。例如,如果一种字体有 Regular 和 Bold 子字体家族,您可能希望获得介于两者之间的字重。此时,您可以通过为字体的“wght”轴提供自定义值来手动请求该字重。

Text {
    text: "Foobar"
    font.family: "MyVariableFont"
    font.variableAxes: { "wght": (Font.Normal + Font.Bold) / 2.0 }
}

如果字体支持“wght”轴,且给定的值在其定义的范围内,系统将提供对应字重为 550.0 的字体。

许多字体都提供了一些标准轴,例如“wght”(字重)、“wdth”(字宽)、“ital”(斜体)和“opsz”(光学尺寸)。每个轴在字体本身中都有各自定义的范围。 例如,“wght”的范围可能为 100 到 900(QFont::Thin 到QFont::Black ),而“ital”的范围则为 0 到 1(从非斜体到完全斜体)。

字体还可以选择定义自定义轴;唯一的限制是名称必须符合QFont::Tag 的要求(即由四个 Latin-1 字符组成的序列)。

默认情况下,未设置任何可变轴。

注意:在 Windows上 ,如果使用可选的 GDI 字体后端,则不支持可变轴。

该属性在 Qt 6.7 中引入。

另请参阅 QFont::setVariableAxis()。

weight : int

请求的字体粗细。请求的粗细必须是1到1000之间的整数,或以下预定义值之一:

常量描述
Font.Thin100
Font.ExtraLight200
Font.Light300
Font.Normal400(默认)
Font.Medium500
Font.DemiBold600
Font.Bold700
Font.ExtraBold800
Font.Black900
Text { text: "Hello"; font.weight: Font.DemiBold }

wordSpacing : real

该字体的词间距。

单词间距会改变单词之间的默认间距。正值会将单词间距相应地增加若干像素,而负值则会相应地缩小单词间距。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.