PySide6.QtGui.QGlyphRun¶
- class QGlyphRun¶
QGlyphRun类提供了对字体内部字形的直接访问。更多…概要¶
方法¶
def
__init__()def
boundingRect()def
clear()def
flags()def
glyphIndexes()def
isEmpty()def
isRightToLeft()def
__ne__()def
__eq__()def
overline()def
positions()def
rawFont()def
setFlag()def
setFlags()def
setOverline()def
setPositions()def
setRawData()def
setRawFont()def
setRightToLeft()def
setStrikeOut()def
setUnderline()def
sourceString()def
strikeOut()def
stringIndexes()def
swap()def
underline()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
当Qt显示以Unicode编码的文本字符串时,它会首先将Unicode点转换为基于一个或多个字体的字形索引列表和位置列表。在这种情况下,文本的Unicode表示和
QFont对象将作为一个方便的抽象,隐藏了在屏幕上显示文本时实际发生的细节。例如,当文本实际到达屏幕时,它可能由一组字体表示,而不仅仅是用户指定的字体,例如在最初选择的字体不支持文本中包含的所有书写系统的情况下。在某些情况下,作为应用程序开发者,能够对特定字体中的字形绘制到屏幕上进行更底层的控制可能会很有用。例如,在使用外部字体引擎和文本整形器与Qt一起的应用程序中,这种情况可能会出现。
QGlyphRun提供了一个接口,用于获取屏幕上显示文本所需的原始数据。它包含一个字形索引列表、每个字形的位置和一个字体。用户有责任确保所选字体实际包含提供的字形索引。
glyphRuns()或glyphRuns()可用于将 Unicode 编码的文本转换为QGlyphRun对象的列表,而drawGlyphRun()可用于绘制字形。注意
请注意,
QRawFont被认为是构造它的线程本地的。这意味着如果QGlyphRun被移动到不同的线程,必须创建并设置一个新的QRawFont。如果QGlyphRun包含来自与当前线程不同的线程的QRawFont引用,那么将无法使用QPainter绘制字形,因为在这种情况下QRawFont被认为是无效且不可访问的。- class GlyphRunFlag¶
(继承自
enum.Flag) 此枚举描述了可能改变字形运行在视觉布局中的呈现方式或行为的标志。生成字形运行的布局可以根据相关的内部数据设置这些标志,以保留呈现用户预期文本所需的信息。常量
描述
QGlyphRun.Overline
表示字形应连同上划线一起显示。
QGlyphRun.Underline
表示字形应连同下划线一起显示。
QGlyphRun.StrikeOut
表示字形应被视觉上划掉。
QGlyphRun.RightToLeft
表示字形是从右到左排列的。这可能会影响与字形运行相关的其他屏幕元素的定位,例如内联文本对象。
QGlyphRun.SplitLigature
表示字形运行分割了一个连字字形。这意味着连字字形包含在运行中,但由它表示的字符仅对应于该连字的一部分。在这种情况下,字形运行的
boundingRect()函数可用于检索由字形运行表示的字符对应的字形所覆盖的区域。在可视化字形时,需要注意裁剪到此边界矩形,以确保仅绘制连字的相应部分。特别是在从QTextLayout中检索特定字符范围的字形运行时,例如在检索QTextLayout的选定区域时,可能会出现这种情况。
- __init__()¶
构造一个空的
QGlyphRun对象。- __init__(other)
- Parameters:
其他 –
QGlyphRun
构造一个
QGlyphRun对象,它是other的副本。返回包含此
QGlyphRun中所有字形的最小矩形。如果已经使用setBoundingRect()设置了边界矩形,则将返回该矩形。否则,将根据字形运行中字形的字体度量计算边界矩形。另请参阅
- clear()¶
清除
QGlyphRun对象中的所有数据。- flags()¶
- Return type:
GlyphRunFlag的组合
返回为此
QGlyphRun设置的标志。另请参阅
- glyphIndexes()¶
- Return type:
.quint32列表
返回此
QGlyphRun对象的字形索引。- isEmpty()¶
- Return type:
布尔
如果
QGlyphRun不包含任何字形,则返回true。- isRightToLeft()¶
- Return type:
布尔
如果此
QGlyphRun包含从右到左绘制的字形,则返回true。另请参阅
将
other与此QGlyphRun对象进行比较。如果字形索引列表、位置列表或字体有任何不同,则返回true,否则返回false。将
other与此QGlyphRun对象进行比较。如果字形索引列表、位置列表和字体都相等,则返回true,否则返回false。- overline()¶
- Return type:
布尔
如果这个
QGlyphRun应该用上划线装饰绘制,则返回true。另请参阅
返回这组字形索引中每个字形的基线边缘的位置。
另请参阅
返回为此
QGlyphRun对象选择的字体。另请参阅
设置此
QGlyphRun中字形的边界矩形为boundingRect。除非它为null,否则此矩形将由boundingRect()返回,在这种情况下,将返回字形运行中字形的边界矩形。注意
除非你在实现文本形状处理,否则你不应该使用这个函数。它特别用于当
QGlyphRun应该表示一个比它包含的字形区域更小的区域时。这种情况可能发生,例如,如果通过调用glyphRuns()检索字形运行,并且指定的范围仅包括连字的一部分(其中两个或多个字符组合成一个字形)。在这种情况下,边界矩形应仅包括连字字形的适当部分,基于连字中字符的平均宽度的计算。为了支持这种情况(一个例子是应该用与主文本颜色不同的颜色绘制的选择),有必要将绘制机制裁剪到从
boundingRect()返回的矩形,以避免绘制整个连字字形。另请参阅
- setFlag(flag[, enabled=true])¶
- Parameters:
flag –
GlyphRunFlagenabled – 布尔值
如果
enabled为 true,则flag被启用;否则,它被禁用。另请参阅
- setFlags(flags)¶
- Parameters:
flags –
GlyphRunFlag的组合
将此
QGlyphRun的标志设置为flags。- setGlyphIndexes(glyphIndexes)¶
- Parameters:
glyphIndexes – .quint32的列表
将此
QGlyphRun对象的字形索引设置为glyphIndexes。字形索引必须对所选字体有效。另请参阅
- setOverline(overline)¶
- Parameters:
上划线 – 布尔值
表示如果
overline为真,则此QGlyphRun应绘制上划线装饰。否则,QGlyphRun应绘制无上划线装饰。- setPositions(positions)¶
- Parameters:
positions – QPointF 的列表
将每个字形索引集中字形的基线边缘位置设置为
positions。另请参阅
- setRawData(glyphIndexArray, glyphPositionArray, size)¶
- Parameters:
glyphIndexArray –
quint32glyphPositionArray –
QPointFsize – int
设置此
QGlyphRun的字形索引和位置,以使用数组glyphIndexArray和glyphPositionArray中的前size个元素。数据不会被复制。调用者必须保证在此QGlyphRun及其任何副本存在期间,数组不会被删除。设置用于查找字形索引的字体为指定的
rawFont。- setRightToLeft(on)¶
- Parameters:
on – 布尔值
表示如果
rightToLeft为真,则此QGlyphRun包含应从右到左排序的字形。否则,字形的顺序假定为从左到右。- setSourceString(sourceString)¶
- Parameters:
sourceString – str
将字形运行对应的字符串设置为
sourceString。如果设置了,stringIndexes()返回的索引应该是该字符串的索引。- setStrikeOut(strikeOut)¶
- Parameters:
strikeOut – 布尔值
表示如果
strikeOut为true,则此QGlyphRun应绘制删除线装饰。否则,QGlyphRun应绘制无删除线装饰。- setStringIndexes(stringIndexes)¶
- Parameters:
stringIndexes – .qsizetype 的列表
将对应于字形索引的字符串索引列表设置为
stringIndexes有关此列表的约定,请参见
stringIndexes()了解更多详情。- setUnderline(underline)¶
- Parameters:
下划线 – bool
表示如果
underline为真,则此QGlyphRun应使用下划线装饰绘制。否则,QGlyphRun应不使用下划线装饰绘制。- sourceString()¶
- Return type:
字符串
返回与字形运行对应的字符串,如果字形运行是从字符串创建的并且已从布局请求了该字符串。
- strikeOut()¶
- Return type:
布尔
如果这个
QGlyphRun应该用删除线装饰绘制,则返回true。另请参阅
- stringIndexes()¶
- Return type:
.qsizetype 列表
如果字形运行是从字符串构建的,并且从布局中请求了字符串索引,则返回与每个字形索引对应的字符串索引。在这种情况下,返回的向量的长度将与
glyphIndexes()的长度相对应。在其他情况下,它将为空。由于单个字形可能对应源字符串中的多个字符,因此在字符串索引列表中可能存在间隙。例如,如果字符串“first”由包含字符对“fi”连字的字体处理,那么这个五个字符的字符串将生成仅由四个字形组成的字形运行。在这种情况下,字形索引可能是(1, 2, 3, 4)(四个任意的字形索引),而字符串索引将是(0, 2, 3, 4)。字形按照字符串的逻辑顺序排列,因此在这种情况下,第一个字形跨越了字符0和1。
相反,单个字符也可能生成多个字形,在这种情况下,字符串索引列表中会有重复的条目。
字符串索引对应于字符串,可选地通过
sourceString()获取。将此字形运行实例与
other交换。此函数非常快且永远不会失败。- underline()¶
- Return type:
布尔
如果这个
QGlyphRun应该用下划线装饰绘制,则返回true。另请参阅