PySide6.QtGui.QFontMetricsF

class QFontMetricsF

QFontMetricsF 类提供字体度量信息。更多

概要

方法

注意

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

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QFontMetricsF 函数用于计算给定字体的字符和字符串的大小。你可以使用现有的 QFont 构造一个 QFontMetricsF 对象来获取该字体的度量信息。如果稍后更改了字体,字体度量对象不会更新。

一旦创建,该对象提供函数来访问字体的各个指标、其字符以及以该字体渲染的字符串。

有几个函数用于操作字体:ascent()descent()height()leading()lineSpacing()返回字体的基本大小属性。underlinePos()overlinePos()strikeOutPos()lineWidth()函数返回用于下划线、上划线或删除线的线条属性。这些函数都非常快速。

还有一些函数用于操作字体中的字形集:minLeftBearing()minRightBearing()maxWidth()。这些函数必然较慢,我们建议尽可能避免使用它们。

对于每个字符,你可以获取它的horizontalAdvance()leftBearing()rightBearing(),并使用inFont()来检查它是否在字体中。你也可以将字符视为字符串,并在其上使用字符串函数。

字符串函数包括horizontalAdvance(),用于返回字符串的宽度(以像素为单位,或对于打印机以点为单位),boundingRect(),用于返回一个足够大的矩形以包含渲染的字符串,以及size(),用于返回该矩形的大小。

示例:

font = QFont("times", 24)
fm = QFontMetricsF(font)
pixelsWide = fm.horizontalAdvance("What's the advance width of self text?")
pixelsHigh = fm.height()
__init__(font)
Parameters:

字体QFont

font构建一个字体度量对象。

字体指标将与用于创建 font 的绘制设备兼容。

字体度量对象保存了在创建时传递给构造函数的字体信息,如果之后字体的属性发生变化,该对象不会更新。

使用 QFontMetricsF (const QFont &, QPaintDevice *) 来获取与特定绘图设备兼容的字体度量。

__init__(fontMetrics)
Parameters:

fontMetricsQFontMetrics

从给定的fontMetrics对象构造一个具有浮点精度的字体度量对象。

__init__(fm)
Parameters:

fmQFontMetricsF

构造fm的副本。

__init__(font, pd)
Parameters:

fontpaintdevice构建一个字体度量对象。

字体度量将与传递的paintdevice兼容。如果paintdeviceNone,则度量将与屏幕兼容,即在使用字体在小部件或pixmaps上绘制文本时获得的度量,而不是在QPicture或QPrinter上。

字体度量对象保存了在创建时传递给构造函数的字体信息,如果之后字体的属性发生变化,该对象不会更新。

ascent()
Return type:

浮点数

返回字体的上升高度。

字体的上升是从基线到字符延伸到的最高位置的距离。实际上,一些字体设计师会打破这一规则,例如当他们在一个字符上放置多个重音符号,或者为了适应某个特定字符时,因此这个值可能会太小(尽管这种情况很少见)。

另请参阅

descent()

averageCharWidth()
Return type:

浮点数

返回字体中字形(glyphs)的平均宽度。

boundingRect(string)
Parameters:

字符串 – str

Return type:

QRectF

返回由text指定的字符串中字符的边界矩形。该边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。

请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与 horizontalAdvance() 方法返回的值不同。

如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用horizontalAdvance()代替。

换行符被当作普通字符处理,作为换行符。

边界矩形的高度至少与返回的值 height() 一样大。

boundingRect(text, textOption)
Parameters:
Return type:

QRectF

返回由text指定的字符串字符的边界矩形,该字符串使用option进行布局。边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。

请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与 horizontalAdvance() 方法返回的值不同。

如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用horizontalAdvance()代替。

换行符被当作普通字符处理,作为换行符。

边界矩形的高度至少与返回的值 height() 一样大。

boundingRect(r, flags, string[, tabstops=0[, tabarray=None]])
Parameters:
  • rQRectF

  • flags – int

  • 字符串 – str

  • tabstops – int

  • tabarray – int

Return type:

QRectF

这是一个重载函数。

返回给定text中字符的边界矩形。这是如果绘制文本时,文本将覆盖的像素集合,当受限于由rect指定的边界矩形时。如果rect是对None对象的引用,例如在传递默认构造的QRectF时,边界矩形将不会限制其大小。

