Выделите жирным шрифтом / курсивом с PIL? - PullRequest
14 голосов
/ 29 ноября 2009

Как нарисовать жирный / курсивный текст с помощью PIL? ImageFont.truetype (файл, размер) имеет возможность указать только размер шрифта.

Ответы [ 4 ]

14 голосов
/ 29 ноября 2009

Используйте версию шрифта, выделенную жирным шрифтом / курсивом

4 голосов
/ 29 ноября 2009

Многие шрифты используют разные файлы TTF для своих версий, выделенных полужирным шрифтом / курсивом, поэтому я думаю, если вы просто укажете этот файл, он будет работать.

3 голосов
/ 06 сентября 2016

Довольно хитрое решение сделать шрифт жирным, если (по какой-либо причине) у вас нет отдельной жирной версии шрифта, это напечатать один и тот же текст несколько раз с небольшим смещением.

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')
2 голосов
/ 24 мая 2015

Ну, это мой первый комментарий. Вот и мы.

Я постараюсь уточнить процедуру. Сначала я использовал имя шрифта, как это

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», выбрал «properties» и затем появилось «настоящее имя» шрифта.

В моем случае имя было "ariblk"

Затем, наконец, просто использовал имя, как это.

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

Я знаю, что этот пост старый, но сегодня помог мне найти решение. Поэтому я надеюсь помочь кому-нибудь.

=)

...