文本

开罗有两套文本呈现功能:

  • 名称中包含文本的函数构成了cairo的toy-text-api。toy API采用UTF-8编码文本,其功能仅限于呈现简单的从左到右文本,没有高级功能。这意味着,例如,大多数复杂的脚本,如希伯来语、阿拉伯语和印度语脚本都是毫无疑问的。也没有字距或发音符号的正确位置。字体选择也相当有限,无法处理所选字体不包含文本中字符的情况。这组函数实际上是一个玩具文本API,用于测试和演示。任何严重的应用都应避免使用。

  • 名字中带有标志符号的函数形成了cairo的低级文本API。低级API依赖于用户将文本转换为一组标志符号索引和位置。这是一个非常困难的问题,最好由外部库处理,如Pangocairo,它是Pango文本布局和呈现库的一部分。Pango可从http://www.pango.org/获取。

类字体()

class cairo.FontFace

A cairo.FontFace 指定字体的所有方面,而不是大小或字体矩阵(字体矩阵用于通过在两个方向上不相等地倾斜或缩放字体来扭曲字体)。一 FontFace 可以设置在 Context 通过使用 Context.set_font_face() 大小和字体矩阵设置为 Context.set_font_size()Context.set_font_matrix() .

有各种类型的 FontFace ,取决于他们使用的字体后端。

备注

此类不能直接实例化,它由 Context.get_font_face() .

