PySide6.QtGui.QRawFont

class QRawFont

QRawFont 类提供了对字体单一物理实例的访问。更多

概要

方法

静态函数

注意

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

详细描述

注意

QRawFont 是一个底层类。对于大多数用途,QFont 是一个更合适的类。

最常见的情况是,在用户界面中呈现文本时,用于渲染字符的确切字体在某种程度上是未知的。这可能有几个原因:例如,目标系统上实际存在的物理字体可能出乎开发者的意料,或者文本可能包含用户选择的样式、大小或书写系统,而这些在代码中选择的字体并不支持。

因此,Qt的QFont类实际上代表了对字体的查询。当解释文本时,Qt会尽力将文本与查询匹配,但根据支持情况,可能会在幕后使用不同的字体。

对于大多数使用场景,这既是预期的也是必要的,因为它最大限度地减少了用户界面中文本无法显示的可能性。然而,在某些情况下,对过程进行更直接的控制可能是有用的。正是为了这些使用场景,QRawFont 类才存在。

一个QRawFont对象代表给定字体在给定像素大小下的单个物理实例。即在典型情况下,它代表一组TrueType或OpenType字体表,并使用用户指定的像素大小将度量转换为逻辑像素单位。它可以与QGlyphRun类结合使用,以在特定位置绘制特定的字形索引,并且还可以访问物理字体中的一些相关数据。

QRawFont 仅提供对主要字体技术的支持:在Windows平台上支持GDI和DirectWrite,在Linux平台上支持FreeType,在macOS上支持CoreText。对于其他字体后端,API将被禁用。

QRawFont 可以通过多种方式构建:

  • 可以通过调用QTextLayout::glyphs()或QTextFragment::glyphs()来构造。返回的QGlyphs对象将包含QRawFont对象,这些对象表示用于渲染文本每个部分的实际字体。

  • 它可以通过将QFont对象传递给fromFont()来构造。该函数将返回一个QRawFont对象,表示将作为对QFont查询和所选书写系统的响应而选择的字体。

  • 它可以通过直接将文件名或QByteArray传递给QRawFont构造函数来构造,或者通过调用loadFromFile()loadFromData()来构造。在这种情况下,字体将不会在QFontDatabase中注册,并且它将无法作为常规字体选择的一部分使用。

QRawFont 被认为是在其构造的线程中本地的(无论是使用构造函数,还是通过调用 loadFromData()loadFromFile())。QRawFont 不能被移动到不同的线程,而是必须在相关线程中重新创建。

注意

为了满足缓存静态文本的字形索引和字体选择以避免在应用程序的内循环中重新塑造和重新布局的需求,更好的选择是QStaticText类,因为它优化了缓存的内存成本,并提供了特定于绘图引擎的缓存的可能性,以进一步提高速度。

class AntialiasingType

此枚举表示在函数 alphaMapForGlyph() 中光栅化字形的不同方式。

常量

描述

QRawFont.PixelAntialiasing

将通过测量形状在整个像素上的覆盖范围来进行光栅化。返回的图像包含基于字形形状覆盖范围的每个像素的alpha值。

QRawFont.SubPixelAntialiasing

将通过测量每个子像素的覆盖率来光栅化,为每个像素的红色、绿色和蓝色分量返回单独的alpha值。

class LayoutFlag

(继承自 enum.Flag) 这个枚举告诉函数 advancesForGlyphIndexes() 如何计算前进量。

常量

描述

QRawFont.SeparateAdvances

将分别计算每个字形的前进量。

QRawFont.KernedAdvances

将在相邻字形之间应用字距调整。请注意,目前不支持基于OpenType GPOS的字距调整。

QRawFont.UseDesignMetrics

使用设计度量而不是根据绘制设备分辨率调整的提示度量。可以与上述任何选项进行OR操作。

__init__()

构造一个无效的 QRawFont

__init__(other)
Parameters:

其他QRawFont

创建一个QRawFont,它是other的副本。

__init__(fontData, pixelSize[, hintingPreference=QFont.PreferDefaultHinting])
Parameters:

构造一个QRawFont,表示包含在提供的fontData中的字体,其大小(以像素为单位)由pixelSize给出,并使用由hintingPreference指定的提示偏好。

注意

数据必须包含TrueType或OpenType字体。

__init__(fileName, pixelSize[, hintingPreference=QFont.PreferDefaultHinting])
Parameters:

