2009-01-07 10 views
2

J'ai un programme Python utilisant PIL pour rendre le texte, et il fonctionne très bien avec toutes sortes de polices. Mais il ne dessine que des rectangles "glyphes manquants" avec des wingdings ou des webdings.Dessin avec Webdings dans PIL

Voici un exemple qui essaie de tirer tous les caractères unicode:

# Run this with .ttf file path as an argument, and also an encoding if you like. 
# It will make 16 PNGs with all the characters drawn. 
import sys 
import Image, ImageDraw, ImageFont 

size = 20 
per = 64 

chars = 0x10000 
perpage = per*per 

fontfile = sys.argv[1] 
encoding = sys.argv[2] if len(sys.argv) > 2 else '' 

font = ImageFont.truetype(sys.argv[1], size, encoding=encoding) 

for page in range(0, chars//perpage): 

    im = Image.new("RGB", (size*per+30, size*per+30), '#ffffc0') 
    draw = ImageDraw.Draw(im) 

    for line in range(0, per): 
     for col in range(0, per): 
      c = page*perpage + line*per + col 
      draw.text((col*size, line*size), unichr(c), font=font, fill='black') 

    im.save('allchars_%03d.png' % page) 

Avec Arial.ttf (ou mieux encore, ARIALUNI.TTF), je reçois 16 PNGs intéressants. En recherchant des problèmes avec PIL, certaines polices de symboles doivent avoir leur codage spécifié. Si j'utilise Symbol.ttf, j'obtiens tous les glyphs manquants jusqu'à ce que je spécifie "symb" comme encodage.

Comment faire fonctionner les wingdings?

Répondre

1

Je dois avoir fait quelque chose de mal avant. "symb" comme l'encodage fonctionne aussi pour les wingdings! Désolé pour le bruit ...