阅读(2690) (0)

Pillow ImageFont方法

2021-07-14 11:28:02 更新
classPIL.ImageFont.ImageFont

PIL字体包装器

getmask(textmode=''*args**kwargs)

为文本创建位图。

如果字体使用抗锯齿,则位图应具有模式 L 并使用最大值255。否则,它应该有模式 1 .

参数
  • text -- 要渲染的文本。

  • mode -- 某些图形驱动程序使用它来指示驱动程序喜欢哪种模式;如果为空,渲染器可能返回任一模式。请注意,模式始终是字符串,以简化C级实现。

添加的版本:1.1.5
返回

PIL.Image.core接口模块定义的内部 PIL 存储内存实例 。

getsize(text*args**kwargs)

返回给定文本的宽度和高度(以像素为单位)。

参数

text -- 要测量的文本。

返回

(宽度,高度)

classPIL.ImageFont.FreeTypeFont(font=Nonesize=10index=0encoding=''layout_engine=None)

FreeType字体包装器(需要“imagingft”服务)

font_variant(font=Nonesize=Noneindex=Noneencoding=Nonelayout_engine=None)

创建此FreeTypeFont对象的副本,使用任何指定的参数覆盖设置。

参数与用于初始化此对象的参数相同。

返回

FreeTypeFont对象。

get_variation_axes()
返回

变体字体中的轴列表。

引发

OSError ​-- 如果字体不是变体字体。

get_variation_names()
返回

变体字体中命名样式的列表。

引发

OSError ​-- 如果字体不是变体字体。

getbbox ( text , mode = '' , direction = None , features = None , language = None , stroke_width = 0 , anchor = None )

当以具有提供的方向、特征和语言的字体呈现时,返回给定文本相对于给定锚点的边界框(以像素为单位)。

用于getlength()以 1/64 像素精度获取后续文本的偏移量。边界框包括一些字体的额外边距,例如斜体或加粗。

8.0.0 版中的新功能。

参数
  • text – 要呈现的文本。

  • mode– 被一些图形驱动程序用来指示驱动程序喜欢哪种模式;如果为空,渲染器可能会返回任一模式。请注意,模式始终是一个字符串,以简化 C 级实现。

  • direction- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要 libraqm库支持。

  • features – 要在文本布局期间使用的 OpenType 字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”以禁用连字或“- kern' 禁用字距调整。 需要 libraqm库的支持。

  • language- 文本的语言。不同的语言可能使用不同的字形形状或连字。此参数告诉字体文本使用的语言,并根据需要应用正确的替换(如果可用)。它应该是BCP 47 语言代码 需要 libraqm。

  • stroke_width – 文本笔触的宽度。

  • anchor – 文本锚对齐方式。确定锚点与文本的相对位置。默认对齐方式是左上角。有关有效值,请参阅文本锚点

返回

(left, top, right, bottom) 边界框

getlength ( text , mode = '' , direction = None , features = None , language = None )

当以提供方向、特征和语言的字体呈现时,返回给定文本的长度(以像素为单位,精度为 1/64)。

这是以下文本应偏移的量。文本边界框可能会超出某些字体的长度,例如使用斜体或加粗时。

结果作为浮点数返回;如果使用基本布局,则为整数。

请注意,由于字距调整,两个长度的总和可能不等于连接字符串的长度。如果您需要调整字距,请包含以下字符并减去其长度。

例如,代替

hello = font.getlength("Hello")
world = font.getlength("World")
hello_world = hello + world  # not adjusted for kerning
assert hello_world == font.getlength("HelloWorld")  # may fail

hello = font.getlength("HelloW") - font.getlength("W")  # adjusted for kerning
world = font.getlength("World")
hello_world = hello + world  # adjusted for kerning
assert hello_world == font.getlength("HelloWorld")  # True

或禁用字距调整(需要 libraqm库支持)

hello = draw.textlength("Hello", font, features=["-kern"])
world = draw.textlength("World", font, features=["-kern"])
hello_world = hello + world  # kerning is disabled, no need to adjust
assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"])

8.0.0 版中的新功能。

参数
  • text – 要测量的文本。

  • mode– 被一些图形驱动程序用来指示驱动程序喜欢哪种模式;如果为空,渲染器可能会返回任一模式。请注意,模式始终是一个字符串,以简化 C 级实现。

  • direction- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要 libraqm。

  • features – 要在文本布局期间使用的 OpenType 字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”以禁用连字或“- kern' 禁用字距调整。需要 libraqm库支持。

  • language -文本的语言。不同的语言可能使用不同的字形形状或连字。此参数告诉字体文本使用的语言,并根据需要应用正确的替换(如果可用)。它应该是BCP 47 语言代码 需要 libraqm库支持。

返回

水平文本宽度,垂直文本高度。

getmask(textmode=''direction=Nonefeatures=Nonelanguage=Nonestroke_width=0)

为文本创建位图。

如果字体使用抗锯齿,则位图应具有模式 L 并使用最大值255。否则,它应该有模式 1 .

