PILのImageFontモジュールを使用してフォントをロードし、テキスト画像を生成しています。テキストをエッジにしっかりとバインドしたいのですが、ImageFontを使用してフォントの高さを取得すると、文字のパディングが含まれているようです。赤い長方形が示すように。
c = 'A'
font = ImageFont.truetype(font_path, font_size)
width = font.getsize(c)[0]
height = font.getsize(c)[1]
im = Image.new("RGBA", (width, height), (0, 0, 0))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'A', (255, 255, 255), font=font)
im.show('charimg')
文字の実際の高さを取得できる場合は、下の長方形の境界行をスキップできます。この情報はフォントから取得できますか?ありがとうございました。
正確なサイズは多くの要因に依存します。フォントのさまざまなメトリックを計算する方法を紹介します。
_font = ImageFont.truetype('arial.ttf', font_size)
ascent, descent = font.getmetrics()
(width, baseline), (offset_x, offset_y) = font.font.getsize(text)
_
offset_y
_ascent - offset_y
_descent
font.getmask(text).getbbox()
それが役に立てば幸い。