PySide6.QtGui.QFont

class QFont

QFont 类指定了用于绘制文本的字体查询。More_

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QFont 可以被视为对系统上一个或多个字体的查询。

当你创建一个QFont对象时,你需要指定你希望字体具有的各种属性。Qt将使用具有指定属性的字体,如果没有匹配的字体存在,Qt将使用最接近的已安装字体。实际使用的字体属性可以从QFontInfo对象中获取。如果窗口系统提供了完全匹配的字体,exactMatch()将返回true。使用QFontMetricsF来获取测量值,例如使用QFontMetrics::width()获取字符串的像素长度。

未特别设置的属性不会影响字体选择算法,将优先使用默认值。

要加载特定的物理字体,通常由单个文件表示,请使用QRawFont代替。

请注意,在使用QFont之前,必须存在一个QGuiApplication实例。您可以使用QGuiApplication::setFont()来设置应用程序的默认字体。

如果选择的字体不包含需要显示的所有字符,QFont将尝试在最近的等效字体中查找这些字符。当QPainter从字体中绘制字符时,QFont将报告是否包含该字符;如果不包含,QPainter将绘制一个未填充的方块。

像这样创建QFonts:

serifFont = QFont("Times", 10, QFont.Bold)
sansFont = QFont("Helvetica [Cronyx]", 12)

在构造函数中设置的属性也可以在之后设置,例如 setFamily()setPointSize()setPointSizeF()setWeight()setItalic()。其余属性必须在构造后设置,例如 setBold()setUnderline()setOverline()setStrikeOut()setFixedPitch()QFontInfo 对象应在字体属性设置后创建。QFontInfo 对象不会改变,即使你更改了字体的属性。相应的“获取”函数,例如 family()pointSize() 等,返回设置的值,即使使用的值可能不同。实际值可以从 QFontInfo 对象中获取。

如果请求的字体家族不可用,您可以通过选择特定的StyleHintStyleStrategy来影响font matching algorithm,使用setStyleHint()。默认家族(对应于当前样式提示)由defaultFamily()返回。

您可以使用insertSubstitution()insertSubstitutions()为字体家族名称提供替换。可以使用removeSubstitutions()移除替换。使用substitute()检索家族的第一个替换,或者如果它没有替换,则检索家族名称本身。使用substitutes()检索家族替换的列表(可能为空)。替换字体后,您必须通过销毁并重新创建所有QFont对象来触发字体的更新。

每个QFont都有一个key(),你可以使用它,例如,作为缓存或字典中的键。如果你想存储用户的字体偏好,你可以使用QSettings,通过toString()写入字体信息,并通过fromString()读取它。operator<<()和operator>>()函数也可用,但它们适用于数据流。

可以通过setPixelSize()将屏幕上显示的字符高度设置为指定的像素数;然而,使用setPointSize()具有类似的效果,并且提供了设备独立性。

加载字体可能会很昂贵,尤其是在X11上。QFont 包含了广泛的优化,使得复制 QFont 对象变得快速,并且缓存了它所依赖的缓慢窗口系统函数的结果。

字体匹配算法的工作原理如下:

  1. 指定的字体家族(由setFamilies()设置)将被搜索。

  2. 如果没有,将选择一个支持该书写系统的替代字体。字体匹配算法将尝试为QFont中设置的所有属性找到最佳匹配。具体实现方式因平台而异。

  3. 如果系统上没有可以支持文本的字体,那么将显示特殊的“缺失字符”框来代替。

注意

如果所选字体虽然总体上支持书写系统,但缺少一个或多个特定字符的字形,那么Qt将尝试为这些特定字符找到备用字体。可以使用NoFontMerging样式策略禁用此功能。

在Windows中,对“Courier”字体的请求会自动更改为“Courier New”,这是Courier的改进版本,允许平滑缩放。可以通过设置PreferBitmap样式策略来选择较旧的“Courier”位图字体(参见setStyleStrategy())。

一旦找到字体,剩余的属性将按优先级顺序进行匹配:

如果您有一个字体在字体家族上匹配,即使其他属性都不匹配,这个字体也会优先于一个在字体家族上不匹配但在其他属性上匹配的字体被选择。这是因为字体家族是主要的搜索标准。

如果点大小在请求点大小的20%以内,则定义为匹配。当多个字体匹配并且仅通过点大小区分时,将选择与请求点大小最接近的字体。

