matplotlib.ft2font#

class matplotlib.ft2font.FT2Font(self: matplotlib.ft2font.FT2Font, filename: object, hinting_factor: int = 8, *, _fallback_list: list[matplotlib.ft2font.FT2Font] | None = None, _kerning_factor: int = 0)#

基类

表示单个字体面(font face)的对象。

除了字体本身和查询其属性外,此对象还提供了将文本字符串处理成字形形状的方法。

通常,可以使用 FT2Font.set_text 加载一些字形度量和轮廓。然后可以使用 FT2Font.draw_glyphs_to_bitmapFT2Font.get_image 获取已加载字符串的渲染形式。

对于单个字符,可以直接使用 FT2Font.load_charFT2Font.load_glyph 的返回值,或者使用 FT2Font.draw_glyph_to_bitmapFT2Font.get_path

可以通过 Glyph 返回值或 FT2Font.get_kerning 检查有用的度量。大多数尺寸以 26.6 或 16.6 定点整数表示亚像素。将这些值除以 64 可得到浮点像素。

参数:
filenamestr 或类文件对象

FreeType 可读取的字体数据源文件(ttf 或 ttc 格式)。

hinting_factorint, 可选

必须为正值。用于缩放 x 方向的字形微调。

_fallback_listFT2Font 列表, 可选

用于查找缺失字形的 FT2Font 对象列表。

警告

此 API 为私有且暂定:请勿直接使用。

_kerning_factorint, 可选

用于调整字距调整(kerning)的程度。

警告

此 API 为私有:请勿直接使用。

property ascender#

升部线(Ascender),以 26.6 单位表示。

property bbox#

字面全局包围盒 (xmin, ymin, xmax, ymax)。

clear(self: matplotlib.ft2font.FT2Font) None#

清除所有字形,为新的 set_text 调用重置。

property descender#

降部线(Descender),以 26.6 单位表示。

draw_glyph_to_bitmap(self: matplotlib.ft2font.FT2Font, image: matplotlib.ft2font.FT2Image, x: float | int, y: float | int, glyph: matplotlib.ft2font.Glyph, *, antialiased: bool = True) None#

在像素位置 x, y 处将单个字形绘制到位图。

请注意,在调用此函数之前,您有责任手动创建正确大小的图像。

如果您想要自动布局,请结合使用 set_textdraw_glyphs_to_bitmap。此函数旨在用于希望在精确位置渲染单个字形(例如,由 load_char 返回)的人。

参数:
imageFT2Image

用于绘制字形的图像缓冲区。

x, yint

绘制字形的像素位置。

glyphGlyph

要绘制的字形。

antialiasedbool, 默认: True

是否以 8 位抗锯齿或纯黑白方式渲染字形。

另请参阅

draw_glyphs_to_bitmap
draw_glyphs_to_bitmap(self: matplotlib.ft2font.FT2Font, *, antialiased: bool = True) None#

将由 set_text 加载的字形绘制到位图。

位图大小将自动设置以包含这些字形。

参数:
antialiasedbool, 默认: True

是否以 8 位抗锯齿或纯黑白方式渲染字形。

另请参阅

draw_glyph_to_bitmap
property face_flags#

字面标志;参见 FaceFlags

property family_name#

字面族名。

property fname#

此对象的原始文件名。

get_bitmap_offset(self: matplotlib.ft2font.FT2Font) tuple#

如果墨水向左或向下悬挂在 (0, 0) 处,则获取位图的 (x, y) 偏移量。

由于 Matplotlib 仅支持从左到右的文本,y 始终为 0。

返回:
x, yfloat

位图的 x 和 y 偏移量,以 26.6 亚像素表示。要获得像素为单位的 x 和 y,请将这些值除以 64。

get_char_index(self: matplotlib.ft2font.FT2Font, codepoint: int) int#

返回字符码点对应的字形索引。

参数:
codepointint

当前字符映射表(默认为 Unicode)中的字符码点。

