Question

J'ai un programme Python utilisant PIL pour le rendu du texte, qui fonctionne très bien avec toutes sortes de polices. Mais il ne fait que dessiner un "glyphe manquant". rectangles avec wingdings ou webdings.

Voici un exemple qui tente 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 PNG intéressants. En recherchant des problèmes avec PIL, le codage de certaines polices de symboles doit être spécifié. Si j'utilise Symbol.ttf, tous les glyphes manquants sont récupérés jusqu'à ce que je spécifie "symb". comme encodage.

Comment obtenir des ailettes au travail?

Était-ce utile?

La solution

J'ai dû faire quelque chose de mal avant. " symb " comme l'encodage fonctionne aussi pour les wingdings! Désolé pour le bruit ...

Autres conseils

Tous les wingdings ne sont pas mappés en unicode: voir http://www.alanwood.net /demos/wingdings.html

De plus, vous ne couvrez que le Plan multilingue de base ( wikipedia )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top