用于绘制文本的实际字体家族、字体大小、粗细和其他字体属性将取决于窗口系统下所选家族可用的内容。可以使用QFontInfo对象来确定用于绘制文本的实际值。

示例:

f = QFont("Helvetica")

如果你同时拥有Adobe和Cronyx的Helvetica字体,你可能会得到其中一种。

f = QFont("Helvetica [Cronyx]")

您可以在字体名称中指定您想要的铸造厂。上述示例中的字体 f 将被设置为“Helvetica [Cronyx]”。

要确定窗口系统中实际使用的字体属性,请使用QFontInfo对象,例如。

info = QFontInfo(f1)
family = info.family()

要查找字体度量,请使用QFontMetrics对象,例如。

fm = QFontMetrics(f1)
textWidthInPixels = fm.horizontalAdvance("How many pixels wide is self text?")
textHeightInPixels = fm.height()

有关字体的更多一般信息,请参阅comp.fonts FAQ。有关编码的信息可以从UTR17页面找到。

class StyleHint

样式提示由font matching算法使用,以在所选字体家族不可用时找到合适的默认家族。

常量

描述

QFont.AnyStyle

让字体匹配算法选择字体系列。这是默认设置。

QFont.SansSerif

字体匹配器优先选择无衬线字体。

QFont.Helvetica

SansSerif 的同义词。

QFont.Serif

字体匹配器偏好衬线字体。

QFont.Times

Serif 的同义词。

QFont.TypeWriter

字体匹配器偏好固定宽度的字体。

QFont.Courier

TypeWriter 的同义词。

QFont.OldEnglish

字体匹配器偏好装饰性字体。

QFont.Decorative

OldEnglish 的同义词。

QFont.Monospace

字体匹配器更倾向于映射到CSS通用字体族‘monospace’的字体。

QFont.Fantasy

字体匹配器优先选择映射到CSS通用字体族‘fantasy’的字体。

QFont.Cursive

字体匹配器更倾向于映射到CSS通用字体族‘cursive’的字体。

QFont.System

字体匹配器优先选择系统字体。

class StyleStrategy

(继承自 enum.Flag) 样式策略告诉 font matching 算法应该使用哪种类型的字体来找到合适的默认字体家族。

以下策略可用:

常量

描述

QFont.PreferDefault

默认的样式策略。它不偏好任何类型的字体。

QFont.PreferBitmap

优先使用位图字体(而不是轮廓字体)。

QFont.PreferDevice

优先使用设备字体。

QFont.PreferOutline

偏好轮廓字体(相对于位图字体)。

QFont.ForceOutline

强制使用轮廓字体。

QFont.NoAntialias

不对字体进行抗锯齿处理。

QFont.NoSubpixelAntialias

尽可能避免在字体上使用子像素抗锯齿。

QFont.PreferAntialias

如果可能的话,使用抗锯齿。

QFont.ContextFontMerging

如果所选字体不包含某个字符,则Qt会自动选择一个外观相似且包含该字符的备用字体。默认情况下,这是逐个字符进行的。这意味着在某些不常见的情况下,即使在同一脚本中,也可能使用多种字体来表示一串文本。设置ContextFontMerging将尝试找到与输入字符串的最大子集匹配的备用字体。对于缺少字形的字符串,这将更加耗时,但可能会提供更一致的结果。如果设置了NoFontMerging,则ContextFontMerging将无效。

QFont.PreferTypoLineMetrics

出于兼容性原因,OpenType字体包含两组竞争的垂直线度量,提供字体的ascentdescentleading。这些通常被称为win(Windows)度量和typo(排版)度量。虽然规范建议使用typo度量进行行间距设置,但许多应用程序更喜欢使用win度量,除非在字体的fsSelection字段中设置了USE_TYPO_METRICS标志。出于向后兼容的原因,Qt应用程序也是如此。对于设置了USE_TYPO_METRICS标志以指示typo度量有效的字体,或者win度量和typo度量匹配的字体,这不是问题。然而,对于某些字体,win度量可能比首选的行间距大,并且USE_TYPO_METRICS标志可能被错误地未设置。对于这些字体,设置PreferTypoLineMetrics可能会产生更好的结果。

QFont.NoFontMerging

如果为某个书写系统选择的字体不包含绘制所需的字符,那么Qt会自动选择一个包含该字符的相似字体。NoFontMerging标志会禁用此功能。请注意,启用此标志不会阻止Qt在所选字体不支持文本的书写系统时自动选择合适的字体。

