テキストアンカー¶
anchor
パラメータは、描画されるテキストの xy
パラメータに対する配置を決定します。デフォルトの配置は左上、具体的には横書きテキストの場合は la
(左-アセンダー)、縦書きテキストの場合は lt
(左-上) です。
このパラメータは、OpenType/TrueType フォントでのみサポートされています。他のフォントはパラメータを無視し、デフォルト (左上) の配置を使用する場合があります。
アンカーの指定¶
アンカーは2文字の文字列で指定します。最初の文字は水平方向の配置、2番目の文字は垂直方向の配置です。たとえば、横書きテキストのデフォルト値 la
は、左-アセンダー揃えのテキストを意味します。
特定のアンカーを使用して PIL.ImageDraw.ImageDraw.text()
でテキストを描画する場合、指定されたアンカーポイントが xy
座標になるようにテキストが配置されます。
たとえば、次の画像では、テキストは ms
(中央-ベースライン) 揃えで、xy
は2本の線の交点にあります。

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
— アセンダー/上 *(横書きテキストのみ)*アンカーは、フォントで定義されているテキストの最初の行のアセンダーライン (上) にあります。
詳細は、Wikipedia のフォントメトリクス を参照してください。
t
— 上 *(単一行テキストのみ)*アンカーはテキストの上部にあります。
*垂直* テキストの場合、これは FreeType チュートリアル に示すように、最初のグリフの原点です。
*水平* テキストの場合、指定されたテキストの特定のグリフに基づいて変化しないため、
a
(アセンダー) 配置を使用することをお勧めします。m
— 中央アンカーはテキストと垂直方向に中央揃えされます。
*水平* テキストの場合、これは最初のアセンダーラインと最後のディセンダーラインの中点です。
s
— ベースライン *(横書きテキストのみ)*アンカーはテキストの最初の行のベースライン (下) にあり、ディセンダーのみがアンカーの下に伸びています。
詳細は、Wikipedia のフォントメトリクス を参照してください。
b
— 下 *(単一行テキストのみ)*アンカーはテキストの下部にあります。
*垂直* テキストの場合、これは FreeType チュートリアル に示すように、最後のグリフの高度な原点です。
*水平* テキストの場合、指定されたテキストの特定のグリフに基づいて変化しないため、
d
(ディセンダー) 配置を使用することをお勧めします。d
— ディセンダー/下 *(横書きテキストのみ)*アンカーは、フォントで定義されているテキストの最後の行のディセンダーライン (下) にあります。
詳細は、Wikipedia のフォントメトリクス を参照してください。
例¶
次の画像は、横書きテキストのアンカーの例をいくつか示しています。各セクションで、xy
パラメータは、2本の線の交点で示される中心に設定されています。
