我目前正在使用ImageMagick的convert命令从.ttf字体文件创建文本预览(.png)。总的来说,尽管有时无法读取某些有效的.ttf文件,但它在自动文本定位方面更好。速度不是很快,但可以接受。
PIL的ImageFont看起来不擅长文本对齐,经常在画布外打印第一个字符的左下角。
除了上述两个,有没有人知道更好的选择?我想知道在流量如此繁重的myfonts.com等网站上为文本预览部分供电需要什么样的技术。
修改
PIL字体示例无法正确绘制字体。示例中使用的字体是Hanford script
import Image, ImageDraw, ImageFont
font = ImageFont.truetype('HANFORD_.TTF', 122)
text_width, text_height = font.getsize('Hanford script')
print text_width, text_height
>>> 833 47
img = Image.new('RGBA', (text_width, text_height))
draw = ImageDraw.Draw(img)
draw.text((0, 0), 'Hanford script', font=font, fill=(0, 0, 0))
img.save('output.png')
输出图像仅包含“Hanford脚本”的上半部分。
我尝试使用imagemagick的转换命令:
convert -font "HANFORD_.TTF" -background transparent -gravity center -size 830x80 label:'Hanford script' output.png
输出图像与PIL得到的相同。
这不是PIL或imagemagick无法获得正确文本大小的唯一字体。对于其他一些字体,如Ginga,它们只是放大文本高度,导致输出图像的上半部分为空白。谁知道原因?
答案 0 :(得分:1)
答案 1 :(得分:0)
这有点像,但你看过sIFR (Scalable Inman Flash Replacement)吗?它用于允许Web设计人员使用他们选择使用的任何字体呈现的文本插入短文本块(标题等),即使用户没有在本地安装它。
如果您要使用sIFR创建一个简单的网页,并在本地为自己提供,那么它可能适合您的目的。
就像我说的那样,这是一个棘手的解决方案,但是......: - )
答案 2 :(得分:0)
我也有同样的问题。几天前,我发现了这个库。我尝试过,它似乎真的很有用。我共享链接,因为我也遇到同样的问题。
https://github.com/MatteoGuadrini/fontpreview
字体预览示例:
from fontpreview import FontPreview
fp = FontPreview('/tmp/noto.ttf')
fp.save('/tmp/fp.png')