27

如何使用 PIL 绘制粗体/斜体文本?ImageFont.truetype(file, size) 具有仅指定字体大小的选项。

4

5 回答 5

23

使用字体的粗体/斜体版本

于 2009-11-29T10:19:17.777 回答
9

如果(无论出于何种原因)您没有单独的粗体版本的字体,一个相当老套的解决方案是使用轻微偏移多次打印相同的文本。

andaleMono = ImageFont.truetype(ANDALE_MONO_PATH,16)
text = "hello world"
mainOffset = (50,50)
xoff, yoff = mainOffset
draw.text(mainOffset,text,font=andaleMono,fill='black')
draw.text((xoff+1,yoff+1),text,font=andaleMono,fill='black')
draw.text((xoff-1,yoff-1),text,font=andaleMono,fill='black')
于 2016-09-06T17:38:29.923 回答
6

许多字体的粗体/斜体版本使用不同的 TTF 文件,所以我想如果你只指定该文件它会起作用。

于 2009-11-29T10:19:02.290 回答
6

到目前为止,还没有粗体特征作为参数,但您可以通过使用相同颜色的文本向文本添加笔划来轻松解决。这将是有意义的,因为粗体字体下一个代码详细说明了如何使用笔画

    draw.text((x, y), text, fill=color, font=font, stroke_width=2,
          stroke_fill="black")
于 2021-04-04T11:21:57.143 回答
4

嗯,这是我的第一个评论。开始了。

我将尝试澄清程序。起初我所做的是像这样使用字体的“名称”

font = ImageFont.truetype("C:\Windows\Fonts\\Arial Negrita.ttf",25)

但只有一些这样的错误:

    Traceback (most recent call last):
  File "C:/Users/555STi/PycharmProjects/PIL/img.py", line 8, in <module>
    font = ImageFont.truetype("C:\Windows\Fonts\Arial negrita.ttf",25)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 262, in truetype
    return FreeTypeFont(font, size, index, encoding)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 142, in __init__
    self.font = core.getfont(font, size, index, encoding)
IOError: cannot open resource

然后我记得有时字体有其他“名称”或“文件名”,所以,我所做的是转到字体文件夹,然后打开显示所有样式的 Arial 字体,如 negrita(粗体)、cursiva(斜体)等。

右键单击“negrita”样式,选择“属性”,然后是字体的“真实名称”。

就我而言,名字是“ariblk”

然后,最后,只是用了这样的名字。

font = ImageFont.truetype("C:\Windows\Fonts\\ariblk.ttf",25)

我知道这篇文章很旧,但今天帮助我找到了解决方案。所以我希望能帮助任何人。

=)

于 2015-05-24T05:21:25.073 回答