class 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__(fontData, pixelSize[, hintingPreference=QFont.PreferDefaultHinting])#
参数:

创建一个表示由提供的 fontData 包含的字体,大小为像素大小(由 pixelSize 给出),并使用由 hintingPreference 指定光标偏好的 QRawFont

备注

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

__init__()

创建一个无效的 QRawFont

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

创建一个表示由 fileName 指向的文件中包含的字体,大小为像素大小(由 pixelSize 给出),并使用由 hintingPreference 指定光标偏好的 QRawFont

备注

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

__init__(other)
参数:

otherQRawFont

创建一个与 other 相等的 QRawFont 的副本。

advancesForGlyphIndexes(glyphIndexes)#
参数:

glyphIndexes – .list of quint32

返回类型:

.list of QPointF

这是一个重载函数。

返回 QRawFont 中每个 glyphIndexes 的 advances,单位为像素。advances 表示给定字符到下一个字符绘制位置的距离,使得这两个字符看起来像是无间距的。每个字符的 advances 是单独计算的。

advancesForGlyphIndexes(glyphIndexes, layoutFlags)
参数:
  • glyphIndexes – .list of quint32

  • layoutFlagsLayoutFlag 组合

返回类型:

.list of QPointF

返回 QRawFont 中每个 glyphIndexes 的 advances,单位为像素。advances 表示给定字符到下一个字符绘制位置的距离,使得这两个字符看起来像是无间距的。advances 的计算方式由 layoutFlags 控制。

备注

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

alphaMapForGlyph(glyphIndex[, antialiasingType=QRawFont.AntialiasingType.SubPixelAntialiasing[, transform=QTransform()]])#
参数:
返回类型:

QImage

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

如果字体是彩色字体,则结果图像将包含当前像素大小渲染的字符。在这种情况下,将忽略 antialiasingType

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

ascent()#
返回类型:

float

返回此 QRawFont 在像素单位中的上升线。

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

另见

ascent()

averageCharWidth()#
返回类型:

float

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

boundingRect(glyphIndex)#
参数:

glyphIndex – int

返回类型:

QRectF

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

capHeight()#
返回类型:

float

返回此 QRawFont 的像素单位中的帽高。

字体的大写字母高度是指大写字母基线之上的高度。具体而言,是指像H或I这样的平坦字母的高度,而不是像O这样的圆形字母或像A这样的尖角字母,后者两者都可能显示超射。

另见

capHeight()

descent()#
返回类型:

float

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

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

另见

descent()

familyName()#
返回类型:

str

返回此QRawFont的族名。

fontTable(tag)#
参数:

tagTag

返回类型:

QByteArray

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

fontTable(tagName)
参数:

tagName – str

返回类型:

QByteArray

此函数重载了Tag)

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

static fromFont(font[, writingSystem=QFontDatabase.Any])#
参数:
返回类型:

QRawFont

根据字体查询获取物理表示形式。返回的物理字体是Qt在writingSystem中显示文本时首选的字体。

警告

此函数可能非常昂贵,不应在性能敏感的代码中调用。

glyphIndexesForString(text)#
参数:

text – str

返回类型:

返回一个quint32的列表。

将由 text 提供的 Unicode 点字符串转换为使用底层字体的 CMAP 表的符号索引,并返回包含结果的列表。

请注意,在字体中存在其他影响文本形状的表时,返回的符号索引将无法正确表示文本的渲染。为了获取正确形状的文本,您可以使用 QTextLayout 来排版和形状文本,然后调用 QTextLayout::glyphs() 以获取符号索引列表集合和 QRawFont 对。

hintingPreference()#
返回类型:

HintingPreference

返回构建此 QRawFont 时使用的提示首选项。

isValid()#
返回类型:

布尔型

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

leading()#
返回类型:

float

以像素为单位返回此 QRawFont 的行间隔。

这是自然的行间间距。

另见

leading()

lineThickness()#
返回类型:

float

返回沿文本绘制线条(下划线、上划线等)的厚度。

loadFromData(fontData, pixelSize, hintingPreference)#
参数:

用提供的 fontData 中的字体替换当前的 QRawFont,字体数据的尺寸由 pixelSize 给出,并使用由 hintingPreference 指定的提示首选项。

fontData 必须包含 TrueType 或 OpenType 字体。

loadFromFile(fileName, pixelSize, hintingPreference)#
参数:

用由 fileName 指定的文件的 内容替换当前 QRawFont,并为 pixelSize 给出的尺寸(以像素为单位),并使用由 hintingPreference 指定的光栅化偏好。

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

maxCharWidth()#
返回类型:

float

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

另见

maxWidth()

__ne__(other)#
参数:

otherQRawFont

返回类型:

布尔型

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

__eq__(other)#
参数:

otherQRawFont

返回类型:

布尔型

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

pathForGlyph(glyphIndex)#
参数:

glyphIndex – int

返回类型:

QPainterPath

此函数返回由 QRawFont 在底层字体中提供的 glyphIndex 的形状,如果 QRawFont 无效,它返回一个空的 QPainterPath

返回的符号总是不带提示。

pixelSize()#
返回类型:

float

返回为此 QRawFont 设置的像素尺寸。像素尺寸会影响符号的光栅化,pathForGlyph() 返回的符号的大小,并将其用于将内部度量从设计单位转换为逻辑像素单位。

setPixelSize(pixelSize)#
参数:

pixelSize – float

使用指定的 pixelSize 设置字体渲染的像素大小。

另见

pixelSize()

style()#
返回类型:

样式

返回此 QRawFont 的样式。

另见

style()

styleName()#
返回类型:

str

返回此 QRawFont 的样式名称。

另见

styleName()

supportedWritingSystems()#
返回类型:

列表项 QFontDatabase.WritingSystem

返回字体支持的脚本,该信息由字体文件中设计者提供。请注意,这并不能保证字体支持特定Unicode字符。您可以使用 supportsCharacter() 检查是否支持单个特定字符。

备注

列表根据字体OS/2表中设置的Unicode范围和代码页范围确定,需要底层字体文件中存在此类表。

supportsCharacter(character)#
参数:

character - QChar

返回类型:

布尔型

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

supportsCharacter(ucs4)
参数:

ucs4 - int

返回类型:

布尔型

这是一个重载函数。

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

swap(other)#
参数:

otherQRawFont

other 交换此原始字体。此函数非常快速且从不失败。

underlinePosition()#
返回类型:

float

返回基于基线绘制此字体渲染的文本下划线位置。

unitsPerEm()#
返回类型:

float

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

weight()#
返回类型:

int

返回此QRawFont 的字重。

另见

weight()

xHeight()#
返回类型:

float

返回此QRawFont 在像素单位下的xHeight。

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

另见

xHeight()