文本锚点

The anchor 参数决定绘制的文本相对于 xy 参数的对齐方式。默认对齐方式为左上角,具体而言,对于水平文本为 la (左上升),对于垂直文本为 lt (左上角)。

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

指定锚点

锚点由一个两位数字符串指定。第一个字符是水平对齐方式,第二个字符是垂直对齐方式。例如,水平文本的默认值 la 表示左上升对齐文本。

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

例如,在下图中,文本为 ms (中间基线) 对齐,xy 位于两条线的交点

ms (middle-baseline) aligned text.
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)

快速参考

Horizontal text Vertical text

水平锚点对齐方式

l — 左边

锚点位于文本的左侧。

对于水平文本,这是第一个字形的原点,如 FreeType 教程 中所示。

m — 中间

锚点与文本水平居中。

对于垂直文本,建议使用 s (基线) 对齐方式,因为它不会根据给定文本的特定字形而改变。

r — 右边

锚点位于文本的右侧。

对于水平文本,这是最后一个字形的推进原点,如 FreeType 教程 中所示。

s — 基线 (仅限垂直文本)

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

对于垂直文本,这是建议的对齐方式,因为它不会根据给定文本的特定字形而改变 (请参见上方的垂直文本图像)。

垂直锚点对齐方式

a — 上升/顶部 (仅限水平文本)

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

请参见 维基百科上的字体指标,以获取更多信息。

t — 顶部 (仅限单行文本)

锚点位于文本的顶部。

对于垂直文本,这是第一个字形的原点,如 FreeType 教程 中所示。

对于水平文本,建议使用 a (上升) 对齐方式,因为它不会根据给定文本的特定字形而改变。

m — 中间

锚点与文本垂直居中。

对于水平文本,这是第一个上升线和最后一个下降线的中间点。

s — 基线 (仅限水平文本)

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

请参见 维基百科上的字体指标,以获取更多信息。

b — 底部 (仅限单行文本)

锚点位于文本的底部。

对于垂直文本,这是最后一个字形的推进原点,如 FreeType 教程 中所示。

对于水平文本,建议使用 d (下降) 对齐方式,因为它不会根据给定文本的特定字形而改变。

d — 下降/底部 (仅限水平文本)

锚点位于文本最后一行下降线 (底部),如字体定义所示。

请参见 维基百科上的字体指标,以获取更多信息。

示例

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

Text anchor examples