本页内容

PathText QML Type

定义指定字体的字符串。更多...

Import Statement: import QtQuick
Since: QtQuick 2.15

属性

详细说明

该元素用于定义指定字体下指定字符串的形状。文本的基线将被转换为 x 和 y 坐标,并据此将字体的轮廓添加到路径中。

在“Shape”项中使用该元素渲染文本时,请注意以下事项:

  • 为了正确填充,应将ShapePath 的fillRule属性设置为ShapePath.WindingFill。
  • 并非所有字体都提供适合描边的漂亮轮廓。如果您希望获得描边轮廓但效果不理想,请尝试使用其他字体。
PathText {
    x: 0
    y: font.pixelSize
    font.family: "Arial"
    font.pixelSize: 100
    text: "Foobar"
}

另请参阅 Path 、QPainterPath::setFillRule 、PathPolyline 、PathQuad 、PathCubic 、PathArc 、PathAngleArc 、PathCurve 、PathSvg 以及PathMove 。

属性文档

font.bold : bool

设置字体粗细是否为粗体。

font.capitalization : enumeration

设置文本的大小写格式。

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

font.contextFontMerging : bool [since 6.8]

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

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

该属性在 Qt 6.8 中引入。

另请参阅 QFont::StyleStrategy 。

font.family : string

设置字体的字体家族名称。

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

font.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 属性。此外,如果设置了 ,则所有连字功能(liga 、clig 、

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

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

该属性在 Qt 6.6 中引入。

另请参阅 QFont::setFeature()。

font.italic : bool

设置字体是否具有斜体样式。

font.kerning : bool

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

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

font.letterSpacing : real

设置字体的字间距。

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

font.pixelSize : int

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

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

font.pointSize : real

设置以点为单位的字体大小。点大小必须大于零。

font.preferShaping : bool

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

默认值为true 。

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

font.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 。

font.strikeout : bool

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

font.styleName : string

设置字体的样式名称。

样式名称不区分大小写。若已设置,系统将根据样式名称匹配字体,而非根据字体属性font.weight 、font.bold 和font.italic 进行匹配。

font.underline : bool

用于设置文本是否带下划线。

font.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()。

font.weight : int

设置字体的粗细。

字重可以是以下值之一:

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

font.wordSpacing : real

设置字体的字间距。

单词间距会改变单词之间的默认间距。正值会将单词间距相应地增加相应像素数,而负值则会相应地减少单词间距。

text : string

此PathText 链接所指向的文本应包含大纲。

x : real

PathText 基线的水平位置。

y : real

PathText 的基线垂直位置。

注意:此 属性指的是文本基线的垂直位置,而非其边界框的顶部。这可能会造成一些混淆,例如在将PathText 与Qt Quick 的形状结合使用时。有关如何获取字体升高的信息,请参阅FontMetrics ,该信息可用于将文本平移至预期位置。

© 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.