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?
C'est l'un de ces cas où nous utilisons une police simplement comme un ensemble de glyphes, sans contenu sémantique. Donc 'c' est une grande boîte vide, etc. –