文本锚点¶
The anchor 参数决定绘制的文本相对于 xy 参数的对齐方式。默认对齐方式为左上角,具体而言,对于水平文本为 la (左上升),对于垂直文本为 lt (左上角)。
此参数仅受 OpenType/TrueType 字体支持。其他字体可能会忽略此参数并使用默认 (左上角) 对齐方式。
指定锚点¶
锚点由一个两位数字符串指定。第一个字符是水平对齐方式,第二个字符是垂直对齐方式。例如,水平文本的默认值 la 表示左上升对齐文本。
使用 PIL.ImageDraw.ImageDraw.text() 绘制文本并指定特定锚点时,文本将放置在指定锚点位于 xy 坐标的位置。
例如,在下图中,文本为 ms (中间基线) 对齐,xy 位于两条线的交点
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— 左边锚点位于文本的左侧。
对于水平文本,这是第一个字形的原点,如 FreeType 教程 中所示。
m— 中间锚点与文本水平居中。
对于垂直文本,建议使用
s(基线) 对齐方式,因为它不会根据给定文本的特定字形而改变。r— 右边锚点位于文本的右侧。
对于水平文本,这是最后一个字形的推进原点,如 FreeType 教程 中所示。
s— 基线 (仅限垂直文本)锚点位于文本的基线 (中间)。精确的对齐方式取决于字体。
对于垂直文本,这是建议的对齐方式,因为它不会根据给定文本的特定字形而改变 (请参见上方的垂直文本图像)。
垂直锚点对齐方式¶
a— 上升/顶部 (仅限水平文本)锚点位于文本第一行的上升线 (顶部),如字体定义所示。
请参见 维基百科上的字体指标,以获取更多信息。
t— 顶部 (仅限单行文本)锚点位于文本的顶部。
对于垂直文本,这是第一个字形的原点,如 FreeType 教程 中所示。
对于水平文本,建议使用
a(上升) 对齐方式,因为它不会根据给定文本的特定字形而改变。m— 中间锚点与文本垂直居中。
对于水平文本,这是第一个上升线和最后一个下降线的中间点。
s— 基线 (仅限水平文本)锚点位于文本第一行的基线 (底部),只有下降线延伸到锚点下方。
请参见 维基百科上的字体指标,以获取更多信息。
b— 底部 (仅限单行文本)锚点位于文本的底部。
对于垂直文本,这是最后一个字形的推进原点,如 FreeType 教程 中所示。
对于水平文本,建议使用
d(下降) 对齐方式,因为它不会根据给定文本的特定字形而改变。d— 下降/底部 (仅限水平文本)锚点位于文本最后一行下降线 (底部),如字体定义所示。
请参见 维基百科上的字体指标,以获取更多信息。
示例¶
下图显示了水平文本的几个锚点示例。在每个部分中,xy 参数设置为两条线交点所示的中心。