Question

Comment dessiner un texte en gras / italique avec PIL? ImageFont.truetype (fichier, taille) a une option permettant de spécifier uniquement la taille de la police.

Était-ce utile?

La solution

Utilisez la version gras / italique de la police

Autres conseils

De nombreuses polices utilisent des fichiers TTF différents pour leurs versions en gras / italique, alors j'imagine que si vous spécifiez ce fichier, il fonctionnerait.

Une solution plutôt fastidieuse pour mettre une police en gras si (pour une raison quelconque) vous ne disposez pas d'une version en gras distincte de la police est d'imprimer plusieurs fois le même texte avec un léger décalage.

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

Eh bien, c’est mon premier commentaire. On y va.

Je vais essayer de clarifier la procédure. Au début, j’utilisais le "nom". de la police comme ça

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

mais seulement quelques erreurs comme celle-ci:

    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

Ensuite, je me suis rappelé que parfois les polices ont d'autres "noms". ou "noms de fichiers", donc ce que je faisais allait dans le dossier des polices, puis ouvrait la police Arial qui affichait tous les styles tels que negrita (gras), cursiva (italique), etc.

Faites un clic droit sur le " negrita " style, "propriétés" sélectionnées et puis il y avait le "vrai nom" de la police.

Dans mon cas, le nom était "ariblk"

Enfin, finalement, je viens d'utiliser le nom comme ceci.

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

Je sais que ce message est ancien, mais aujourd’hui m’a aidé à trouver la solution. J'espère donc pouvoir aider qui que ce soit.

=)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top