matplotlib.ft2font#

class matplotlib.ft2font.FT2Font(self: matplotlib.ft2font.FT2Font, filename: object, hinting_factor: SupportsInt | SupportsIndex | None = None, *, face_index: SupportsInt | SupportsIndex = 0, _fallback_list: collections.abc.Sequence[matplotlib.ft2font.FT2Font] | None = None, _kerning_factor: SupportsInt | SupportsIndex | None = None, _warn_if_used: bool = False)#

基类

表示单个字体外观(face)的对象。

除了字体本身及其属性查询之外,该对象还提供了将文本字符串处理为字形(glyph)形状的方法。

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

对于单个字符,可以使用 FT2Font.load_char 或 FT2Font.load_glyph,可以直接获取其返回值,也可以使用 FT2Font.draw_glyph_to_bitmap 或 FT2Font.get_path。

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

参数:
filenamestr, bytes, os.PathLike, 或 io.BinaryIO

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

face_indexint,可选

要加载的字体文件中字体外观(face)的索引。

_fallback_listFT2Font 列表,可选

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

警告

此 API 既是私有的也是临时的:请勿直接使用。

_warn_if_usedbool,可选

用于触发缺失字形警告。

警告

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

property ascender#

26.6 单位的升部高度(ascender)。

property bbox#

字体外观(face)的全局边界框(xmin, ymin, xmax, ymax)。

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

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

property descender#

26.6 单位的降部高度(descender)。

draw_glyph_to_bitmap()#

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

注意,在进行此调用之前,您需要负责手动创建正确大小的图像。

如果您需要自动布局,请将 set_text 与 draw_glyphs_to_bitmap 结合使用。相反,此函数适用于希望在精确位置渲染单个字形(例如,由 load_char 返回的字形)的用户。

参数:
imageuint8 的二维数组

要在其上绘制字形的图像缓冲区。

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#

字体外观标志(Face flags);参见 FaceFlags。

property face_index#

该字体在文件中的索引。

property family_name#

字体外观族名(Face family name)。

property fname#

此对象的原始文件名。

get_bitmap_offset(self: matplotlib.ft2font.FT2Font) → tuple[int, int]#

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

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

返回:
x, yfloat

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

get_char_index(self: matplotlib.ft2font.FT2Font, codepoint: SupportsInt | SupportsIndex, *, _fallback: bool = True) → int#

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

参数:
codepointint

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

_fallbackbool

搜索字符时是否启用后备(fallback)字体。

返回:
int

对应的字形索引。

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

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

字符映射表默认为 Unicode,但可以通过 set_charmap 或 select_charmap 进行更改。

返回:
dict[int, int]

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

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

获取由 set_text 设置的当前字符串的降部(descent)高度。

已考虑字符串的旋转。

返回:
int

位图以降部为单位的 26.6 子像素值。要获得以像素为单位的降部高度,请将这些值除以 64。

get_glyph_name(self: matplotlib.ft2font.FT2Font, index: SupportsInt | SupportsIndex) → str#

获取字体外观中给定字形索引(index)的 ASCII 名称。

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

参数:
index整数

要查询的字形编号。

返回:
str

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

另请参阅

get_name_index
get_image(self: matplotlib.ft2font.FT2Font) → numpy.typing.NDArray[numpy.uint8]#

返回此字体对象的底层图像缓冲区。

返回:
np.ndarray[int]

另请参阅

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

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

参数:
left, rightint

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

modeKerning

字距调整模式常量

  • DEFAULT - 返回缩放并网格对齐(grid-fitted)的字距调整距离。

  • 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 Font Info 结构体中的信息。

有关更多信息,请参见 关于该结构体的 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[int, int]#

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

已考虑字符串的旋转。

返回:
width, heightfloat

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

property height#

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

load_char(self: matplotlib.ft2font.FT2Font, charcode: SupportsInt | SupportsIndex, flags: LoadFlags | SupportsInt | SupportsIndex = <LoadFlags.FORCE_AUTOHINT: 32>) → matplotlib.ft2font.Glyph#

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

参数:
charcodeint

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

flagsLoadFlags,默认值:LoadFlags.FORCE_AUTOHINT

LoadFlags 标志的任何按位或(bitwise-OR)组合。

在 3.10 版本中变更: 现在接受一个 ft2font.LoadFlags 而不是 int。

返回:
Glyph

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

load_glyph(self: matplotlib.ft2font.FT2Font, glyph_index: SupportsInt | SupportsIndex, flags: LoadFlags | SupportsInt | SupportsIndex = <LoadFlags.FORCE_AUTOHINT: 32>) → matplotlib.ft2font.Glyph#

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

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

参数:
glyph_indexint

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

flagsLoadFlags,默认值:LoadFlags.FORCE_AUTOHINT

LoadFlags 标志的任何按位或(bitwise-OR)组合。

在 3.10 版本中变更: 现在接受一个 ft2font.LoadFlags 而不是 int。

返回:
Glyph

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

另请参阅

load_char
property max_advance_height#

所有字形的最大垂直光标步进(advance)高度。

property max_advance_width#

所有字形的最大水平光标步进(advance)宽度。

property num_charmaps#

字体外观(face)中的字符映射表(charmaps)数量。