参数
  • text -- 要渲染的文本。

  • mode -- 某些图形驱动程序使用它来指示驱动程序喜欢哪种模式;如果为空,渲染器可能返回任一模式。请注意,模式始终是字符串,以简化C级实现。

添加的版本:1.1.5
  • direction -- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要libraqm库支持。

添加的版本:4.2.0
  • features -- 文本布局期间要使用的OpenType字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”禁用连字,或“-kern”禁用紧排。需要 libraqm库支持。

添加的版本:4.2.0
  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码。需要libraqm库支持。

添加的版本:6.0.0
  • stroke_width -- 文本笔划的宽度。

添加的版本:6.2.0

  • anchor –文本锚对齐方式。确定锚点与文本的相对位置。默认对齐方式是左上角。有关有效值,请参阅文本锚点
    8.0.0 版中的新功能。
  • ink –用于在 RGBA 模式下渲染的前景墨迹。

    8.0.0 版中的新功能。

返回

内部PIL存储内存实例由 PIL.Image.core 接口模块。

getmask2(textmode=''fill=<built-in function fill>direction=Nonefeatures=Nonelanguage=Nonestroke_width=0*args**kwargs)

为文本创建位图。

如果字体使用抗锯齿,则位图应具有模式 L 并使用最大值255。否则,它应该有模式 1 .

参数
  • text -- 要渲染的文本。

  • mode -- 某些图形驱动程序使用它来指示驱动程序喜欢哪种模式;如果为空,渲染器可能返回任一模式。请注意,模式始终是字符串,以简化C级实现。

添加的版本:1.1.5
  • direction -- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要libraqm库支持。

添加的版本:4.2.0
  • features -- 文本布局期间要使用的OpenType字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”禁用连字,或“-kern”禁用紧排。需要 libraqm 库支持。

添加的版本:4.2.0
  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47语言代码。需要libraqm库支持。

添加的版本:6.0.0

  • stroke_width -- 文本笔划的宽度

添加的版本:6.2.0

  • anchor –文本锚对齐方式。确定锚点与文本的相对位置。默认对齐方式是左上角。有关有效值,请参阅文本锚点。

8.0.0 版中的新功能。

  • ink –用于在 RGBA 模式下渲染的前景墨迹。

8.0.0 版中的新功能。

返回

内部PIL存储内存实例由 PIL.Image.core 接口模块。以及文本偏移量,起始坐标和第一个标记之间的间隙

getmetrics()
返回

字体上升(从基线到最高轮廓点的距离)和下降(从基线到最低轮廓点的距离,负值)的元组

getname()
返回

字体系列的元组(例如Helvetica)和字体样式(例如粗体)

getoffset(text)

返回给定文本的偏移量。这是起始坐标和第一个标记之间的间隙。请注意,此间隙包含在 getsize() 的结果中。

参数

text -- 要测量的文本。

返回

x和y偏移量的元组

getsize(textdirection=Nonefeatures=Nonelanguage=Nonestroke_width=0)

如果以提供方向、功能和语言的字体呈现,则返回给定文本的宽度和高度(以像素为单位)。用于getlength()以 1/64 像素精度测量后续文本的偏移量。使用getbbox()获得基于锚的确切边界框。

由于历史原因,此函数从上升行而不是顶部测量文本高度,请参阅文本锚点。如果您希望从顶部测量文本高度,建议使用​anchor='lt'​代替​getbbox()​的底部值。

参数
  • text -- 要测量的文本。

  • direction -- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要libraqm库的支持。

添加的版本:4.2.0
  • features -- 文本布局期间要使用的OpenType字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”禁用连字,或“-kern”禁用紧排。要获取所有支持的功能,需要libraqm的库支持。

添加的版本:4.2.0
  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码 。需要libraqm库的支持。

添加的版本:6.0.0
  • stroke_width -- 文本笔划的宽度。

添加的版本:6.2.0

返回

(宽度,高度)

getsize_multiline(textdirection=Nonespacing=4features=Nonelanguage=Nonestroke_width=0)

返回给定文本的宽度和高度(以像素为单位),如果以提供的方向、功能和语言的字体呈现,同时考虑换行符。

参数
  • text -- 要测量的文本。

  • direction -- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要libraqm库的支持。

  • spacing -- 线之间的垂直间距,默认为4像素。

  • features -- 文本布局期间要使用的OpenType字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”禁用连字,或“-kern”禁用紧排。需要libraqm库的支持。

  • language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 语言代码。需要libraqm的支持。

添加的版本:6.0.0
  • stroke_width -- 文本笔划的宽度。

添加的版本:6.2.0
返回

(宽度,高度)

set_variation_by_axes(axes)
参数

axes -- 每个轴的值列表。

引发

OSError ​-- 如果字体不是变体字体。

set_variation_by_name(name)
参数

name -- 样式的名称。

引发

OSError ​-- 如果字体不是变体字体。

classPIL.ImageFont.TransposedFont(fontorientation=None)

用于写入旋转或镜像文本的包装器