flags 参数是以下标志的按位或:

  • Qt::AlignLeft 对齐到左边框,除了阿拉伯语和希伯来语,它们对齐到右边。

  • Qt::AlignRight 对齐到右边框,除了阿拉伯语和希伯来语,它们对齐到左边。

  • Qt::AlignJustify 生成两端对齐的文本。

  • Qt::AlignHCenter 水平居中对齐。

  • Qt::AlignTop 对齐到顶部边框。

  • Qt::AlignBottom 对齐到底部边框。

  • Qt::AlignVCenter 垂直居中对齐

  • Qt::AlignCenter (== Qt::AlignHCenter | Qt::AlignVCenter)

  • Qt::TextSingleLine 忽略文本中的换行符。

  • Qt::TextExpandTabs 扩展制表符(见下文)

  • Qt::TextShowMnemonic 将“&x”解释为 x;即,带下划线。

  • Qt::TextWordWrap 将文本换行以适应矩形。

Qt::Horizontal 对齐方式默认为 Qt::AlignLeft,垂直对齐方式默认为 Qt::AlignTop。

如果设置了多个水平或垂直对齐标志,则结果对齐方式未定义。

这些标志在 Qt::AlignmentFlag 中定义。

如果在flags中设置了Qt::TextExpandTabs,则使用以下行为来解释文本中的制表符:

  • 如果 tabArray 不为空,它指定了文本中制表符的像素位置序列,以0结尾。

  • 如果 tabStops 不为零,则将其用作制表符间距(以像素为单位)。

请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体。

换行符被处理为换行。

尽管实际字符高度不同,“Yes”和“yes”的边界矩形高度相同。

此函数返回的边界矩形比由更简单的boundingRect()函数计算的矩形稍大。此函数使用maximum leftright字体轴承,这对于多行文本正确对齐是必要的。此外,使用fontHeight()和lineSpacing()来计算高度,而不是单个字符的高度。

另请参阅

horizontalAdvance() boundingRect() Alignment

boundingRectChar(arg__1)
Parameters:

arg__1QChar

Return type:

QRectF

capHeight()
Return type:

浮点数

返回字体的帽高。

字体的帽高是指大写字母在基线以上的高度。具体来说,它是指那些平坦的大写字母的高度——比如H或I——与圆形字母如O或尖形字母如A相对,后两者可能会显示超出部分。

另请参阅

ascent()

descent()
Return type:

浮点数

返回字体的下降部分。

下降是从基线到字符延伸到的最低点的距离。(请注意,这与X不同,X增加了1个像素。)实际上,一些字体设计师会打破这个规则,例如为了适应某个特定字符,因此这个值可能会太小(尽管这种情况很少见)。

另请参阅

ascent()

elidedText(text, mode, width[, flags=0])
Parameters:
  • 文本 – str

  • modeTextElideMode

  • width – 浮点数

  • flags – int

Return type:

字符串

如果字符串 text 的宽度超过 width,则返回字符串的省略版本(即包含“…”的字符串)。否则,返回原始字符串。

mode 参数指定文本是在左侧(例如,“…tech”)、中间(例如,“Tr…ch”)还是右侧(例如,“Trol…”)进行省略。

width 是以像素为单位指定的,而不是字符。

flags 参数是可选的,目前仅支持 Qt::TextShowMnemonic 作为值。

省略标记遵循布局方向。例如,如果modeQt::ElideLeft,则在从右到左的布局中,它将位于文本的右侧;如果modeQt::ElideRight,则它将位于文本的左侧。

fontDpi()
Return type:

浮点数

返回字体DPI。

height()
Return type:

浮点数

返回字体的高度。

这总是等于 ascent() + descent()

另请参阅

leading() lineSpacing()

horizontalAdvance(string, textOption)
Parameters:
Return type:

浮点数

返回使用option布局的text的水平前进像素数。

前进距离是在绘制text之后绘制后续字符的适当距离。

另请参阅

boundingRect()

horizontalAdvance(string[, length=-1])
Parameters:
  • 字符串 – str

  • length – int

Return type:

浮点数

返回text的前length个字符的水平前进像素数。如果length为负数(默认值),则使用整个字符串。即使length明显较短,也会分析text的整个长度。

前进距离是在绘制text之后绘制后续字符的适当距离。

另请参阅

boundingRect()

horizontalAdvanceChar(arg__1)
Parameters:

arg__1QChar

Return type:

浮点数

inFont(ch)
Parameters:

chQChar

Return type:

布尔

如果字符 ch 是字体中的有效字符,则返回 true;否则返回 false

inFontUcs4(ucs4)
Parameters:

ucs4 – 整数

Return type:

布尔

如果由ch给出的字符(以UCS-4/UTF-32编码)是字体中的有效字符,则返回true;否则返回false

leading()
Return type:

浮点数

返回字体的行距。

