Disegna testo in grassetto / corsivo con PIL?
-
06-07-2019 - |
Domanda
Come disegnare un testo in grassetto / corsivo con PIL? ImageFont.truetype (file, size) ha un'opzione per specificare solo la dimensione del carattere.
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.
=)