QFont.PreferNoShaping

有时,字体会对一组字符应用复杂的规则以正确显示它们。在某些书写系统中,如婆罗米文字,这是为了使文本可读,但在例如拉丁文字中,这仅仅是一个装饰性功能。PreferNoShaping标志将在不需要时禁用所有这些功能,这将在大多数情况下提高性能(自Qt 5.10起)。

这些中的任何一个都可以与这些标志中的一个进行OR操作:

常量

描述

QFont.PreferMatch

优先匹配精确的字体。字体匹配器将尝试使用指定的确切字体大小。

QFont.PreferQuality

优先选择最佳质量的字体。字体匹配器将使用字体支持的最接近的标准点大小。

class HintingPreference

此枚举描述了可以应用于字形以提高在像素密度可能保证的显示器上的可读性的不同提示级别。

常量

描述

QFont.PreferDefaultHinting

使用目标平台的默认提示级别。

QFont.PreferNoHinting

如果可能,渲染文本时不进行字形轮廓的提示。文本布局将具有排版上的准确性并且可缩放,使用与打印时相同的度量标准。

QFont.PreferVerticalHinting

如果可能,渲染文本时不使用水平提示,但在垂直方向上将字形对齐到像素网格。在密度太低无法准确渲染字形的显示器上,文本将显得更清晰。但由于字形的水平度量没有提示,文本的布局可以缩放到更高密度的设备(如打印机),而不会影响诸如换行等细节。

QFont.PreferFullHinting

如果可能,使用水平和垂直方向的提示渲染文本。文本将被调整以优化目标设备上的可读性,但由于度量将取决于文本的目标大小,字形的位置、换行和其他排版细节将不会缩放,这意味着文本布局在不同像素密度的设备上可能看起来不同。

请注意,此枚举仅描述了一种偏好,因为并非所有Qt支持的平台都支持完整的提示级别范围。下表详细说明了给定提示偏好在选定目标平台上的效果。

首选默认提示

首选无提示

首选垂直提示

首选完全提示

在Qt中启用Windows和DirectWrite

完全提示

垂直提示

垂直提示

完全提示

FreeType

操作系统设置

无提示

垂直提示(轻)

完全提示

macOS上的Cocoa

无提示

无提示

无提示

无提示

在版本4.8中添加。

class Weight

(继承自 enum.IntEnum) Qt 使用与 OpenType 兼容的 1 到 1000 的权重比例。权重为 1 时表示细体,而 1000 表示极粗体。

此枚举包含预定义的字体粗细:

常量

描述

QFont.Thin

100

QFont.ExtraLight

200

QFont.Light

300

QFont.Normal

400

QFont.Medium

500

QFont.DemiBold

600

QFont.Bold

700

QFont.ExtraBold

800

QFont.Black

900

class Style

此枚举描述了用于显示文本的不同字形样式。

常量

描述

QFont.StyleNormal

用于未样式化文本的正常字形。

QFont.StyleItalic

专门设计用于表示斜体文本的斜体字形。

QFont.StyleOblique

具有斜体外观的字形,通常基于未加样式的字形,但未经过精细调整以表示斜体文本。

另请参阅

重量

class Stretch

(继承自 enum.IntEnum) 遵循CSS命名约定的预定义拉伸值。值越大,文本拉伸程度越高。

常量

描述

QFont.AnyStretch

0 接受使用其他QFont属性匹配的任何拉伸

QFont.UltraCondensed

50

QFont.ExtraCondensed

62

QFont.Condensed

75

QFont.SemiCondensed

87

QFont.Unstretched

100

QFont.SemiExpanded

112

QFont.Expanded

125

QFont.ExtraExpanded

150

QFont.UltraExpanded

200

另请参阅

setStretch() stretch()

class Capitalization

此字体应用于文本的渲染选项。

常量

描述

QFont.MixedCase

这是正常的文本渲染选项,不应用任何大小写更改。

QFont.AllUppercase

这将文本更改为全部大写形式显示。

QFont.AllLowercase

这将文本渲染为全小写类型。

QFont.SmallCaps

这将文本渲染为小型大写字母类型。

QFont.Capitalize

这将改变文本的渲染方式,使每个单词的第一个字符为大写字符。

class SpacingType

常量

描述

QFont.PercentageSpacing

