Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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')

Что ж, это мой первый комментарий.Поехали.

Я постараюсь разъяснить процедуру.Сначала я использовал "название" шрифта следующим образом

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

Затем я вспомнил, что иногда у шрифтов есть другие "имена" или "filenames", поэтому я зашел в папку "шрифты", затем открыл шрифт Arial, в котором отображались все стили, такие как negrita (жирный шрифт), cursiva (курсив) и т.д.

Щелкнул правой кнопкой мыши по стилю "негрита", выбрал "свойства", а затем появилось "настоящее название" шрифта.

В моем случае это было название "ариблк".

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

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

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

=)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top