如何设置PIL加载的默认字体大小,以适应我的8x8矩阵?

17

我正在开发一个在8x8矩阵显示器上显示文本的项目,但是我不知道在我的BeagleBone上是否有手头上可用的.ttf文件。

根据这里的示例,我应该可以使用font = ImageFont.load_default()来代替加载.ttf文件,但是,这显然没有指定字体的尺寸!有什么方法可以做到这一点吗?或者,您确定我可以在我的BBB版本Ubuntu 14.04.1上找到.ttf字体的地方吗?

import Image
import ImageDraw
import ImageFont

# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))
# Load default font.
font = ImageFont.load_default()

# Alternatively load a TTF font.
# Some other nice fonts to try: http://www.dafont.com/bitmap.php
#font = ImageFont.truetype('Minecraftia.ttf', 8)

# Write two lines of text.
draw.text((x, top),    'Hello',  font=font, fill=255)
draw.text((x, top+20), 'World!', font=font, fill=255)

您可以使用 pilfont 工具 将 BDF 格式字体转换为 pilformat。该工具是位于 /Python/Scripts 目录下的脚本。我在这里找到了一个 8x8 的 BDF 字体,您可以从 此处 下载。 - martineau
1个回答

11
由于load_default字体是光栅字体格式,因此没有选择其大小的选项。如果您在ImageFont.py代码中检查,实际上会将字体信息编码为base64存储在那里。不确定您是否能够确切地在您的发行版中找到字体,但最好且具有未来可靠性的方法可能是执行相同操作,并在脚本中包含字体数据。请参见:PIL的Github库 另外,您可以使用内置字体,找出其大小,然后缩小到显示器的大小: http://effbot.org/imagingbook/imagedraw.htm#tag-ImageDraw.Draw.textsize

在第二个选项上,你会如何缩小规模? - Harry Moreno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接