值为100将保持间距不变;值为200将按字符本身的宽度扩大字符后的间距。

QFont.AbsoluteSpacing

正值按相应像素增加字母间距;负值减少间距。

__init__()

构造一个使用应用程序默认字体的字体对象。

另请参阅

font()

__init__(font)
Parameters:

字体QFont

构造一个字体,该字体是font的副本。

__init__(font, pd)
Parameters:

font构造一个字体,用于绘图设备pd

__init__(family[, pointSize=-1[, weight=-1[, italic=false]]])
Parameters:
  • family – str

  • pointSize – int

  • weight – int

  • 斜体 – bool

使用指定的familypointSizeweightitalic设置构造一个字体对象。

如果 pointSize 为零或负数,字体的点大小将设置为系统相关的默认值。通常,这是12点。

family 名称可以选择性地包含一个铸造厂名称,例如“Helvetica [Cronyx]”。如果 family 可以从多个铸造厂获得且未指定铸造厂,则会选择一个任意的铸造厂。如果该家族不可用,将使用 font matching 算法设置一个家族。

这将根据逗号分割家族字符串,并使用结果列表调用setFamilies()。要保留名称中包含逗号的字体,请使用接受QStringList的构造函数。

__init__(families[, pointSize=-1[, weight=-1[, italic=false]]])
Parameters:
  • families – 字符串列表

  • pointSize – int

  • weight – int

  • 斜体 – bool

使用指定的familiespointSizeweightitalic设置构造一个字体对象。

如果 pointSize 为零或负数,字体的点大小将设置为系统相关的默认值。通常,这是12点。

families 中的每个字体名称条目可以选择性地包含一个铸造厂名称,例如“Helvetica [Cronyx]”。如果该字体可以从多个铸造厂获得且未指定铸造厂,则会选择一个任意的铸造厂。如果该字体不可用,将使用 font matching 算法设置一个字体。

bold()
Return type:

布尔

如果weight()的值大于Medium,则返回true;否则返回false

另请参阅

weight() setBold() bold()

static cacheStatistics()
capitalization()
Return type:

Capitalization

返回字体的当前大写类型。

另请参阅

setCapitalization()

static cleanup()
clearFeatures()

清除之前在QFont上设置的任何特性。

有关字体功能的更多详细信息,请参见setFeature()

clearVariableAxes()

清除之前在QFont上设置的任何变量轴值。

有关变量轴的更多详细信息,请参见setVariableAxis()

defaultFamily()
Return type:

字符串

返回与当前样式提示对应的家族名称。

exactMatch()
Return type:

布尔

如果存在与当前字体设置完全匹配的窗口系统字体,则返回 true

另请参阅

QFontInfo

families()
Return type:

字符串列表

返回请求的字体家族名称,即在最后一次setFamilies()调用或通过构造函数设置的名称。否则返回一个空列表。

family()
Return type:

字符串

返回请求的字体家族名称。这将始终与families()调用中的第一个条目相同。

featureTags()
Return type:

QFont.Tag的列表

返回当前在此QFont上设置的所有字体特性的标签列表。

有关字体功能的更多详细信息,请参见setFeature()

featureValue(tag)
Parameters:

标签Tag

Return type:

整数

返回为特定功能tag设置的值。如果未设置标签,则返回0。

有关字体功能的更多详细信息,请参见setFeature()

fixedPitch()
Return type:

布尔

如果已设置固定间距,则返回true;否则返回false

fromString(descrip)
Parameters:

描述 – str

Return type:

布尔

将此字体设置为匹配描述 descrip。描述是由逗号分隔的字体属性列表,如 toString() 返回的那样。

另请参阅

toString()

hintingPreference()
Return type:

HintingPreference

返回当前使用此字体渲染的字形的首选提示级别。

另请参阅

setHintingPreference()

static initialize()
static insertSubstitution(familyName, substituteName)
Parameters:
  • familyName – str

  • substituteName – str

substituteName插入到家族familyName的替换表中。

在替换字体后,通过销毁并重新创建所有QFont对象来触发字体的更新。

static insertSubstitutions(familyName, substituteNames)
Parameters:
  • familyName – str

  • substituteNames – 字符串列表

将家族列表 substituteNames 插入到 familyName 的替换列表中。

在替换字体后,通过销毁并重新创建所有QFont对象来触发字体的更新。

isCopyOf(f)
Parameters:

