2010-10-17 6 views
3

J'essaye de lisser le rendu de texte en utilisant l'anti-aliasing. Mais ce n'est pas anti-aliasé.Lissage des polices en utilisant le cairo

http://tinypic.com/r/2h7dy1i/4 http://oi38.tinypic.com/2h7dy1i.jpg

La première ligne est une image .png créée en utilisant Pango et caire. La deuxième ligne est juste un tag html <span>. C'est dans Firefox, Ubuntu avec Gnome DE. La différence peut être mieux comprise si vous comparez "W" et "v" entre deux lignes.

Le code responsable pour dessiner le texte se trouve sur http://pastie.org/1073683 options de police sont situés sur les lignes 17 et 20 comme ceci:

// setting up antialiasing 
cairo_font_options_set_antialias(cfo, CAIRO_ANTIALIAS_GRAY); 

// set the font options to cairo 
cairo_set_font_options(this->cro, cfo); 

Quelqu'un pourrait-il s'il vous plaît me dire comment puis-je faire ces deux lignes se ressemblent ?

Répondre

2
cairo_font_options_set_antialias(cfo, CAIRO_ANTIALIAS_GRAY); 

Vous l'avez demandé, vous l'avez. Pour obtenir une correspondance, vous aurez besoin de CAIRO_ANTIALIAS_SUBPIXEL. Ceci n'est cependant pas approprié lorsque vous dessinez du texte sur une image qui pourrait être affichée sur une autre machine. Il n'y a aucune garantie que le moniteur sur cette machine est un panneau LCD avec les bandes RVB dans un ordre prévisible. Ou que ce soit en orientation paysage. Ou qu'il est affiché avec la taille d'origine exacte. Quand il y a une discordance, le texte aura l'air assez pauvre.

+0

Je vais utiliser ce code pour générer une image sur mon serveur sous Debian Lenny. Les gens verront cela sur leur écran. Et je n'ai aucun moyen de savoir quel moniteur ils vont utiliser. Donc à partir de votre réponse, il me semble, si VRGB est utilisé, l'image générée aura l'air anti-aliasé dans l'affichage compatible VRGB. Et il semblera mauvais dans l'autre affichage. Ai-je raison?? –

+0

Ce que vous avez est correct. Comparez à cela: http://meta.stackexchange.com/questions/65398/disable-cleartype-subpixel-rendering-for-image-based-flair –

+0

Donc, Firefox détermine aussi mon type d'affichage en premier. Utilise ensuite l'option antialias subpixel compatible. Si oui. comment puis-je savoir quelle option antialias utilise firefox? et comment puis-je imiter le même comportement dans mon script de sorte qu'au moins dans mon PC, je peux le voir anti-alias correctement. –

Questions connexes