返回:
int

对应的字形索引。

get_charmap(self: matplotlib.ft2font.FT2Font) dict#

返回字体中字符代码到字形索引的映射。

字符映射表默认为 Unicode,但可以通过 set_charmapselect_charmap 更改。

返回:
dict[int, int]

所选字符映射表的字典,映射字符代码到其对应的字形索引。

get_descent(self: matplotlib.ft2font.FT2Font) int#

获取由 set_text 设置的当前字符串的降部值。

考虑了字符串的旋转。

返回:
int

位图的降部值,以 26.6 亚像素表示。要获取像素为单位的降部值,请将这些值除以 64。

get_glyph_name(self: matplotlib.ft2font.FT2Font, index: int) str#

检索给定字体面中字形 index 的 ASCII 名称。

由于 Matplotlib 的内部设计,对于不包含字形名称的字体(根据 FT_FACE_FLAG_GLYPH_NAMES),此函数返回一个虚构的名称,该名称无法通过 get_name_index 进行往返转换。

参数:
index整数

要查询的字形编号。

返回:
str

字形的名称,如果字体不包含名称,则为 Matplotlib 合成的名称。

另请参阅

get_name_index
get_image(self: matplotlib.ft2font.FT2Font) numpy.ndarray#

返回此字体对象的基础图像缓冲区。

返回:
np.ndarray[int]

另请参阅

get_path
get_kerning(self: matplotlib.ft2font.FT2Font, left: int, right: int, mode: Kerning | int) int#

获取两个字形之间的字距调整(kerning)。

参数:
left, rightint

字形索引。请注意,这些不是字符或字符代码。使用 get_char_index 将字符代码转换为字形索引。

modeKerning

字距调整模式常量

  • DEFAULT - 返回缩放并网格拟合的字距调整距离。

  • UNFITTED - 返回缩放但未网格拟合的字距调整距离。

  • UNSCALED - 返回原始字体单位的字距调整向量。

3.10 版本中已更改: 现在接受 ft2font.Kerning 值而不是 int

返回:
int

两个字形之间的字距调整值。

get_name_index(self: matplotlib.ft2font.FT2Font, name: str) int#

返回给定字形 name 的字形索引。

参数:
namestr

要查询的字形名称。

返回:
int

对应的字形索引;0 表示“未定义字符代码”。

get_num_glyphs(self: matplotlib.ft2font.FT2Font) int#

返回已加载字形的数量。

get_path(self: matplotlib.ft2font.FT2Font) tuple#

从当前加载的字形获取路径数据。

返回:
verticesnp.ndarray[double]

(N, 2) 顶点数组,描述当前字形。

codesnp.ndarray[np.uint8]

(N,) 代码数组,对应于顶点。

get_ps_font_info(self: matplotlib.ft2font.FT2Font) tuple#

返回 PS 字体信息结构中的信息。

有关更多信息,请参阅 FreeType 关于此结构的文档

返回:
versionstr
noticestr
full_namestr
family_namestr
weightstr
italic_angleint
is_fixed_pitchbool
underline_positionint
underline_thicknessint
get_sfnt(self: matplotlib.ft2font.FT2Font) dict#

加载整个 SFNT 名称表。

返回:
dict[tuple[int, int, int, int], bytes]

SFNT 名称表;字典键是以下元组:

(平台 ID,ISO 编码方案,语言代码,描述)

值是字体表中的直接信息。

get_sfnt_table(self: matplotlib.ft2font.FT2Font, name: str) dict | None#

返回其中一个 SFNT 表。

参数:
name{"head", "maxp", "OS/2", "hhea", "vhea", "post", "pclt"}

要返回的表。

返回:
dict[str, Any]

对应的表;有关更多信息,请参阅 FreeType 文档

get_width_height(self: matplotlib.ft2font.FT2Font) tuple#

获取由 set_text 设置的当前字符串的尺寸。

考虑了字符串的旋转。

返回:
width, heightfloat