fQFont

Return type:

布尔

如果此字体和f是彼此的副本,即其中一个被创建为另一个的副本且自创建以来均未被修改,则返回true。这比相等性要严格得多。

另请参阅

operator=() operator==()

isFeatureSet(tag)
Parameters:

标签Tag

Return type:

布尔

如果已在QFont上设置了由tag指定的特性的值,则返回true,否则返回false。

有关字体功能的更多详细信息,请参见setFeature()

isVariableAxisSet(tag)
Parameters:

标签Tag

Return type:

布尔

如果已经为变量轴设置了一个值,该值由tag给出,并且在QFont上,则返回true,否则返回false。

有关字体可变轴的更多详细信息,请参见setVariableAxis()

italic()
Return type:

布尔

如果字体的style()不是StyleNormal,则返回true

另请参阅

setItalic() style()

kerning()
Return type:

布尔

如果使用此字体绘制文本时应使用字距调整,则返回 true

另请参阅

setKerning()

key()
Return type:

字符串

返回字体的键,即字体的文本表示。它通常用作字体缓存或字典的键。

另请参阅

QMap

legacyWeight()
Return type:

整数

注意

此函数已弃用。

请使用weight()代替。

返回转换为Qt 5及更早版本中使用的非标准字体重量比例的字体重量。

自 Qt 6 起,使用了 OpenType 标准的字体重量比例,而非非标准比例。这需要从使用旧比例的值进行转换。为了方便起见,当从使用旧重量比例的代码移植时,可以使用此函数。

letterSpacing()
Return type:

浮点数

返回字体的字母间距。

letterSpacingType()
Return type:

SpacingType

返回用于字母间距的间距类型。

__ne__(f)
Parameters:

fQFont

Return type:

布尔

如果此字体与f不同,则返回true;否则返回false

如果两个QFont的字体属性不同,则认为它们是不同的。

另请参阅

operator==()

__lt__(f)
Parameters:

fQFont

Return type:

布尔

提供此字体与字体f的任意比较。唯一保证的是,如果两个字体相等,则操作符返回false,并且如果字体不相等,则(f1 < f2) == !(f2 < f1)。

这个函数在某些情况下很有用,例如如果你想使用QFont对象作为QMap中的键。

另请参阅

operator==() operator!=() isCopyOf()

__eq__(f)
Parameters:

fQFont

Return type:

布尔

如果此字体等于 f,则返回 true;否则返回 false。

如果两个QFont的字体属性相等,则认为它们是相等的。

另请参阅

operator!=() isCopyOf()

overline()
Return type:

布尔

如果已经设置了上划线,则返回true;否则返回false

另请参阅

setOverline()

pixelSize()
Return type:

整数

如果字体大小是通过setPixelSize()设置的,则返回字体的像素大小。如果大小是通过setPointSize()setPointSizeF()设置的,则返回-1。

pointSize()
Return type:

整数

返回字体的点大小。如果字体大小是以像素为单位指定的,则返回-1。

pointSizeF()
Return type:

浮点数

返回字体的点大小。如果字体大小是以像素指定的,则返回-1。

static removeSubstitutions(familyName)
Parameters:

familyName – str

移除familyName的所有替换。

resolve(other)
Parameters:

其他QFont

Return type:

QFont

返回一个新的QFont,该字体具有从other复制的属性,这些属性之前未在此字体上设置。

resolveMask()
Return type:

整数

setBold(enable)
Parameters:

enable – 布尔值

如果 enable 为 true,则将字体的粗细设置为 Bold;否则将粗细设置为 Normal

为了更精细的粗体控制,请使用 setWeight()

注意

如果设置了styleName(),此值可能会被忽略,或者如果平台支持,字体可能会被人工加粗。

另请参阅

bold() setWeight()

setCapitalization(caps)
Parameters:

大写Capitalization

设置此字体中文本的大小写为caps

字体的首字母大写功能使文本以选定的首字母大写模式显示。

另请参阅

capitalization()

setFamilies(families)
Parameters:

families – 字符串列表

设置字体的家族名称列表。名称不区分大小写,可能包括铸造厂名称。families中的第一个家族将被设置为字体的主要家族。

families 中的每个字体名称条目可以选择性地包含一个铸造厂名称,例如“Helvetica [Cronyx]”。如果该字体可以从多个铸造厂获得且未指定铸造厂,则会选择一个任意的铸造厂。如果该字体不可用,将使用 font matching 算法设置一个字体。