property num_faces#

文件中的字体外观(faces)数量。

property num_fixed_sizes#

字体外观(face)中的位图(bitmap)数量。

property num_glyphs#

字体外观(face)中的字形(glyphs)数量。

property num_named_instances#

字体外观(face)中的命名实例数量。

property postscript_name#

字体的 PostScript 名称。

property scalable#

字体外观(face)是否可缩放;此属性之后的属性仅对可缩放的字体外观有定义。

select_charmap(self: matplotlib.ft2font.FT2Font, i: SupportsInt | SupportsIndex) → 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: SupportsInt | SupportsIndex) → None#

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

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

参数:
iint

范围在 [0, num_charmaps) 内的字符映射表编号。

set_size(self: matplotlib.ft2font.FT2Font, ptsize: SupportsFloat | SupportsIndex, dpi: SupportsFloat | SupportsIndex) → None#

设置文本的大小。

参数:
ptsizefloat

以磅(points)为单位的文本大小。

dpifloat

用于渲染文本的 DPI。

set_text(self: matplotlib.ft2font.FT2Font, string: str, angle: SupportsFloat | SupportsIndex = 0.0, flags: LoadFlags | SupportsInt | SupportsIndex = <LoadFlags.FORCE_AUTOHINT: 32>, *, features: collections.abc.Sequence[str] | None = None, language: collections.abc.Sequence[tuple[str, typing.SupportsInt | typing.SupportsIndex, typing.SupportsInt | typing.SupportsIndex]] | None | str=None) → numpy.typing.NDArray[numpy.float64]#

设置文本字符串(string)和角度(angle)。

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

参数:
stringstr

要为其准备渲染信息的文本。

angle浮点数

渲染所提供文本的角度。

flagsLoadFlags,默认值:LoadFlags.FORCE_AUTOHINT

LoadFlags 标志的任何按位或(bitwise-OR)组合。

在 3.10 版本中变更: 现在接受一个 ft2font.LoadFlags 而不是 int。

featurestuple[str, ...]

用于字体的字体特性标签(font feature tags)。

可用的字体特性标签可在 https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist 找到。

于版本 3.11 新增。

返回:
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: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex, height: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex)#

基类

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

参数:
width, heightint

图像缓冲区的尺寸。

draw_rect_filled(self: matplotlib.ft2font.FT2Image, x0: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex, y0: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex, x1: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex, y1: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex) → 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#
SBIX = 131072#
SBIX_OVERLAY = 262144#
SCALABLE = 1#
SFNT = 8#
SVG = 65536#
TRICKY = 8192#
VARIATION = 32768#
VERTICAL = 32#
class matplotlib.ft2font.Glyph(self: matplotlib.ft2font.Glyph)#

基类

有关单个字形的信息。

您无法自己创建此对象的实例,而必须使用 FT2Font.load_char 或 FT2Font.load_glyph 来生成。该对象可用于调用 FT2Font.draw_glyph_to_bitmap。

有关各种度量属性的更多信息,请参见 FreeType 文档。

property bbox#

该字形的控制框(control box)。

property height#

该字形的高度。

property horiAdvance#

水平布局的步进宽度(advance width)。

property horiBearingX#

水平布局的左侧轴承(left side bearing)。

property horiBearingY#

水平布局的顶侧轴承(top side bearing)。

property linearHoriAdvance#

未进行微调(unhinted)的字形的步进宽度。

property vertAdvance#

垂直布局的步进高度。

property vertBearingX#

垂直布局的左侧轴承。

property vertBearingY#

垂直布局的顶侧轴承。

property width#

该字形的宽度。

class matplotlib.ft2font.Kerning(*values)#

基类:Enum

用于 FT2Font.get_kerning 的字距调整(kerning)模式。

欲了解更多信息,请参见 FreeType 文档。

自 3.10 版本新增。

DEFAULT = 0#
UNFITTED = 1#
UNSCALED = 2#
class matplotlib.ft2font.LayoutItem(self: matplotlib.ft2font.LayoutItem)#

基类

property char#

该项的字符代码。

property ft_object#

该项的 FT_Face。

property glyph_index#

该项的字形索引。

property prev_kern#

此项与前一项之间的字距调整值(kerning)。

property x#

该项的 x 位置。

property y#

该项的 y 位置。

class matplotlib.ft2font.LoadFlags(*values)#

基类:Flag

用于 FT2Font.load_char、FT2Font.load_glyph 和 FT2Font.set_text 的标志(Flags)。

欲了解更多信息,请参见 FreeType 文档。

自 3.10 版本新增。

BITMAP_METRICS_ONLY = 4194304#
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#
NO_SVG = 16777216#
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.RenderMode(*values)#

基类:Enum

渲染模式。

欲了解更多信息,请参见 FreeType 文档。

自 3.10 版本新增。

LCD = 3#
LCD_V = 4#
LIGHT = 1#
MONO = 2#
NORMAL = 0#
SDF = 5#
class matplotlib.ft2font.StyleFlags(*values)#

基类:Flag

由 FT2Font.style_flags 返回的标志。

欲了解更多信息,请参见 FreeType 文档。

自 3.10 版本新增。

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