类FreeTypeFontFace (FontFace

freetype字体-freetype的字体支持。

freetype字体后端主要用于在GNU/Linux系统上呈现文本,但也可用于其他平台。

备注

pycairo中没有实现freetype字体,因为没有提供C API的freetype(和fontconfig)的开源python绑定。对于任何有兴趣向pycairo添加freetype支持的人来说,这是一个可能的项目想法。

ToyFontFace类 (FontFace

class cairo.ToyFontFace(family: str, slant: FontSlant = Ellipsis, weight: FontWeight = Ellipsis)

这个 cairo.ToyFontFace 类不能用于 Context.select_font_face() 独立于上下文创建玩具字体。

在 1.8.4 版本加入.

__init__(family: str, slant: FontSlant = Ellipsis, weight: FontWeight = Ellipsis) None
参数:

创建一个 ToyFontFace 来自三重家庭,倾斜和重量。这些字体用于“toy”字体API的实现。

如果族是零长度字符串“”,则假定为平台特定的默认族。然后可以使用 get_family() .

这个 Context.select_font_face() 方法使用此方法创建字体。请参阅该函数了解玩具字体的限制。

get_family() str
返回:

玩具字体的姓氏

在 1.8.4 版本加入.

get_slant() FontSlant
返回:

字体倾斜值

在 1.8.4 版本加入.

get_weight() FontWeight
返回:

字体粗细值

在 1.8.4 版本加入.

类userfontface (FontFace

用户字体功能允许cairo用户为字体中的字形提供绘图。这在实现非标准格式的字体(如SVG字体和Flash字体)中最有用,但也可以被游戏和其他应用程序用于绘制“时髦”字体。

备注

尚未将userfontface支持添加到pycairo。如果您在pycairo中需要此功能,请通过向cairo邮件列表发送消息或打开pycairo bug报告来注册您的兴趣。

类scaledFont())

class cairo.ScaledFont(font_face: FontFace, font_matrix: Matrix, ctm: Matrix, options: FontOptions)

A ScaledFont 是按特定大小和设备分辨率缩放的字体。一 ScaledFont 对于库或应用程序希望缓存对缩放字体的引用以加快度量计算的低级字体使用最有用。

根据所使用的字体后端,缩放字体有多种类型。

__init__(font_face: FontFace, font_matrix: Matrix, ctm: Matrix, options: FontOptions) None
参数:
  • font_face -- 一 FontFace 实例

  • font_matrix -- 字体空间到用户空间的转换 Matrix 字体。在最简单的n点字体的情况下,这个矩阵只是按n缩放的比例,但它也可以用来剪切字体或沿两个轴不相等地拉伸字体。见 Context.set_font_matrix() .

  • ctm -- 用户到设备的转换 Matrix 将使用的字体。

  • options -- 一 FontOptions 获取字体度量值并用它进行呈现时要使用的实例。

创建一个 ScaledFont 来自A的对象 FontFace 以及描述字体大小和使用环境的矩阵。

extents() Tuple[float, float, float, float, float]

获取的度量值 ScaledFont .

get_ctm() Matrix
返回:

CTM

返回用于将缩放字体创建到CTM中的CTM。注意,CTM的平移偏移(X0,Y0)被忽略 ScaledFont() . 所以,这个函数返回的矩阵总是有0,0作为x0,y0。

在 1.12.0 版本加入.

get_font_face() FontFace
返回:

这个 FontFace 这个 ScaledFont 是为创建的。

在 1.2 版本加入.

get_font_matrix() Matrix
返回:

矩阵

返回创建缩放字体时使用的字体矩阵。

get_font_options() FontOptions
返回:

字体选项

返回创建缩放字体时使用的字体选项。

在 1.12.0 版本加入.

get_scale_matrix() Matrix
返回:

比例 Matrix

缩放矩阵是字体矩阵和与缩放字体相关联的CTM的乘积,因此是从字体空间到设备空间的矩阵映射。

在 1.8 版本加入.

glyph_extents(glyphs: Sequence[Glyph]) TextExtents
参数:

glyphs -- 字形,一系列 Glyph

在 1.15 版本加入.

获取字形列表的范围。范围描述了一个用户空间矩形,它包含glyph的“inked”部分(它们将由 Context.show_glyphs() 如果开罗图形状态设置为与缩放字体相同的字体面、字体矩阵、CTM和字体选项。此外,x_advance和y_advance值表示当前点被cairo_show_glyphs()提前的量。

请注意,空白标志符号不会影响矩形的大小(extents.width和extents.height)。

text_extents(text: str) TextExtents
参数:

text -- 文本

获取文本字符串的范围。范围描述了一个用户空间矩形,该矩形包含在原点(0,0)绘制的文本的“墨迹”部分(如 Context.show_text() 如果将cairo图形状态设置为与 ScaledFont )此外,x撊advance和y撊advance值指示当前点的提前量。 Context.show_text() .

请注意,空白字符不会直接影响矩形的大小(宽度和高度)。它们确实通过改变非空白字符的位置间接地作出贡献。特别是,尾随空格字符可能不会影响矩形的大小,尽管它们会影响x_advance和y_advance值。

在 1.2 版本加入.

text_to_glyphs(x: float, y: float, utf8: str, with_clusters: bool = True) Tuple[List[Glyph], List[TextCluster], TextClusterFlags] | List[Glyph]
参数:
  • x -- 放置第一个标志符号的X位置

  • y -- 要放置第一个标志符号的Y位置

  • utf8 -- 一串文本

  • with_clusters -- 如果 False 只计算并返回glyph列表

返回:

一组( [Glyph] , [TextCluster] , TextClusterFlags

抛出:

Error --

在 1.15 版本加入.

使用群集映射将UTF-8文本转换为glyph列表,该列表可用于以后的渲染。

有关群集和群集标志如何将输入UTF-8文本映射到输出标志符号的详细信息,请参见 Context.show_text_glyphs() .

输出值可以很容易地传递给 Context.show_text_glyphs() Context.show_glyphs() 或相关函数,假定操作使用完全相同的缩放字体。

类fontOptions()

class cairo.FontOptions

一种不透明的结构,包含呈现字体时使用的所有选项。

A的个人特征 FontOptions 可以使用名为 FontOptions.set_<feature_name>FontOptions.get_<feature_name> ,就像 FontOptions.set_antialias()FontOptions.get_antialias() .

新功能可以添加到 FontOptions 未来。因此, FontOptions.copy()FontOptions.equal()FontOptions.merge()FontOptions.hash() 应用于复制、检查是否相等、合并或计算fontOptions对象的哈希值。

机具 __eq__ and _ _ne__`使用 `equal() 从1.12.0开始。

__init__() None

分配一个新的FontOptions对象,其中所有选项都初始化为默认值。

get_antialias() Antialias
返回:

反锯齿模式 FontOptions 对象

get_hint_style() HintStyle
返回:

的提示样式 FontOptions 对象

get_subpixel_order() SubpixelOrder
返回:

的子像素顺序 FontOptions 对象

set_antialias(antialias: Antialias) None
参数:

antialias -- 反锯齿模式

这指定渲染文本时要执行的抗锯齿类型。

set_hint_metrics(hint_metrics: HintMetrics) None
参数:

hint_metrics -- 提示度量模式

这控制度量是否量化为设备单元中的整数值。

set_hint_style(hint_style: HintStyle) None
参数:

hint_style -- 提示样式

这将控制字体轮廓是否适合像素网格,如果适合,则控制是否优化保真度或对比度。

merge(other: FontOptions) None
参数:

other (FontOptions) -- 另一个 FontOptions

将其他非默认选项合并到选项中,替换现有值。可以认为此操作与将其他操作与 Operator.OVER .

在 1.12.0 版本加入.

copy() FontOptions
返回:

一个新的 FontOptions

返回从原始字体复制选项值的新字体选项对象。

在 1.12.0 版本加入.

hash() int
返回:

字体选项对象的哈希值

计算字体选项对象的哈希;存储包含 FontOptions 在哈希表中。

在 1.12.0 版本加入.

equal(other: FontOptions) bool
参数:

other -- 另一个 FontOptions

返回:

True 如果两个字体选项对象的所有字段都匹配。请注意,此函数将返回 False 如果任何一个对象出错。

比较两个字体选项对象是否相等。

在 1.12.0 版本加入.

set_variations(variations: str | None) None
参数:

variations -- 新字体变体,或 None

设置字体选项对象的OpenType字体变体。字体变体被指定为具有类似于CSS字体变体设置的格式的字符串。字符串包含以逗号分隔的轴分配列表,每个分配由一个4个字符的轴名称和一个值组成,用空格和可选的等号分隔。

实例:

  • wght=200,wdth=140.5

  • WGHT 200,WDTH 140.5

在 1.18.0 版本加入: 仅适用于开罗1.15.12+

get_variations() str
返回:

字体选项对象的字体变体。返回的字符串属于选项,不能修改。在字体选项对象被破坏或此对象中的字体变化被修改之前,它是有效的。 set_variations() .

获取字体选项对象的OpenType字体变体。见 set_variations() 有关字符串格式的详细信息。

在 1.18.0 版本加入: 仅适用于开罗1.15.12+

get_hint_metrics() HintMetrics
返回:

的提示度量模式 FontOptions 对象

set_subpixel_order(subpixel_order: SubpixelOrder) None
参数:

subpixel_order -- 亚像素顺序

子像素顺序指定以抗锯齿模式渲染时显示设备上每个像素内颜色元素的顺序。 cairo.Antialias.SUBPIXEL .

set_color_mode(color_mode: ColorMode) None
参数:

color_mode -- 新的颜色模式

设置字体选项对象的颜色模式。这控制颜色字体是以彩色呈现还是以轮廓呈现。请参阅的文档 ColorMode 获取完整的详细信息。

在 1.25.0 版本加入: 仅适用于开罗1.17.8+

get_color_mode() ColorMode
返回:

字体选项对象的颜色模式

获取字体选项对象的颜色模式。请参阅的文档 ColorMode 获取完整的详细信息。

在 1.25.0 版本加入: 仅适用于开罗1.17.8+

set_color_palette(palette_index: int) None
参数:

palette_index -- CPAL表中的调色板索引

设置字体选项对象的OpenType字体调色板。带有CPAL表的OpenType颜色字体可以包含多个调色板。默认调色板索引为 COLOR_PALETTE_DEFAULT 。如果Palette_index无效,则使用默认调色板。

在 1.25.0 版本加入: 仅适用于开罗1.17.8+

get_color_palette() int
返回:

调色板索引

获取字体选项对象的OpenType颜色字体调色板。

在 1.25.0 版本加入: 仅适用于开罗1.17.8+

set_custom_palette_color(index: int, red: float, green: float, blue: float, alpha: float) None
参数:
  • index -- 要设置的颜色的索引

  • red -- 红色成分

  • green -- 颜色的绿色成分

  • blue -- 颜色的蓝色成分

  • alpha -- 颜色的alpha分量

设置字体选项对象的自定义调色板颜色。这将覆盖指定颜色索引处的调色板颜色。此替代独立于选定的调色板索引,并将保持不变 FontOptions.set_color_palette() 被调用以更改调色板索引。

只能覆盖字体调色板中已有的颜色索引。

在 1.25.0 版本加入: 仅适用于开罗1.17.8+

get_custom_palette_color(index: int) Tuple[float, float, float, float]
参数:

index -- 要获取的颜色的索引

返回:

(红、绿、蓝、阿尔法)浮点数

抛出:

Error -- 如果颜色索引不存在自定义颜色,则返回。

获取字体选项对象的颜色索引的自定义调色板颜色。

在 1.25.0 版本加入: 仅适用于开罗1.17.8+