setFamily(family)
Parameters:

family – str

设置字体的家族名称。名称不区分大小写,可能包括铸造厂名称。

family 名称可以选择性地包含一个铸造厂名称,例如“Helvetica [Cronyx]”。如果 family 可以从多个铸造厂获得且未指定铸造厂,则会选择一个任意的铸造厂。如果该家族不可用,将使用 font matching 算法设置一个家族。

setFeature(tag, value)
Parameters:
  • 标签Tag

  • value – int

这是一个重载函数。

在文本整形时,将整数值应用于由tag指定的排版特性。这提供了对字体整形过程的高级访问,并可用于支持API中未涵盖的字体特性。

该功能由tag指定,通常从字体功能映射中的四字符功能名称编码而来。

这个整数value在大多数情况下与标签一起传递,表示一个布尔值:零值表示该功能被禁用,非零值表示该功能被启用。然而,对于某些字体功能,它可能有其他解释。例如,当应用于salt功能时,该值是一个索引,指定要使用的样式替代方案。

例如,frac 字体特性将转换用斜杠分隔的斜体分数(如 1/2)为不同的表示形式。通常,这将涉及将整个分数压缩到一个字符宽度中(如 ½)。

如果字体支持frac功能,则可以通过在字体功能映射中设置features["frac"] = 1来在shaper中启用该功能。

注意

默认情况下,Qt会根据其他字体属性启用或禁用某些字体特性。特别是,kern特性将根据QFontkerning()属性启用或禁用。此外,如果应用了letterSpacing(),所有连字特性(ligacligdlighlig)将被禁用,但仅适用于连字使用是装饰性的书写系统。对于需要连字的书写系统,这些特性将保持其默认状态。使用setFeature()和相关函数设置的值将覆盖默认行为。例如,如果将“kern”特性设置为1,则无论字距属性是否设置为false,字距将始终启用。同样,如果将其设置为0,则它将始终禁用。要将字体特性重置为其默认行为,可以使用unsetFeature()取消设置。

setFixedPitch(enable)
Parameters:

enable – 布尔值

如果 enable 为 true,则启用固定间距;否则禁用固定间距。

另请参阅

fixedPitch() QFontInfo

setHintingPreference(hintingPreference)
Parameters:

hintingPreferenceHintingPreference

设置字形提示级别的偏好为hintingPreference。这是对底层字体渲染系统使用某种提示级别的提示,不同平台的支持程度不同。有关更多详细信息,请参阅HintingPreference文档中的表格。

默认的提示偏好是 PreferDefaultHinting

另请参阅

hintingPreference()

setItalic(b)
Parameters:

b – 布尔值

如果enable为真,则将字体的style()设置为StyleItalic;否则,样式设置为StyleNormal

注意

如果设置了styleName(),此值可能会被忽略,或者如果平台支持,字体可能会呈现为倾斜而不是选择设计的斜体字体变体。

另请参阅

italic() QFontInfo

setKerning(enable)
Parameters:

enable – 布尔值

如果enable为true,则启用此字体的字距调整;否则禁用。默认情况下,字距调整是启用的。

当启用字距调整时,字形度量不再相加,即使是拉丁文本也是如此。换句话说,假设 width('a') + width('b') 等于 width("ab") 并不一定成立。

另请参阅

kerning() QFontMetrics

setLegacyWeight(legacyWeight)
Parameters:

legacyWeight – int

注意

此函数已弃用。

请使用setWeight()代替。

使用Qt 5及之前版本的旧字体重量比例将字体重量设置为legacyWeight

自 Qt 6 起,使用了 OpenType 标准的字体重量比例,而非非标准比例。这需要从使用旧比例的值进行转换。为了方便起见,当从使用旧重量比例的代码移植时,可以使用此函数。

注意

如果设置了styleName(),则在选择字体时可能会忽略此值。

setLetterSpacing(type, spacing)
Parameters:

将字体的字母间距设置为spacing,并将间距类型设置为type

字母间距改变了字体中单个字母之间的默认间距。根据所选的间距类型,字母之间的间距可以按字符宽度的百分比或像素来缩小或放大。

setOverline(enable)
Parameters:

enable – 布尔值

如果 enable 为 true,则设置上划线开启;否则设置上划线关闭。

另请参阅

overline() QFontInfo

