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