¿Dibujar texto en negrita / cursiva con PIL?

¿Cómo dibujar texto en negrita / cursiva con PIL? ImageFont.truetype (archivo, tamaño) tiene una opción para especificar solo el tamaño de fuente.

Utilice la versión en negrita / cursiva de la fuente

Muchas fonts usan diferentes archivos TTF para sus versiones en negrita / cursiva, así que me imagino que si solo especificas ese archivo funcionará.

Una solución bastante intrincada para hacer una fuente en negrita si (por cualquier razón) no tiene una versión en negrita separada de la fuente es imprimir el mismo texto varias veces con un ligero desplazamiento.

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

Bueno, este es mi primer comentario. Aquí vamos.

Intentaré aclarar el procedimiento. Al principio, lo que hice fue usar el “nombre” de la fuente como este

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

Pero solo obtuve algunos errores como este:

  Traceback (most recent call last): File "C:/Users/555STi/PycharmProjects/PIL/img.py", line 8, in  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 

Entonces recordé que a veces las fonts tienen otros “nombres” o “nombres de archivo”, entonces, lo que hice fue ir a la carpeta de fonts, luego abrí la Fuente Arial que mostraba todos los estilos como negrita (negrita), cursiva (cursiva), etc.

Hizo un clic derecho en el estilo “negrita”, seleccionó “propiedades” y luego apareció el “nombre real” de la fuente.

En mi caso, el nombre era “ariblk”.

Entonces, finalmente, solo usé el nombre así.

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

Sé que esta publicación es antigua, pero hoy me ayudó a llegar a la solución. Así que espero poder ayudar a alguien.

=)