文字錨點

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 — 上升器 / 頂部(僅限水平文字

錨點位於字體定義的第一行文字的上升器線(頂部)。

請參閱 Wikipedia 上的字體度量,以取得更多資訊。

t — 頂部(僅限單行文字

錨點位於文字的頂部。

對於垂直文字,這是第一個字形的起點,如 FreeType 教學 中所示。

對於水平文字,建議改用 a(上升器)對齊,因為它不會根據給定文字的特定字形而改變。

m — 中間

錨點與文字垂直居中對齊。

對於水平文字,這是第一個上升器線和最後一個下降器線的中點。

s — 基線(僅限水平文字

錨點位於第一行文字的基線(底部),只有下降器會延伸到錨點下方。

請參閱 Wikipedia 上的字體度量,以取得更多資訊。

b — 底部(僅限單行文字

錨點位於文字的底部。

對於垂直文字,這是最後一個字形的進階起點,如 FreeType 教學 中所示。

對於水平文字,建議改用 d(下降器)對齊,因為它不會根據給定文字的特定字形而改變。

d — 下降器 / 底部(僅限水平文字

錨點位於字體定義的最後一行文字的下降器線(底部)。

請參閱 Wikipedia 上的字體度量,以取得更多資訊。

範例

下圖顯示了水平文字的幾個錨點範例。在每個區段中,xy 參數都設定為兩條線交點所顯示的中心。

Text anchor examples