codecamp

Pillow 文本锚点

文本锚点

该​anchor​参数确定绘制文本相对于该​xy​参数的对齐方式。默认对齐方式是左上角,特别​la​是水平文本的 (left-ascender) 和​lt​垂直文本的 (left-top)。

此参数仅受 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 - left

锚点在文本的左侧。

对于水平文本,这是第一个字形的起源。

  • m - middle

锚点与文本水平居中。

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

  • r - right

锚点在文本的右侧。

对于水平文本,这是最后一个字形的高级原点。

  • s-baseline (仅限垂直文本)

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

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

垂直锚对齐

a- ascender / top (仅限水平文本)

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

t-top(仅限单行文本)

锚点位于文本的顶部。

对于垂直文本,这是第一个字形的起源。

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

m - middle

锚点与文本垂直居中。

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

s-baseline(仅限横向文本)

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

b-bottom(仅限单行文本)

锚点位于文本的底部。

对于垂直文本,这是最后一个字形的高级原点。

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

d- descender / bottom(仅限水平文本)

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

例子

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

文本锚点示例


Pillow 仅识别格式
Pillow 编写图像插件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Pillow 参考

Pillow ImageChops模块

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }