class QGlyphRun#

QGlyphRun 类提供了对字体内部字形直接的访问。 更多信息...

概要#

方法#

注意

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

详细描述#

当Qt显示编码为Unicode的文本字符串时,它首先将Unicode点转换为基于一个或多个字体的字形索引列表和位置列表。在这种情况下,文本的Unicode表示和 QFont 对象将作为一个方便的抽象,隐藏在屏幕上显示文本时实际发生的事情的细节。例如,当文本实际上到达屏幕时,它可能由用户指定的字体以及其他字体表示,例如,原始选择的字体不支持文本中包含的所有书写系统。

在某些情况下,对于应用程序开发者来说,对特定字体中绘制到屏幕上的哪个字形有更多底层控制可能是有用的。这可能是使用外部字体引擎和Qt文本形状应用程序的情况。 QGlyphRun 提供了获取屏幕上文本所需原始数据的接口。它包含一个字形索引列表,每个字形的位置和一个字体。

确保所选字体的确包含提供的字形索引是用户的责任。

可以使用 glyphRuns()glyphRuns() 将Unicode编码的文本转换为 QGlyphRun 对象的列表,并使用 drawGlyphRun() 绘制字形。

注意

请注意,QRawFont 被认为是构建它的线程本地的。这意味着如果将 QRawFont 移动到不同的线程,需要创建并设置一个新的 QRawFontQGlyphRun 上。如果 QGlyphRun 包含对来自不同线程的 QRawFont 的引用,则无法使用 QPainter 绘制字形,因为在此情况下,QRawFont 被认为是无效的和不可访问的。

class GlyphRunFlag#

(继承 enum.Flag ) 此枚举描述了可能更改视觉布局中字符运行呈现或行为的方式。能够生成字符运行的布局可以根据相关内部数据设置这些标志,以保留呈现文本所需的信息,以符合布局用户的设计。

常量

描述

QGlyphRun.Overline

指示应将字符与上划线一起可视化。

QGlyphRun.Underline

指示应将字符与下划线一起可视化。

QGlyphRun.StrikeOut

指示在视觉上应将字符划掉。

QGlyphRun.RightToLeft

指示字符是以从右到左的顺序排列的。这可能会影响与字符运行相关的其他元素的定位,例如行间文本对象。

QGlyphRun.SplitLigature

指示字符运行拆分了合字符。这意味着一个合字符被包含在运行中,但由它表示的字符只对应合字符的一部分。在这种情况下,可以使用该字符运行对应字符的 boundingRect() 函数来检索由字符运行表示的字符所占的区域。在可视化字符时,需要小心处理到这个边界矩形的裁剪,以确保只绘制合字符的相应部分。特别是,在从特定字符范围的 QTextLayout 中检索字符运行时可能会出现这种情况,例如在检索 QTextLayout 的选中区域时。

__init__(other)#
参数:

otherQGlyphRun

构造一个 QGlyphRun 对象,该对象是 other 的副本。

__init__()

构造一个空的 QGlyphRun 对象。

boundingRect()#
返回类型:

QRectF

返回包含此 QGlyphRun 中所有字符的最小矩形。如果已经使用 setBoundingRect() 设置了边界矩形,则返回该矩形。否则,将基于字符运行的字体度量计算边界矩形。

另请参阅

setBoundingRect()

clear()#

清除QGlyphRun对象中的所有数据。

flags()#
返回类型:

GlyphRunFlag组合而成。

返回为这个QGlyphRun设置的标志。

glyphIndexes()#
返回类型:

quint32的列表

返回这个QGlyphRun对象的字形索引。

isEmpty(){{ link }}
返回类型:

bool

如果QGlyphRun不包含任何字形,则返回true

isRightToLeft()#
返回类型:

bool

如果这个QGlyphRun包含从右到左绘制字形的字形,则返回true

另请参阅

setRightToLeft() flags()

__ne__(other)#
参数:

otherQGlyphRun

返回类型:

bool

比较other与此QGlyphRun对象。如果在字形索引列表、位置列表或字体中存在任何不同,则返回true,否则返回false.

__eq__other)#
参数:

otherQGlyphRun

返回类型:

bool

