在PIL中使用像素字体

Vin*_*nce 7 python imaging

我正在使用包含许多精确放置的文本字符串的PIL创建图像.我第一次尝试是为描述像素字体转换成PIL兼容的格式在这里.例如,我下载Silksreen字体并将其转换为:

otf2bdf -p 8pt -o fonts/slkscr.bdf fonts/slkscr.ttf 
pilfont.py fonts/slkscr.bdf
Run Code Online (Sandbox Code Playgroud)

我可以在PIL中使用字体,如下所示:

import Image, ImageDraw, os, sys, ImageFont
im = Image.new("RGB", (40,10))
draw = ImageDraw.Draw(im)
fn = ImageFont.load('fonts/slkscr.pil')
draw.text((0,0), "Hello", font=fn)
del draw
# write to stdout
im.save(sys.stdout, "PNG")
Run Code Online (Sandbox Code Playgroud)

但是,得到的图像(替代文字)不反映字体应该是什么样子.

我应该使用什么程序来转换和使用像素字体,以便它们按预期呈现?

提前致谢.

Vin*_*nce 4

尤里卡!

只需为 otf2bdf 指定 72 dpi 的分辨率(默认为 100):

otf2bdf -p 8 -r 72 -o fonts/slkscr.bdf fonts/slkscr.ttf
Run Code Online (Sandbox Code Playgroud)

现在,替代文本看起来很棒!