setPixelSize(pixelSize)
Parameters:

pixelSize – int

将字体大小设置为pixelSize像素,最大大小为无符号16位整数。

使用此函数会使字体依赖于设备。使用setPointSize()setPointSizeF()以设备无关的方式设置字体大小。

另请参阅

pixelSize()

setPointSize(pointSize)
Parameters:

pointSize – int

设置点大小为 pointSize。点大小必须大于零。

setPointSizeF(pointSize)
Parameters:

pointSize – 浮点数

设置点大小为pointSize。点大小必须大于零。在所有平台上可能无法达到请求的精度。

setResolveMask(mask)
Parameters:

mask – 整数

setStretch(factor)
Parameters:

factor – int

设置字体的拉伸因子。

拉伸因子匹配字体的压缩或扩展版本,或应用拉伸变换,该变换将字体中所有字符的宽度改变factor百分比。例如,将factor设置为150会导致字体中的所有字符变宽1.5倍(即150%)。最小拉伸因子为1,最大拉伸因子为4000。默认拉伸因子为AnyStretch,它将接受任何拉伸因子并且不对字体应用任何变换。

拉伸因子仅适用于轮廓字体。对于位图字体,拉伸因子将被忽略。

注意

当匹配具有原生非默认拉伸因子的字体时,请求100的拉伸将使其恢复到中等宽度的字体。

另请参阅

stretch() Stretch

setStrikeOut(enable)
Parameters:

enable – 布尔值

如果 enable 为 true,则设置删除线开启;否则设置删除线关闭。

另请参阅

strikeOut() QFontInfo

setStyle(style)
Parameters:

样式Style

将字体的样式设置为 style

另请参阅

style() italic() QFontInfo

setStyleHint(hint[, strategy=QFont.StyleStrategy.PreferDefault])
Parameters:

将样式提示和策略分别设置为hintstrategy

如果没有明确设置这些,样式提示将默认为 AnyStyle,样式策略将默认为 PreferDefault

Qt 不支持在 X11 上的样式提示,因为窗口系统未提供此信息。

setStyleName(styleName)
Parameters:

styleName – str

设置字体的样式名称为styleName。设置后,其他样式属性如style()weight()在字体匹配时将被忽略,但如果平台的字体引擎支持,之后可能会进行模拟。

由于人工模拟样式的质量较低,且缺乏全面的跨平台支持,不建议将按样式名称匹配与按样式属性匹配一起使用。

另请参阅

styleName()

setStyleStrategy(s)
Parameters:

sStyleStrategy

设置字体的样式策略为 s

setUnderline(enable)
Parameters:

enable – 布尔值

如果 enable 为 true,则设置下划线开启;否则设置下划线关闭。

另请参阅

underline() QFontInfo

setVariableAxis(tag, value)
Parameters:
  • 标签Tag

  • value – 浮点数

value应用于与tag对应的变量轴。

可变字体提供了一种在同一字体文件中存储多种变化(具有不同的粗细、宽度或样式)的方式。这些变化以浮点数值的形式给出,用于一组预定义的参数,称为“可变轴”。特定的实例通常由字体设计师命名,在Qt中,可以使用setStyleName()来选择这些实例,就像传统的子家族一样。

在某些情况下,为不同的轴提供任意值也很有用。例如,如果字体有常规和粗体子系列,您可能希望在这两者之间有一个权重。然后,您可以通过为字体中的“wght”轴提供自定义值来手动请求此操作。

QFont font;
font.setVariableAxis("wght", (QFont::Normal + QFont::Bold) / 2.0f);

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

许多字体提供了一些标准轴,例如“wght”(重量)、“wdth”(宽度)、“ital”(斜体)和“opsz”(光学尺寸)。它们在字体本身中定义了各自的范围。例如,“wght”可能从100到900(细体粗体),而“ital”可以从0到1(从非斜体到完全斜体)。

字体也可以选择定义自定义轴;唯一的限制是名称必须符合Tag(四个拉丁-1字符的序列)的要求。

默认情况下,没有设置变量轴。

注意

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

另请参阅

unsetVariableAxis

setWeight(weight)
Parameters:

weightWeight

将字体的粗细设置为weight,使用由Weight枚举定义的刻度。

注意

如果设置了styleName(),则在选择字体时可能会忽略此值。

另请参阅

weight() QFontInfo

setWordSpacing(spacing)
Parameters:

间距 – float

