Domanda

Come disegnare un testo in grassetto / corsivo con PIL? ImageFont.truetype (file, size) ha un'opzione per specificare solo la dimensione del carattere.

È stato utile?

Soluzione

Utilizza la versione in grassetto / corsivo del carattere

Altri suggerimenti

Molti caratteri usano file TTF diversi per le loro versioni in grassetto / corsivo, quindi immagino che se si specifica semplicemente quel file funzionerebbe.

Una soluzione piuttosto confusa per rendere grassetto un carattere se (per qualsiasi motivo) non hai una versione in grassetto separata del carattere è stampare lo stesso testo più volte con un leggero offset.

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

Bene, questo è il mio primo commento. Eccoci qui.

Proverò a chiarire la procedura. Inizialmente quello che ho fatto è stato usare il "nome" del carattere come questo

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

ma ho ricevuto solo alcuni errori come questo:

    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

Poi mi sono ricordato che a volte i caratteri hanno altri "nomi" o " nomi di file " ;, quindi, quello che ho fatto è stato andare nella cartella font, quindi ho aperto il font Arial che mostrava tutti gli stili come negrita (grassetto), cursiva (corsivo), ecc.

Ha fatto clic con il tasto destro del mouse su " negrita " stile, proprietà selezionate " e poi c'era il "vero nome" del carattere.

Nel mio caso, il nome era " ariblk "

Quindi, infine, ho appena usato il nome in questo modo.

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

So che questo post è vecchio, ma oggi mi ha aiutato a trovare la soluzione. Quindi spero di aiutare qualcuno.

=)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top