Pregunta

¿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.

¿Fue útil?

Solución

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

Otros consejos

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

Una solución bastante hacky para poner una fuente en negrita si (por alguna 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.

Trataré de aclarar el procedimiento. Al principio, lo que hice fue usar el " nombre " de la fuente como esta

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

pero solo obtuvo algunos errores como este:

    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

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

Hizo clic derecho en la "negrita" estilo, '' propiedades '' seleccionadas y luego estaba el " nombre real " de la fuente.

En mi caso, el nombre era "ariblk"

Entonces, finalmente, solo usé el nombre como este.

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 ayudar a cualquiera.

=)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top