设置字体的字间距为 spacing

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

字间距不适用于书写系统,其中单个单词之间没有用空格分隔。

stretch()
Return type:

整数

返回字体的拉伸因子。

另请参阅

setStretch()

strikeOut()
Return type:

布尔

如果已设置删除线,则返回true;否则返回false

另请参阅

setStrikeOut()

style()
Return type:

样式

返回字体的样式。

另请参阅

setStyle()

styleHint()
Return type:

StyleHint

返回 StyleHint

样式提示影响font matching algorithm。有关可用提示的列表,请参见StyleHint

styleName()
Return type:

字符串

返回请求的字体样式名称。这可以用于匹配具有不规则样式的字体(这些样式无法在其他样式属性中规范化)。

styleStrategy()
Return type:

StyleStrategy

返回 StyleStrategy

样式策略影响font matching算法。有关可用策略的列表,请参见StyleStrategy

static substitute(familyName)
Parameters:

familyName – str

Return type:

字符串

返回在指定familyName时使用的第一个姓氏。查找不区分大小写。

如果没有familyName的替代项,则返回familyName

要获取替换列表,请使用 substitutes()

static substitutes(familyName)
Parameters:

familyName – str

Return type:

字符串列表

返回一个姓氏列表,每当指定familyName时使用。查找不区分大小写。

如果没有familyName的替代项,则返回一个空列表。

static substitutions()
Return type:

字符串列表

返回一个已排序的替代姓氏列表。

swap(other)
Parameters:

其他QFont

将此字体实例与 other 交换。此函数非常快且永远不会失败。

toString()
Return type:

字符串

返回字体的描述。该描述是一个逗号分隔的属性列表,非常适合在QSettings中使用,包括以下内容:

  • 字体家族

  • 点大小

  • 像素大小

  • 样式提示

  • 字体粗细

  • 字体样式

  • 下划线

  • 删除线

  • 固定间距

  • 始终为 0

  • 大写

  • 字母间距

  • 字间距

  • 拉伸

  • 样式策略

  • 字体样式(不可用时省略)

另请参阅

fromString()

underline()
Return type:

布尔

如果已设置下划线,则返回true;否则返回false

另请参阅

setUnderline()

unsetFeature(tag)
Parameters:

标签Tag

这是一个重载函数。

从显式启用/禁用功能的映射中移除tag

注意

即使该特性之前未被添加,这也会将字体特性映射标记为在此QFont中已修改,因此在与其他字体进行解析时它将优先。

QFont上取消设置现有功能会将行为恢复为默认值。

有关字体功能的更多详细信息,请参见setFeature()

unsetVariableAxis(tag)
Parameters:

标签Tag

取消之前由tag设置的变量轴值。

注意

如果之前没有为此标签提供值,QFont 在与其他 QFont 值进行解析时,仍会将其变量轴视为已设置。

另请参阅

setVariableAxis

variableAxisTags()
Return type:

QFont.Tag的列表

返回当前在此QFont上设置的所有变量轴的标签列表。

有关变量轴的更多详细信息,请参见setVariableAxis()

variableAxisValue(tag)
Parameters:

标签Tag

Return type:

浮点数

返回为特定变量轴tag设置的值。如果标签尚未设置,则返回0.0。

有关变量轴的更多详细信息,请参见setVariableAxis()

weight()
Return type:

重量

返回字体的重量,使用与Weight枚举相同的比例。

wordSpacing()
Return type:

浮点数

返回字体的字间距。

class Tag

在版本6.7中添加。

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

__init__()

默认构造函数,生成一个无效的标签。

isValid()
Return type:

布尔

返回标签是否有效。如果标签的值不为零,则标签有效。

另请参阅

value() fromValue() fromString()

__ne__(rhs)
Parameters:

rhsTag

Return type:

布尔

__lt__(rhs)
Parameters:

rhsTag

Return type:

布尔

__le__(rhs)
Parameters:

rhsTag

Return type:

布尔

__eq__(rhs)
Parameters:

rhsTag

Return type:

布尔

__gt__(rhs)
Parameters:

rhsTag

Return type:

布尔

__ge__(rhs)
Parameters:

rhsTag

Return type:

布尔

toString()
Return type:

QByteArray

返回此标签的字符串表示形式为字节数组。

另请参阅

fromString()

value()
Return type:

整数

返回此标签的数值。

另请参阅

isValid() fromValue()