文本
开罗有两套文本呈现功能:
名称中包含文本的函数构成了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
- 参数:
family -- 字体系列名称
slant -- 字体的倾斜度,默认为
cairo.FontSlant.NORMAL
.weight -- 字体的字体粗细,默认为
cairo.FontWeight.NORMAL
.
创建一个 ToyFontFace 来自三重家庭,倾斜和重量。这些字体用于“toy”字体API的实现。
如果族是零长度字符串“”,则假定为平台特定的默认族。然后可以使用
get_family()
.这个
Context.select_font_face()
方法使用此方法创建字体。请参阅该函数了解玩具字体的限制。
- 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 以及描述字体大小和使用环境的矩阵。
- get_ctm() Matrix
- 返回:
CTM
返回用于将缩放字体创建到CTM中的CTM。注意,CTM的平移偏移(X0,Y0)被忽略
ScaledFont()
. 所以,这个函数返回的矩阵总是有0,0作为x0,y0。在 1.12.0 版本加入.
- get_font_options() FontOptions
- 返回:
字体选项
返回创建缩放字体时使用的字体选项。
在 1.12.0 版本加入.
- 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开始。
- get_subpixel_order() SubpixelOrder
- 返回:
的子像素顺序 FontOptions 对象
- 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
- 返回:
比较两个字体选项对象是否相等。
在 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+
- 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+