文本锚点#

这个 anchor 参数确定绘制文本相对于 xy 参数。默认对齐方式是左上角,特别是 la (左上角)表示水平文本, lt (左上角)表示直排文本。

仅OpenType/TrueType字体支持此参数。其他字体可能会忽略该参数并使用默认(左上)对齐方式。

指定锚点#

锚点是用两个字符的字符串指定的。第一个字符是水平对齐,第二个字符是垂直对齐。例如,默认值 la 对于水平文本,表示升序左对齐的文本。

使用绘制文本时 PIL.ImageDraw.ImageDraw.text() 使用特定锚点时,文本将放置在指定锚点位于 xy 坐标。

例如,在下图中,文本为 ms (中基线)对齐,与 xy 在两条线的交叉处:

MS(中基线)对齐的文本。
from PIL import Image, ImageDraw, ImageFont

font = ImageFont.truetype("Tests/fonts/NotoSans-Regular.ttf", 48)
im = Image.new("RGB", (200, 200), "white")
d = ImageDraw.Draw(im)
d.line(((0, 100), (200, 100)), "gray")
d.line(((100, 0), (100, 200)), "gray")
d.text((100, 100), "Quick", fill="black", anchor="ms", font=font)

快速参考#

横排文本竖排文本

水平锚点对齐#

l -左

锚在文本的左边。

水平 text这是第一个字形的原点,如 FreeType tutorial

m -中间

锚点与文本水平居中。

垂直 文本建议使用 s 改为(基线)对齐,因为它不会根据给定文本的特定字形进行更改。

r -对

锚在文本的右边。

水平 text这是最后一个字形的高级原点,如 FreeType tutorial

s -基线 (仅限直排文本)

锚点位于文本的基线(中间)。精确对齐方式取决于字体。

垂直 text这是推荐的对齐方式,因为它不会根据给定文本的特定字形进行更改(请参见上面的直排文本的图像)。

垂直锚点对齐#

a -上升/顶部 (仅限横排文本)

锚点位于第一行文本的上升行(顶部),由字体定义。

看见 Font metrics on Wikipedia 了解更多信息。

t -顶部 (single-line text only)

锚在文本的顶部。

垂直 text这是第一个字形的原点,如 FreeType tutorial

水平 文本建议使用 a (升序)改为对齐,因为它不会根据给定文本的特定字形进行更改。

m -中间

锚点与文本垂直居中。

水平 文本这是第一条上升线和最后一条下降线的中点。

s -基线 (仅限横排文本)

锚点位于第一行文本的基线(底部),只有向下延伸到锚点下方。

看见 Font metrics on Wikipedia 了解更多信息。

b -底部 (single-line text only)

锚在文本的底部。

垂直 text这是最后一个字形的高级原点,如 FreeType tutorial

水平 文本建议使用 d 改为(降序)对齐,因为它不会根据给定文本的特定字形进行更改。

d -下降/底部 (仅限横排文本)

锚点位于最后一行文本的下行(底部),由字体定义。

看见 Font metrics on Wikipedia 了解更多信息。

示例#

下图显示了几个水平文本锚点的示例。在每个部分中, xy 参数设置为两条直线的交点所示的中心。

文本锚定示例