2010-05-05 8 views
1

J'utilise Java2D pour générer des images avec du texte dessus. Les polices sont horriblement rendues avec un mauvais antialiasing sur un serveur exécutant Ubuntu mais un rendu magnifique sur un poste de travail OSX et Ubuntu. Je suppose que la différence entre les deux installations Ubuntu est xwindows vs pas xwindows? Peut être? Quoi qu'il en soit, je suppose que mes conseils de rendu sont ignorés et les algorithmes d'antialiasing java 1.6 sous-pixels ne sont pas utilisés sur le serveur.Force Java2D Subpixel Antialiasing

Mes conseils de calcul sont ci-dessous. J'optimise pour un affichage positionné verticalement. Je crée la police directement à partir d'un fichier ttf qui a amélioré le rendu. Je ne pense pas que la police a été installée sur la machine, donc elle était par défaut à autre chose. Maintenant, la police est correcte mais l'antialiasing est toujours désactivé. Cela a l'air mieux que quand je désactive complètement l'antialiasing et que je génère les images, donc je suppose que ça fait quelque chose mais ça n'a pas l'air aussi bon.

et j'ai essayé la propriété Java

-Dawt.useSystemAAFontSettings=lcd 

mais cela n'a rien changé.

Des suggestions? Merci.

Répondre

2

Avez-vous déjà essayé quelque chose comme ceci:

public void paintComponent(Graphics g){ 
    @SuppressWarnings("unchecked") 
    Map<String, String> desktopHints = (Map<String, String>) Toolkit 
    .getDefaultToolkit().getDesktopProperty("awt.font.desktophints"); 
    Graphics2D g2d = (Graphics2D) g; 
    if(desktopHints != null){ 
    g2d.addRenderingHints(desktopHints); 
    } 
    g2d.drawString("text", 10, 10); 
} 

L'objet Graphics reçu en paintComponent() est mis en place par défaut qui ne savent pas quoi que ce soit sur les propriétés de bureau (type de moniteur). Querying Toolkit pour le desktophints renvoie des informations du système d'exploitation sous-jacent sur le matériel utilisé. Comparer "Filthy Rich Clients", page 59.

Questions connexes