PathText QML Type
以指定字体定义字符串。更多
Import Statement: | import QtQuick |
Since: | QtQuick 2.15 |
属性
- font.bold : bool
- font.capitalization : enumeration
- font.contextFontMerging : bool
(since 6.8)
- font.family : string
- font.features : object
(since 6.6)
- font.italic : bool
- font.kerning : bool
- font.letterSpacing : real
- font.pixelSize : int
- font.pointSize : real
- font.preferShaping : bool
- font.preferTypoLineMetrics : bool
(since 6.8)
- font.strikeout : bool
- font.styleName : string
- font.underline : bool
- font.variableAxes : object
(since 6.7)
- font.weight : int
- font.wordSpacing : real
- text : string
- x : real
- y : real
详细说明
该元素用指定字体定义指定字符串的形状。文本的基线将被转换为 x 和 y 坐标,字体的轮廓也将相应地添加到路径中。
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 | 更改文本,使每个单词的第一个字符为大写字符PathText { text: "Hello"; font.capitalization: Font.AllLowercase } |
font.contextFontMerging : bool |
如果所选字体不包含特定字符,Qt 会自动选择包含该字符的相似字体。默认情况下,这是在逐个字符的基础上进行的。
这意味着在某些不常见的情况下,即使是在同一个脚本中,也可能会使用多种不同的字体来表示一串文本。如果将contextFontMerging
设置为 true,就会尝试查找与输入字符串最大子集相匹配的后备字体。这对字形缺失的字符串来说代价较高,但可能会得到更一致的结果。默认情况下,contextFontMerging
是false
。
此属性在 Qt 6.8 中引入。
另请参阅 QFont::StyleStrategy 。
font.family : string |
设置字体的族名。
族名不区分大小写,可选择包含代工厂名称,例如 "Helvetica [Cronyx]"。如果有一个以上的字体代工厂提供该族,但未指定代工厂,则会任意选择一个代工厂。如果没有可用的族,则将使用字体匹配算法设置一个族。
font.features : object |
在根据features 中的内容塑造文本时,为特定 OpenType 特征应用整数值。这为字体整形过程提供了高级访问权限,可用于支持 API 未涵盖的字体特征。
字体特征由四字母标记到整数值的映射表示。在大多数情况下,与标签一起传递的整数值代表一个布尔值:零值表示禁用该功能,非零值表示启用该功能。但对于某些字体功能,它可能有其他解释。例如,当应用于salt
功能时,该值是一个索引,用于指定要使用的替代样式。
例如,frac
字体功能会将用斜线分隔的对角线分数(如1/2
)转换为不同的表示方法。通常情况下,这需要将完整的分数转换为单个字符宽度(如½
)。
如果字体支持frac
功能,则可以在整形器中启用该功能,如下代码所示:
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
功能的启用/禁用将取决于QFont 的font.kerning 属性。此外,如果设置了font.letterSpacing ,所有连字功能(liga
,clig
,dlig
,hlig
)都将禁用,但仅限于使用连字作为装饰的书写系统。对于需要使用连线的书写系统,这些功能将保持默认状态。使用font.features
设置的值将覆盖默认行为。例如,如果"kern"
设置为 1,那么无论font.kerning 属性是否设置为 false,都将始终启用分隔符。同样,如果将其设置为0
,则将始终禁用。
此属性在 Qt 6.6 中引入。
另请参阅 QFont::setFeature().
font.italic : bool |
设置字体是否具有斜体样式。
font.kerning : bool |
在塑造文本时启用或禁用分隔 OpenType 功能。禁用该功能可提高创建或更改文本时的性能,但会牺牲一些外观特性。默认值为 true。
PathText { text: "OATS FLAVOUR WAY"; font.kerning: false }
font.letterSpacing : real |
设置字体的字母间距。
字母间距可更改字体中单个字母之间的默认间距。正值增加相应像素的字母间距,负值减小间距。
font.pixelSize : int |
以像素为单位设置字体大小。
使用此功能会使字体取决于设备。使用pointSize
可以独立于设备设置字体大小。
font.pointSize : real |
以点为单位设置字体大小。点的大小必须大于零。
font.preferShaping : bool |
有时,字体会对一组字符应用复杂的规则,以正确显示这些字符。在某些书写系统(如婆罗门文字)中,为了使文字清晰易读,必须这样做,但在拉丁字母等文字中,这只是一种外观特征。将preferShaping
属性设置为 false 将在不需要时禁用所有此类功能,这将在大多数情况下提高性能。
默认值为 true。
PathText { text: "Some text"; font.preferShaping: false }
font.preferTypoLineMetrics : bool |
竞争垂直线度量集,提供字体的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 |
为可变字体中的可变轴应用浮点数值。
可变字体提供了一种在同一字体文件中存储多个变量(具有不同的重量、宽度或样式)的方法。这些变化以浮点数值的形式给出,用于一组预定义的参数,称为 "变量轴"。具体实例通常由字体设计者命名,在 Qt Designer 中,可以使用 setStyleName() 来选择这些实例,就像传统的子家族一样。
在某些情况下,为不同轴提供任意值也很有用。例如,如果一种字体有普通和粗体两个子字体,您可能需要一个介于这两种字体之间的权重。这时,您可以通过为字体中的 "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 (四个拉丁-1 字符的序列)的要求。
默认情况下,不设置可变轴。
注意: 在 Windows 系统中,如果使用了可选的 GDI 字体后端,则不支持可变轴。
此属性在 Qt 6.7 中引入。
另请参阅 QFont::setVariableAxis().
font.weight : int |
设置字体的权重。
权重可以是
常量 | 说明 |
---|---|
Font.Thin | 100 |
Font.ExtraLight | 200 |
Font.Light | 300 |
Font.Normal | 400 (默认值) |
Font.Medium | 500 |
Font.DemiBold | 600 |
Font.Bold | 700 |
Font.ExtraBold | 800 |
Font.Black | 900PathText { text: "Hello"; font.weight: Font.DemiBold } |
font.wordSpacing : real |
设置字体的字间距。
字间距更改单个字之间的默认间距。正值会相应增加字间距的像素数,负值会相应减少字间距。
y : real |
PathText 基线的垂直位置。
注意: 该属性指的是文本基线的位置,而不是文本边界框的顶部。这可能会引起一些混淆,例如在使用PathText 和Qt Quick Shapes 时。请参阅FontMetrics ,了解如何获取字体的坡度,从而将文本转换到预期位置。
© 2025 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.