De nombreuses applications Java n'utilisent pas de polices anti-aliasées par défaut, malgré la capacité de Swing à les fournir. Comment pouvez-vous contraindre une application arbitraire Java à utiliser des polices AA? (pour les applications que j'exécute et pour les applications que je développe)
Si vous avez accès à la source, vous pouvez le faire dans la méthode principale:
// enable anti-aliased text:
System.setProperty("awt.useSystemAAFontSettings","on");
ou, (et si vous n'avez pas accès à la source, ou si c'est plus facile), vous pouvez simplement passer les propriétés système ci-dessus dans le jvm en ajoutant ces options à la ligne de commande:
-Dawt.useSystemAAFontSettings=on
Les contrôles Swing dans les dernières versions de Java 6/7 devrait automatiquement respecter les préférences à l'échelle du système. (Si vous utilisez Windows L&F sur un système d'exploitation Windows, le texte doit s'afficher à l'aide de ClearType si vous que ce paramètre soit activé à l'échelle du système.) Une solution pourrait donc simplement être: activer le look and feel natif?
Dans les applications que vous développez, si vous rendez votre propre texte directement, vous devez également faire quelque chose comme ça (à un moment donné avant d'appeler Graphics.drawText
ou amis):
if (desktopHints == null) {
Toolkit tk = Toolkit.getDefaultToolkit();
desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints"));
}
if (desktopHints != null) {
g2d.addRenderingHints(desktopHints);
}
Référence: http://weblogs.Java.net/blog/chet/archive/2007/01/font_hints_for.html
Pour mémoire, j'ai découvert que sur ma machine Windows 7,
Ce code doit donc être utilisé avec précaution. Je suppose que cela cessera d'être nécessaire du tout lorsque tous les utilisateurs de Linux auront mis à jour les versions d'OpenJDK qui gèrent bien l'alias par défaut.
merci pour l'info. Je me posais cette question moi-même. J'utilise SoapUI (www.eviware.com) et il n'utilise PAS, par défaut, de texte AA. J'ai ajouté -Dawt.useSystemAAFontSettings = on -Dswing.aatext = true au fichier de commandes qui le lance MAIS cela n'a fait aucune différence. Devinez, je dois demander dans leur forum.