当前字符串的宽度和高度,以 26.6 亚像素表示。要获取像素为单位的宽度和高度,请将这些值除以 64。

property height#

高度,以 26.6 单位表示;用于计算默认行距(基线到基线的距离)。

load_char(self: matplotlib.ft2font.FT2Font, charcode: int, flags: Union[LoadFlags, int] = <LoadFlags.FORCE_AUTOHINT: 32>) matplotlib.ft2font.Glyph#

加载当前字体文件中的字符并设置字形。

参数:
charcodeint

要准备渲染信息的字符代码。此代码必须存在于字符映射表中,否则可能会返回 .notdef 字形。

flagsLoadFlags, 默认: LoadFlags.FORCE_AUTOHINT

LoadFlags 标志的任何按位或组合。

3.10 版本中已更改: 现在接受 ft2font.LoadFlags 而不是 int。

返回:
Glyph

对应于指定字符的字形信息。

load_glyph(self: matplotlib.ft2font.FT2Font, glyph_index: int, flags: Union[LoadFlags, int] = <LoadFlags.FORCE_AUTOHINT: 32>) matplotlib.ft2font.Glyph#

加载当前字体文件中的字形索引并设置字形。

请注意,字形索引是字体特有的,不像 Unicode 码点那样通用。

参数:
glyph_indexint

要准备渲染信息的字形索引。

flagsLoadFlags, 默认: LoadFlags.FORCE_AUTOHINT

LoadFlags 标志的任何按位或组合。

3.10 版本中已更改: 现在接受 ft2font.LoadFlags 而不是 int。

返回:
Glyph

对应于指定索引的字形信息。

另请参阅

load_char
property max_advance_height#

所有字形的最大垂直光标前进量。

property max_advance_width#

所有字形的最大水平光标前进量。

property num_charmaps#

字面中字符映射表的数量。

property num_faces#

文件中的字面数量。

property num_fixed_sizes#

字面中的位图数量。

property num_glyphs#

字面中的字形数量。

property num_named_instances#

字面中命名实例的数量。

property postscript_name#

字体的 PostScript 名称。

property scalable#

字面是否可伸缩;此后的属性仅针对可伸缩字面定义。

select_charmap(self: matplotlib.ft2font.FT2Font, i: int) None#

根据其 FT_Encoding 编号选择字符映射表。

有关字符映射的更多详细信息,请参阅 FreeType 文档

参数:
iint

字符映射表的格式由 FreeType 定义:https://freetype.org/freetype2/docs/reference/ft2-character_mapping.html#ft_encoding

另请参阅

set_charmap
get_charmap
set_charmap(self: matplotlib.ft2font.FT2Font, i: int) None#

将第 i 个字符映射表设为当前。

有关字符映射的更多详细信息,请参阅 FreeType 文档

参数:
iint

字符映射表编号范围为 [0, num_charmaps)。

set_size(self: matplotlib.ft2font.FT2Font, ptsize: float, dpi: float) None#

设置文本大小。

参数:
ptsizefloat

文本大小(以点为单位)。

dpifloat

用于渲染文本的 DPI。

set_text(self: matplotlib.ft2font.FT2Font, string: str, angle: float = 0.0, flags: Union[LoadFlags, int] = <LoadFlags.FORCE_AUTOHINT: 32>) numpy.ndarray[numpy.float64]#

设置文本 *string* 和 *angle*。

在调用 draw_glyphs_to_bitmap 之前,必须先调用此方法。

参数:
stringstr

要准备渲染信息的文本。

angle浮点数

渲染所提供文本的角度。

flagsLoadFlags, 默认: LoadFlags.FORCE_AUTOHINT

LoadFlags 标志的任何按位或组合。

3.10 版本中已更改: 现在接受 ft2font.LoadFlags 而不是 int。

返回:
np.ndarray[double]

以 26.6 子像素表示的 x,y 字形位置序列;除以 64 可得到像素值。

property style_flags#

样式标志;请参阅 StyleFlags