将其它内容与这个 QGlyphRun 对象进行比较。如果字形索引列表、位置列表和字体都相等,则返回 true,否则返回 false

overline()#
返回类型:

bool

如果这个 QGlyphRun 对象应该使用上划线装饰进行绘制,则返回 true

另请参阅

setOverline() flags()

positions()#
返回类型:

返回每个字形的基线边缘的位置,类型为 QPointF 列表

返回此字形索引集合中每个字形的边缘位置。

另请参阅

setPositions()

rawFont()#
返回类型:

QRawFont

返回为这个 QGlyphRun 对象选择的字体。

另请参阅

setRawFont()

setBoundingRect(boundingRect)#
参数:

boundingRectQRectF

将字形在这个 QGlyphRun 中的边框矩形设置为 boundingRect。如果此矩形为 null,则将返回字形运行中的字形的边框矩形,否则返回该矩形。

注意

除非你在实现文本造型,否则通常不需要使用此函数。该函数专门用于当 QGlyphRun 应表示一个小于其包含的字形区域的区域时使用。例如,如果通过调用 glyphRuns() 获取的字形运行,并且指定的范围只包含连字符(将两个或更多字符组合成单个字形)的一部分时,这种情况就会发生。在这种情况下,边框矩形应仅包括根据连字符中字符的平均宽度计算的正确部分的连字符字形。

为了支持此类情况(例如,带有不同于正文颜色的选择的绘制示例),必须将绘图机制裁剪到来自boundingRect()返回的矩形中,以避免绘制整个字符形。

另请参阅

boundingRect()

setFlag(flag[, enabled=true])#
参数:

如果enabled为true,则启用flag;否则,它被禁用。

另请参阅

flags() setFlags()

setFlags(flags)#
参数:

flagsGlyphRunFlag的组合

将此QGlyphRun的标志设为flags

另请参阅

setFlag() flags()

setGlyphIndexes(glyphIndexes)#
参数:

glyphIndexes – .list of quint32

为此QGlyphRun对象设置glyph索引为glyphIndexes。字符索引必须对所选字体有效。

另请参阅

glyphIndexes()

setOverline(overline)#
参数:

overline – bool

如果overline为true,则表示此QGlyphRun应以上划线装饰绘制。否则,QGlyphRun应以无上划线装饰绘制。

setPositions(positions)#
参数:

positions – .list of QPointF

为该组字形索引中的每个字形的基底线边缘设置位置为 positions

另请参阅

positions()

setRawData(glyphIndexArray, glyphPositionArray, size)#
参数:
  • glyphIndexArrayquint32

  • glyphPositionArrayQPointF

  • size – int

将此 QGlyphRun 的字形索引和位置设置为使用数组 glyphIndexArrayglyphPositionArray 的前 size 个元素。数据不会被复制。调用者必须保证只要此 QGlyphRun 及其任何副本存在,数组就不会被删除。

setRawFont(rawFont)#
参数:

rawFontQRawFont

将用于查找字形索引的字体设置为指定的 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

另请参阅

setStrikeOut() flags()

stringIndexes()#
返回类型:

.qsizetype列表

如果从字符串中构建了字形运行,并从布局中请求了字符串索引,则返回每个字形索引对应的字符串索引。在这种情况下,返回向量的长度将对应于glyphIndexes()的长度。在其他情况下,将为空。

由于单个字符可能与源字符串中的多个字符对应,因此字符串索引列表中可能有间隙。例如,如果字符串“first”被包含“fi”字符对的连字符的字体处理,那么五个字符的字符串将生成只包含四个图标的字形运行。在这种情况下,字形索引可能为(1,2,3,4)(四个任意的字形索引),而字符串索引将是(0,2,3,4)。由于图标的逻辑顺序与字符串相同,因此在这种情况下可以隐含地认为第一个图标跨字符0和1。

相反,单个字符也可能生成多个图标,在这种情况下,字符串索引列表中将有重复条目。

字符串索引对应于字符串,通过 sourceString() 可选地可用。

swap(other)#
参数:

otherQGlyphRun

other 交换此字形运行实例。这个函数非常快且永远不会失败。

underline()#
返回类型:

bool

如果此 QGlyphRun 应该用下划线装饰绘制,则返回 true

另请参阅

setUnderline() flags()