2009-03-06 11 views
6

Estoy creando imágenes usando PIL que contienen numerosas cadenas de texto colocadas exactamente. Mi primer intento fue convertir las fuentes de píxeles en el formato compatible con Pil como se describe en here. Por ejemplo, puedo descargar la fuente Silksreen y convertirlo:Uso de fuentes de píxeles en PIL

otf2bdf -p 8pt -o fonts/slkscr.bdf fonts/slkscr.ttf 
pilfont.py fonts/slkscr.bdf 

puedo entonces utilizar la fuente de PIL, así:

import Image, ImageDraw, os, sys, ImageFont 
im = Image.new("RGB", (40,10)) 
draw = ImageDraw.Draw(im) 
fn = ImageFont.load('fonts/slkscr.pil') 
draw.text((0,0), "Hello", font=fn) 
del draw 
# write to stdout 
im.save(sys.stdout, "PNG") 

Sin embargo, la imagen resultante (alt text) no refleja lo que el fuente should look like.

¿Qué procedimiento debo usar para convertir y usar fuentes de píxeles para que se muestren como se esperaba?

Gracias de antemano.

+0

Editar: No pude hacer que funcione, y después de unas horas me di cuenta de que la utilidad pilfont.py en realidad crea 2 archivos, un .pil y un .pdm (el bdf es solo un intermediario n). Necesita ambos archivos, no solo el .pil -.- – Tom

Respuesta

3

Eureka!

sólo necesitaba para especificar una resolución de 72 dpi (por defecto es 100) para otf2bdf:

otf2bdf -p 8 -r 72 -o fonts/slkscr.bdf fonts/slkscr.ttf 

Ahora, alt text se ve muy bien!

+0

¿Sabe por qué? No parece lógico que menos puntos por pulgada le den una mejor resolución/representación. – tgray

+0

Es solo una cuestión de qué tamaño en puntos la fuente arbitrariamente decide hacer coincidir con un píxel. Silkscreen eligió 72 ppp ya que es la resolución de Mac OS de la vieja escuela. – bobince