ImageFont
模块¶
这个 ImageFont
模块定义具有相同名称的类。此类的实例存储位图字体,并与 PIL.ImageDraw.Draw.text()
方法。
PIL使用自己的字体文件格式来存储位图字体。你可以使用 pilfont 实用程序将bdf和pcf字体描述符(x窗口字体格式)转换为此格式。
从1.1.4版开始,PIL可以配置为支持TrueType和OpenType字体(以及FreeType库支持的其他字体格式)。对于早期版本,TrueType支持仅作为IMtoolkit包的一部分提供
例子¶
from PIL import ImageFont, ImageDraw
draw = ImageDraw.Draw(image)
# use a bitmap font
font = ImageFont.load("arial.pil")
draw.text((10, 10), "hello", font=font)
# use a truetype font
font = ImageFont.truetype("arial.ttf", 15)
draw.text((10, 25), "world", font=font)
功能¶
-
PIL.ImageFont.
load
(filename)[源代码]¶ 加载字体文件。此函数从给定的位图字体文件加载字体对象,并返回相应的字体对象。
- 参数
filename -- 字体文件的名称。
- 返回
字体对象。
- 引发
IOError -- 如果无法读取文件。
-
PIL.ImageFont.
load_path
(filename)[源代码]¶ 加载字体文件。等同于
load()
,但沿python路径搜索位图字体。- 参数
filename -- 字体文件的名称。
- 返回
字体对象。
- 引发
IOError -- 如果无法读取文件。
-
PIL.ImageFont.
truetype
(font=None, size=10, index=0, encoding='', layout_engine=None)[源代码]¶ 从文件或类似文件的对象加载TrueType或OpenType字体,然后创建字体对象。此函数从给定的文件或类似文件的对象加载字体对象,并为给定大小的字体创建字体对象。
枕头使用FreeType打开字体文件。如果要在Windows上同时打开多个字体,请注意Windows将可以在C中同时打开的文件数限制为512。如果你接近这个极限
OSError
可能引发,报告FreeType“无法打开资源”。此功能需要“Imagingft”服务。
- 参数
font -- 包含TrueType字体的文件名或类似文件的对象。如果在此文件名中找不到该文件,加载程序还可以在其他目录中搜索,例如
fonts/
Windows上的目录或/Library/Fonts/
,/System/Library/Fonts/
和~/Library/Fonts/
关于MaOS.size -- 请求的大小,以磅为单位。
index -- 要加载的字体(默认为第一个可用的字体)。
encoding -- 要使用的字体编码(默认为Unicode)。可能的编码包括(有关详细信息,请参阅FreeType文档): “unic”(Unicode) “symb”(Microsoft符号) “ADOB”(Adobe标准) “ADBE”(Adobe专家) “ADBC”(Adobe自定义) “阿姆”(苹果罗马语) “sjis”(班次JIS) “gb”(中国) “大5” “广域网”(扩展的广域网) “约翰”(约翰) “lat1”(拉丁语-1)指定要使用的字符集。它不会更改后续操作中提供的任何文本的编码。
layout_engine -- 要使用的布局引擎(如果可用): ImageFont.LAYOUT_BASIC 或 ImageFont.LAYOUT_RAQM.
- 返回
字体对象。
- 引发
IOError -- 如果无法读取文件。
方法¶
-
class
PIL.ImageFont.
ImageFont
[源代码]¶ PIL字体包装
-
class
PIL.ImageFont.
FreeTypeFont
(font=None, size=10, index=0, encoding='', layout_engine=None)[源代码]¶ freetype字体包装(需要“imagingft”服务)
-
font_variant
(font=None, size=None, index=None, encoding=None, layout_engine=None)[源代码]¶ 创建此FreeTypeFont对象的副本,使用任何指定的参数覆盖设置。
参数与用于初始化此对象的参数相同。
- 返回
FreeTypeFont对象。
-
getmask
(text, mode='', direction=None, features=None, language=None, stroke_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”禁用紧排。要获取所有支持的功能,请参阅https://docs.microsoft.com/en-us/typography/openttype/spec/featurelist requires libraqm。…添加的版本:4.2.0
language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 language code <https://www.w3.org/International/articles/language-tags/> 需要libraqm。我是说…版本已添加::6.0.0
stroke_width -- 文本笔划的宽度。。版本号:6.2.0
- 返回
内部PIL存储内存实例由
PIL.Image.core
接口模块。
-
getmask2
(text, mode='', fill=<built-in function fill>, direction=None, features=None, language=None, stroke_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”禁用紧排。要获取所有支持的功能,请参阅https://docs.microsoft.com/en-us/typography/openttype/spec/featurelist requires libraqm。…添加的版本:4.2.0
language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 language code <https://www.w3.org/International/articles/language-tags/> 需要libraqm。我是说…版本已添加::6.0.0
stroke_width -- 文本笔划的宽度。。版本号:6.2.0
- 返回
内部PIL存储内存实例的元组,由
PIL.Image.core
接口模块,以及文本偏移量,起始坐标和第一个标记之间的间隙
-
getoffset
(text)[源代码]¶ 返回给定文本的偏移量。这是起始坐标和第一个标记之间的间隙。请注意,此间隙包含在
getsize()
.- 参数
text -- 要测量的文本。
- 返回
x和y偏移量的元组
-
getsize
(text, direction=None, features=None, language=None, stroke_width=0)[源代码]¶ 如果以提供方向、功能和语言的字体呈现,则返回给定文本的宽度和高度(以像素为单位)。
- 参数
text -- 要测量的文本。
direction -- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要libraqm。…添加的版本:4.2.0
features -- 文本布局期间要使用的OpenType字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”禁用连字,或“-kern”禁用紧排。要获取所有支持的功能,请参阅https://docs.microsoft.com/en-us/typography/openttype/spec/featurelist requires libraqm。…添加的版本:4.2.0
language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 language code <https://www.w3.org/International/articles/language-tags/> 需要libraqm。我是说…版本已添加::6.0.0
stroke_width -- 文本笔划的宽度。。版本号:6.2.0
- 返回
(宽度,高度)
-
getsize_multiline
(text, direction=None, spacing=4, features=None, language=None, stroke_width=0)[源代码]¶ 返回给定文本的宽度和高度(以像素为单位),如果以提供的方向、功能和语言的字体呈现,同时考虑换行符。
- 参数
text -- 要测量的文本。
direction -- 文本的方向。它可以是“rtl”(从右到左)、“ltr”(从左到右)或“ttb”(从上到下)。需要libraqm。
spacing -- 线之间的垂直间距,默认为4像素。
features -- 文本布局期间要使用的OpenType字体功能列表。这通常用于打开默认情况下未启用的可选字体功能,例如“dlig”或“ss01”,但也可用于关闭默认字体功能,例如“-liga”禁用连字,或“-kern”禁用紧排。要获取所有支持的功能,请参阅https://docs.microsoft.com/en-us/typography/openttype/spec/featurelist requires libraqm。
language -- 文本的语言。不同的语言可以使用不同的字形或连字。此参数告诉文本使用哪种语言的字体,并根据需要应用正确的替换(如果可用)。应该是一个 BCP 47 language code <https://www.w3.org/International/articles/language-tags/> 需要libraqm。我是说…版本已添加::6.0.0
stroke_width -- 文本笔划的宽度。。版本号:6.2.0
- 返回
(宽度,高度)
-