property style_name#

样式名称。

property underline_position#

下划线的垂直位置。

property underline_thickness#

下划线的粗细。

property units_per_EM#

EM 所覆盖的字体单位数量。

class matplotlib.ft2font.FT2Image(self: matplotlib.ft2font.FT2Image, width: float | int, height: float | int)#

基类

用于绘制字形的图像缓冲区。

参数:
width, heightint

图像缓冲区的尺寸。

draw_rect_filled(self: matplotlib.ft2font.FT2Image, x0: float | int, y0: float | int, x1: float | int, y1: float | int) None#

在图像上绘制一个填充矩形。

参数:
x0, y0, x1, y1float

矩形的边界,从 (x0, y0) 到 (x1, y1)。

class matplotlib.ft2font.FaceFlags(*values)#

基类: Flag

FT2Font.face_flags 返回的标志。

有关更多信息,请参阅 FreeType 文档

自 3.10 版本新增。

CID_KEYED = 4096#
COLOR = 16384#
EXTERNAL_STREAM = 1024#
FAST_GLYPHS = 128#
FIXED_SIZES = 2#
FIXED_WIDTH = 4#
GLYPH_NAMES = 512#
HINTER = 2048#
HORIZONTAL = 16#
KERNING = 64#
MULTIPLE_MASTERS = 256#
SCALABLE = 1#
SFNT = 8#
TRICKY = 8192#
VERTICAL = 32#
class matplotlib.ft2font.Glyph(self: matplotlib.ft2font.Glyph)#

基类

单个字形的信息。

您不能自行创建此对象的实例,而必须使用 FT2Font.load_charFT2Font.load_glyph 来生成。此对象可用于调用 FT2Font.draw_glyph_to_bitmap

有关各种度量的更多信息,请参阅 FreeType 文档

property bbox#

字形的控制框。

property height#

字形的高度。

property horiAdvance#

水平布局的预进宽度。

property horiBearingX#

水平布局的左侧轴承。

property horiBearingY#

水平布局的顶部轴承。

property linearHoriAdvance#

未提示字形的预进宽度。

property vertAdvance#

垂直布局的预进高度。

property vertBearingX#

垂直布局的左侧轴承。

property vertBearingY#

垂直布局的顶部轴承。

property width#

字形的宽度。

class matplotlib.ft2font.Kerning(*values)#

基类: Enum

FT2Font.get_kerning 的字距调整模式。

有关更多信息,请参阅 FreeType 文档

自 3.10 版本新增。

DEFAULT = 0#
UNFITTED = 1#
UNSCALED = 2#
class matplotlib.ft2font.LoadFlags(*values)#

基类: Flag

FT2Font.load_charFT2Font.load_glyphFT2Font.set_text 的标志。

有关更多信息,请参阅 FreeType 文档

自 3.10 版本新增。

COLOR = 1048576#
COMPUTE_METRICS = 2097152#
CROP_BITMAP = 64#
DEFAULT = 0#
FORCE_AUTOHINT = 32#
IGNORE_GLOBAL_ADVANCE_WIDTH = 512#
IGNORE_TRANSFORM = 2048#
LINEAR_DESIGN = 8192#
MONOCHROME = 4096#
NO_AUTOHINT = 32768#
NO_BITMAP = 8#
NO_HINTING = 2#
NO_RECURSE = 1024#
NO_SCALE = 1#
PEDANTIC = 128#
RENDER = 4#
TARGET_LCD = 196608#
TARGET_LCD_V = 262144#
TARGET_LIGHT = 65536#
TARGET_MONO = 131072#
TARGET_NORMAL = 0#
VERTICAL_LAYOUT = 16#
class matplotlib.ft2font.StyleFlags(*values)#

基类: Flag

FT2Font.style_flags 返回的标志。

有关更多信息,请参阅 FreeType 文档

自 3.10 版本新增。

BOLD = 2#
ITALIC = 1#
NORMAL = 0#