- class QRawFont#
-
概要#
方法#
def
__init__()
def
ascent()
def
boundingRect()
def
capHeight()
def
descent()
def
familyName()
def
fontTable()
定义
isValid()
定义
leading()
定义
__ne__()
定义
__eq__()
定义
pixelSize()
定义
style()
定义
styleName()
定义
swap()
定义
unitsPerEm()
定义
weight()
定义
xHeight()
静态函数#
定义
fromFont()
备注
此文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式来告知我们。
详细描述#
在用户界面中显示文本时,使用的确切字体在一定程度上是未知的。这可能由几个原因造成:例如,在目标系统上实际存在的物理字体可能对开发者来说出乎意料,或者文本可能包含用户选择的样式、大小或不支持所选字体中的书写系统。
因此,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 –
QByteArray
pixelSize – float
hintingPreference –
HintingPreference
创建一个表示由提供的
fontData
包含的字体,大小为像素大小(由pixelSize
给出),并使用由hintingPreference
指定光标偏好的QRawFont
。备注
数据必须包含TrueType或OpenType字体。
- __init__()
创建一个无效的
QRawFont
。- __init__(fileName, pixelSize[, hintingPreference=QFont.PreferDefaultHinting])
- 参数:
fileName – str
pixelSize – float
hintingPreference –
HintingPreference
创建一个表示由
fileName
指向的文件中包含的字体,大小为像素大小(由pixelSize
给出),并使用由hintingPreference
指定光标偏好的QRawFont
。备注
引用的文件必须包含TrueType或OpenType字体。
- __init__(other)
- 参数:
other –
QRawFont
创建一个与
other
相等的QRawFont
的副本。这是一个重载函数。
返回
QRawFont
中每个glyphIndexes
的 advances,单位为像素。advances 表示给定字符到下一个字符绘制位置的距离,使得这两个字符看起来像是无间距的。每个字符的 advances 是单独计算的。- advancesForGlyphIndexes(glyphIndexes, layoutFlags)
- 参数:
glyphIndexes – .list of quint32
layoutFlags –
LayoutFlag
组合
- 返回类型:
.list of QPointF
返回
QRawFont
中每个glyphIndexes
的 advances,单位为像素。advances 表示给定字符到下一个字符绘制位置的距离,使得这两个字符看起来像是无间距的。advances 的计算方式由layoutFlags
控制。备注
当请求
KernedAdvances
时,此函数将应用 TrueType 表KERN
中的字距调整规则,如果字体中可用。在许多现代字体中,字距调整通过 OpenType 规则或 AAT 规则处理,这需要对文本进行完整的形状处理。要获取完全形状文本的结果,请使用QTextLayout
。- alphaMapForGlyph(glyphIndex[, antialiasingType=QRawFont.AntialiasingType.SubPixelAntialiasing[, transform=QTransform()]])#
- 参数:
glyphIndex – int
antialiasingType –
AntialiasingType
transform –
QTransform
- 返回类型:
此函数返回底层字体中给定
glyphIndex
字符的位图图像,使用指定的transform
。如果QRawFont
无效,此函数将返回一个无效的QImage
。如果字体是彩色字体,则结果图像将包含当前像素大小渲染的字符。在这种情况下,将忽略
antialiasingType
。否则,如果
antialiasingType
设置为SubPixelAntialiasing
,则结果图像将为Format_RGB32
,并且每个像素的 RGB 值将表示在字符栅格化中的像素子像素不透明度。否则,图像将为Format_Indexed8
格式,并且每个像素将包含在字符栅格化中的像素不透明度。- ascent()#
- 返回类型:
float
返回此
QRawFont
在像素单位中的上升线。字体的上升线是从基线到字符延伸的最高位置的距离。在实践中,有些字体设计者会打破这个规则,例如,当他们在字符顶部放置多个重音符号时,或者为了适应一门异国语言的罕见字符,因此这个值可能太小(尽管很少见)。
另见
- averageCharWidth()#
- 返回类型:
float
返回此
QRawFont
在像素单位中的平均字符宽度。返回包含具有给定
glyphIndex
的字符的最小矩形。- capHeight()#
- 返回类型:
float
返回此
QRawFont
的像素单位中的帽高。字体的大写字母高度是指大写字母基线之上的高度。具体而言,是指像H或I这样的平坦字母的高度,而不是像O这样的圆形字母或像A这样的尖角字母,后者两者都可能显示超射。
另见
- descent()#
- 返回类型:
float
返回此
QRawFont
的降距,单位为像素。降距是指从基线到字符延伸到最低点的距离。实际上,一些字体设计师会打破这个规则,例如为了适应一种异国语言的特殊字符,所以这个值可能太小,尽管这种情况很少见。
另见
- familyName()#
- 返回类型:
str
返回此
QRawFont
的族名。- fontTable(tag)#
- 参数:
tag –
Tag
- 返回类型:
从底层物理字体检索由
tag
指定的sfnt表,如果未找到此类表,则返回一个空字节数组。返回的字体表的字节顺序是大端,如同sfnt格式所指定。- fontTable(tagName)
- 参数:
tagName – str
- 返回类型:
此函数重载了
Tag)
。名称必须是四个字符的字符串。
- static fromFont(font[, writingSystem=QFontDatabase.Any])#
- 参数:
font –
QFont
writingSystem –
WritingSystem
- 返回类型:
根据字体查询获取物理表示形式。返回的物理字体是Qt在
writingSystem
中显示文本时首选的字体。警告
此函数可能非常昂贵,不应在性能敏感的代码中调用。
- glyphIndexesForString(text)#
- 参数:
text – str
- 返回类型:
返回一个quint32的列表。
将由
text
提供的 Unicode 点字符串转换为使用底层字体的 CMAP 表的符号索引,并返回包含结果的列表。请注意,在字体中存在其他影响文本形状的表时,返回的符号索引将无法正确表示文本的渲染。为了获取正确形状的文本,您可以使用
QTextLayout
来排版和形状文本,然后调用 QTextLayout::glyphs() 以获取符号索引列表集合和QRawFont
对。另见
advancesForGlyphIndexes()
glyphIndexesForChars()
QGlyphRun
glyphRuns()
glyphRuns()
- hintingPreference()#
- 返回类型:
返回构建此
QRawFont
时使用的提示首选项。- isValid()#
- 返回类型:
布尔型
如果
QRawFont
有效则返回true
,否则为false
。- leading()#
- 返回类型:
float
以像素为单位返回此
QRawFont
的行间隔。这是自然的行间间距。
另见
- lineThickness()#
- 返回类型:
float
返回沿文本绘制线条(下划线、上划线等)的厚度。
- loadFromData(fontData, pixelSize, hintingPreference)#
- 参数:
fontData –
QByteArray
pixelSize – float
hintingPreference –
HintingPreference
用提供的
fontData
中的字体替换当前的QRawFont
,字体数据的尺寸由pixelSize
给出,并使用由hintingPreference
指定的提示首选项。fontData
必须包含 TrueType 或 OpenType 字体。- loadFromFile(fileName, pixelSize, hintingPreference)#
- 参数:
fileName – str
pixelSize – float
hintingPreference –
HintingPreference
用由
fileName
指定的文件的 内容替换当前QRawFont
,并为pixelSize
给出的尺寸(以像素为单位),并使用由hintingPreference
指定的光栅化偏好。文件必须引用 TrueType 或 OpenType 字体。
- maxCharWidth()#
- 返回类型:
float
返回字体中最宽字符的宽度。
另见
如果此
QRawFont
不等于other
,则返回true
。否则,返回false
。如果此
QRawFont
等于other
,则返回true
。否则,返回false
。- pathForGlyph(glyphIndex)#
- 参数:
glyphIndex – int
- 返回类型:
此函数返回由
QRawFont
在底层字体中提供的glyphIndex
的形状,如果QRawFont
无效,它返回一个空的QPainterPath
。返回的符号总是不带提示。
- pixelSize()#
- 返回类型:
float
返回为此
QRawFont
设置的像素尺寸。像素尺寸会影响符号的光栅化,pathForGlyph()
返回的符号的大小,并将其用于将内部度量从设计单位转换为逻辑像素单位。- setPixelSize(pixelSize)#
- 参数:
pixelSize – float
使用指定的
pixelSize
设置字体渲染的像素大小。另见
返回此
QRawFont
的样式。另见
- styleName()#
- 返回类型:
str
返回此
QRawFont
的样式名称。另见
- supportedWritingSystems()#
- 返回类型:
返回字体支持的脚本,该信息由字体文件中设计者提供。请注意,这并不能保证字体支持特定Unicode字符。您可以使用
supportsCharacter()
检查是否支持单个特定字符。- supportsCharacter(character)#
- 参数:
character -
QChar
- 返回类型:
布尔型
如果字体具有与给定
character
相对应的字形,则返回true
。- supportsCharacter(ucs4)
- 参数:
ucs4 - int
- 返回类型:
布尔型
这是一个重载函数。
如果字体具有与UCS-4编码字符
ucs4
相对应的字形,则返回true
。与
other
交换此原始字体。此函数非常快速且从不失败。- underlinePosition()#
- 返回类型:
float
返回基于基线绘制此字体渲染的文本下划线位置。
- unitsPerEm()#
- 返回类型:
float
返回定义此
QRawFont
每个em方形的宽度和高度的单元数量。此值与像素大小一起用于将设计度量转换为像素单位,因为内部度量是以单元指定的,而像素大小给出1 em像素的大小。- weight()#
- 返回类型:
int
返回此
QRawFont
的字重。另见
- xHeight()#
- 返回类型:
float
返回此
QRawFont
在像素单位下的xHeight。这通常与字符‘x’的高度相同,但不总是如此。
另见