这是自然的行间距。

另请参阅

height() lineSpacing()

leftBearing(ch)
Parameters:

chQChar

Return type:

浮点数

返回字体中字符 ch 的左间距。

左轴承是字符最左侧像素与字符逻辑原点之间的向右距离。如果字符的像素延伸到逻辑原点的左侧,则该值为负。

请参见horizontalAdvance()以获取此指标的图形描述。

lineSpacing()
Return type:

浮点数

返回从一个基线到下一个基线的距离。

这个值总是等于 leading() + height()

另请参阅

height() leading()

lineWidth()
Return type:

浮点数

返回下划线和删除线的宽度,根据字体的点大小进行调整。

maxWidth()
Return type:

浮点数

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

minLeftBearing()
Return type:

浮点数

返回字体的最小左间距。

这是字体中所有字符的最小leftBearing(字符)。

请注意,如果字体很大,这个函数可能会非常慢。

minRightBearing()
Return type:

浮点数

返回字体的最小右侧间距。

这是字体中所有字符的最小rightBearing(字符)。

请注意,如果字体很大,这个函数可能会非常慢。

__ne__(other)
Parameters:

其他QFontMetricsF

Return type:

布尔

这是一个重载函数。

如果字体度量不等于other字体度量,则返回true;否则返回false

另请参阅

operator==()

__eq__(other)
Parameters:

其他QFontMetricsF

Return type:

布尔

如果字体度量等于other字体度量,则返回true;否则返回false

如果两个字体度量是从相同的QFont构建的,并且它们构建的绘制设备被认为是兼容的,则认为这两个字体度量是相等的。

overlinePos()
Return type:

浮点数

返回从基线到应绘制上划线的距离。

rightBearing(ch)
Parameters:

chQChar

Return type:

浮点数

返回字体中字符 ch 的右侧间距。

右侧间距是字符最右侧像素到后续字符逻辑原点的向左距离。如果字符的像素延伸到字符的horizontalAdvance()右侧,则该值为负。

请参见horizontalAdvance()以获取此指标的图形描述。

size(flags, str[, tabstops=0[, tabarray=None]])
Parameters:
  • flags – int

  • str – str

  • tabstops – int

  • tabarray – int

Return type:

QSizeF

返回给定text中字符的像素大小。

flags 参数是以下标志的按位或:

  • Qt::TextSingleLine 忽略换行符。

  • Qt::TextExpandTabs 扩展制表符(见下文)

  • Qt::TextShowMnemonic 将“&x”解释为 x;即,带下划线。

  • Qt::TextWordWrap 将文本换行以适应矩形。

这些标志定义在 Qt::TextFlag 枚举中。

如果在flags中设置了Qt::TextExpandTabs,则使用以下行为来解释文本中的制表符:

  • 如果 tabArray 不为空,它指定了文本中制表符的像素位置序列,以0结尾。

  • 如果 tabStops 不为零,则将其用作制表符间距(以像素为单位)。

换行符被处理为换行。

注意:尽管实际字符高度不同,“Yes”和“yes”的边界矩形高度是相同的。

另请参阅

boundingRect()

strikeOutPos()
Return type:

浮点数

返回从基线到应绘制删除线的距离。

swap(other)
Parameters:

其他QFontMetricsF

将此字体度量实例与 other 交换。此函数非常快且永远不会失败。

tightBoundingRect(text)
Parameters:

文本 – str

Return type:

QRectF

返回由text指定的字符串中字符的紧密边界矩形。该边界矩形始终至少覆盖文本在(0, 0)处绘制时将覆盖的像素集。

请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与 horizontalAdvance() 方法返回的值不同。

如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用horizontalAdvance()代替。

换行符被当作普通字符处理,作为换行符。

tightBoundingRect(text, textOption)
Parameters:
Return type:

QRectF

返回一个紧密包围由text指定的字符串中的字符的边界矩形,该字符串使用option进行布局。边界矩形始终至少覆盖文本在(0,0)处绘制时将覆盖的像素集。

请注意,边界矩形可能会延伸到 (0, 0) 的左侧,例如对于斜体字体,并且返回的矩形的宽度可能与 horizontalAdvance() 方法返回的值不同。

如果你想知道字符串的提前宽度(以便将一组字符串并排放置),请使用horizontalAdvance()代替。

换行符被当作普通字符处理,作为换行符。

underlinePos()
Return type:

浮点数

返回从基线到应绘制下划线的位置的距离。

xHeight()
Return type:

浮点数

返回字体的‘x’高度。这通常但不总是与字符‘x’的高度相同。