构造一个QRawFont,表示由fileName引用的文件中包含的字体,其大小(以像素为单位)由pixelSize给出,并使用由hintingPreference指定的提示偏好。

注意

引用的文件必须包含TrueType或OpenType字体。

advancesForGlyphIndexes(glyphIndexes)
Parameters:

glyphIndexes – .quint32的列表

Return type:

QPointF的列表

这是一个重载函数。

返回QRawFont中每个glyphIndexes的像素单位前进量。前进量给出了从给定字形的位置到下一个字形应该绘制的位置的距离,以使两个字形看起来没有间距。每个字形的前进量是单独计算的。

advancesForGlyphIndexes(glyphIndexes, layoutFlags)
Parameters:
  • glyphIndexes – quint32 的列表

  • layoutFlagsLayoutFlag 的组合

Return type:

QPointF的列表

返回QRawFont中每个glyphIndexes的像素单位前进量。前进量给出了从给定字形的位置到下一个字形应该绘制的位置的距离,以使两个字形看起来没有间距。前进量的计算方式由layoutFlags控制。

注意

当请求KernedAdvances时,如果字体中可用,此函数将应用来自TrueType表KERN的字距调整规则。在许多现代字体中,字距调整通过OpenType规则或AAT规则处理,这需要应用完整的字形步骤。要获取完全调整文本的结果,请使用QTextLayout

alphaMapForGlyph(glyphIndex[, antialiasingType=QRawFont.AntialiasingType.SubPixelAntialiasing[, transform=QTransform()]])
Parameters:
Return type:

QImage

此函数返回底层字体中给定glyphIndex处的字形光栅化图像,使用指定的transform。如果QRawFont无效,此函数将返回一个无效的QImage

如果字体是彩色字体,那么生成的图像将包含在当前像素大小下渲染的字形。在这种情况下,antialiasingType 将被忽略。

否则,如果antialiasingType设置为SubPixelAntialiasing,则生成的图像将为Format_RGB32格式,并且每个像素的RGB值将表示字形光栅化中像素的子像素不透明度。否则,图像将为Format_Indexed8格式,并且每个像素将包含光栅化中像素的不透明度。

ascent()
Return type:

浮点数

返回此QRawFont的上升高度,单位为像素。

字体的上升是从基线到字符延伸到的最高位置的距离。实际上,一些字体设计师会打破这一规则,例如当他们在一个字符上放置多个重音符号,或者为了适应一种异国语言中的不寻常字符,因此这个值可能会太小(尽管这种情况很少见)。

另请参阅

ascent()

averageCharWidth()
Return type:

浮点数

返回此QRawFont的平均字符宽度,单位为像素。

另请参阅

averageCharWidth()

boundingRect(glyphIndex)
Parameters:

glyphIndex – int

Return type:

QRectF

返回包含给定glyphIndex的字形的最小矩形。

capHeight()
Return type:

浮点数

返回此QRawFont的顶高,单位为像素。

字体的帽高是指大写字母在基线以上的高度。具体来说,它是指那些平坦的大写字母的高度——比如H或I——与圆形字母如O或尖形字母如A相对,后两者可能会显示超出部分。

另请参阅

capHeight()

descent()
Return type:

浮点数

返回此QRawFont的下降值,单位为像素。

下降是从基线到字符延伸到的最低点的距离。实际上,一些字体设计师会打破这一规则,例如为了适应一种异国语言中的特殊字符,因此这个值可能会太小(尽管这种情况很少见)。

另请参阅

descent()

familyName()
Return type:

字符串

返回此QRawFont的家族名称。

fontTable(tag)
Parameters:

标签Tag

Return type:

QByteArray

从底层物理字体中检索由tag指定的sfnt表,如果未找到此类表,则返回空字节数组。返回的字体表的字节顺序为大端序,如sfnt格式所指定。

fontTable(tagName)
Parameters:

tagName – str

Return type:

QByteArray

此函数重载了 Tag)

名称必须是一个四个字符的字符串。

static fromFont(font[, writingSystem=QFontDatabase.Any])
Parameters:
Return type:

QRawFont

根据font查询获取物理表示。返回的物理字体是Qt为了在选定的writingSystem中显示文本而优先选择的字体。

警告

此函数可能开销较大,不应在性能敏感的代码中调用。

glyphIndexesForString(text)
Parameters:

文本 – str

Return type:

.quint32列表

使用底层字体中的CMAP表将text给出的Unicode点字符串转换为字形索引,并返回包含结果的列表。

请注意,在字体中存在其他影响文本形状的表格的情况下,返回的字形索引将无法正确表示文本的渲染效果。要获取正确形状的文本,您可以使用QTextLayout来布局和形状化文本,然后调用QTextLayout::glyphs()以获取字形索引列表和QRawFont对的集合。

另请参阅

advancesForGlyphIndexes() glyphIndexesForChars() QGlyphRun glyphRuns() glyphRuns()

hintingPreference()
Return type:

HintingPreference

返回用于构造此QRawFont的提示偏好。

另请参阅

hintingPreference()

isValid()
Return type:

布尔

如果QRawFont有效,则返回true,否则返回false。

leading()
Return type:

浮点数

返回此QRawFont的前导(leading)值,单位为像素。

这是自然的行间距。

另请参阅

leading()

lineThickness()
Return type:

浮点数

返回用于绘制线条(下划线、上划线等)的厚度,以及使用此字体绘制的文本。

loadFromData(fontData, pixelSize, hintingPreference)
Parameters:

用提供的fontData中包含的字体替换当前的QRawFont,字体大小(以像素为单位)由pixelSize给出,并使用由hintingPreference指定的提示偏好。

fontData 必须包含一个 TrueType 或 OpenType 字体。

另请参阅

loadFromFile()

loadFromFile(fileName, pixelSize, hintingPreference)
Parameters:

fileName引用的文件内容替换当前的QRawFont,用于由pixelSize指定的大小(以像素为单位),并使用由hintingPreference指定的提示偏好。

文件必须引用TrueType或OpenType字体。

另请参阅

loadFromData()

maxCharWidth()
Return type:

浮点数

返回字体中最宽字符的宽度。

另请参阅

maxWidth()

__ne__(other)
Parameters:

其他QRawFont

Return type:

布尔

如果这个QRawFont不等于other,则返回true。否则,返回false

__eq__(other)
Parameters:

其他QRawFont

Return type:

布尔

如果这个QRawFont等于other,则返回true。否则,返回false

pathForGlyph(glyphIndex)
Parameters:

glyphIndex – int

Return type:

QPainterPath

如果QRawFont有效,此函数返回底层字体中给定glyphIndex处的字形形状。否则,返回一个空的QPainterPath

返回的字形将始终是无提示的。

pixelSize()
Return type:

浮点数

返回为此QRawFont设置的像素大小。像素大小影响字形的光栅化方式,pathForGlyph()返回的字形大小,并用于将内部度量从设计单位转换为逻辑像素单位。

另请参阅

setPixelSize()

setPixelSize(pixelSize)
Parameters:

pixelSize – 浮点数

设置此字体应渲染的像素大小为 pixelSize

另请参阅

pixelSize()

style()
Return type:

样式

返回此QRawFont的样式。

另请参阅

style()

styleName()
Return type:

字符串

返回此QRawFont的样式名称。

另请参阅

styleName()

supportedWritingSystems()
Return type:

QFontDatabase.WritingSystem 的列表

返回字体文件中设计者提供的支持的书写系统列表。请注意,这并不保证字体支持特定的Unicode点。您可以使用supportsCharacter()来检查对单个特定字符的支持。

注意

列表是根据字体OS/2表中设置的Unicode范围和代码页范围确定的,并且要求基础字体文件中存在这样的表。

另请参阅

supportsCharacter()

supportsCharacter(character)
Parameters:

字符QChar

Return type:

布尔

如果字体具有与给定character对应的字形,则返回true

supportsCharacter(ucs4)
Parameters:

ucs4 – 整数

Return type:

布尔

这是一个重载函数。

如果字体具有与UCS-4编码字符ucs4对应的字形,则返回true

swap(other)
Parameters:

其他QRawFont

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

underlinePosition()
Return type:

浮点数

返回从基线开始的位置,用于在使用此字体渲染的文本下方绘制下划线。

unitsPerEm()
Return type:

浮点数

返回定义此QRawFont的em方块的宽度和高度的设计单位数。此值与像素大小一起使用,用于将设计度量转换为像素单位,因为内部度量是以设计单位指定的,而像素大小给出了1 em的像素大小。

weight()
Return type:

整数

返回此QRawFont的权重。

另请参阅

weight()

xHeight()
Return type:

浮点数

返回此QRawFont的x高度,单位为像素。

这通常但不总是与字符‘x’的高度相同。

另请参阅

xHeight()