De nombreuses applications Java n’utilisent pas de fonts anti-aliasées par défaut, malgré la capacité de Swing à les fournir. Comment pouvez-vous contraindre une application Java arbitraire à utiliser des fonts AA? (à la fois pour les applications que je lance et les applications que je développe)
Si vous avez access à la source, vous pouvez le faire dans la méthode principale:
// enable anti-aliased text: System.setProperty("awt.useSystemAAFontSettings","on"); System.setProperty("swing.aatext", "true");
ou, (et si vous n’avez pas access à la source, ou si cela est plus facile), vous pouvez simplement passer les propriétés du système ci-dessus dans jvm en ajoutant ces options à la ligne de commande:
-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
Les contrôles Swing des dernières versions de Java 6/7 doivent automatiquement respecter les préférences du système. (Si vous utilisez Windows L & F sur un système d’exploitation Windows, alors le texte doit être affiché avec ClearType si ce paramètre est activé pour tout le système.) Une solution peut-être simplement être la suivante: activer l’apparence native?
Dans les applications que vous développez, si vous restituez directement votre propre texte, vous devez également faire quelque chose comme ça (à un moment donné, avant d’appeler Graphics.drawText
ou vos 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 dans ma machine Windows 7,
Donc, ce code doit être utilisé avec précaution. Je suppose que cela cessera d’être nécessaire lorsque tous les utilisateurs Linux auront mis à jour les versions d’OpenJDK qui gèrent bien les alias par défaut.
Merci pour l’info. Je m’interrogeais à ce sujet moi-même. J’utilise SoapUI (www.eviware.com) et, par défaut, il n’utilise pas de texte AA. J’ai ajouté -Dawt.useSystemAAFontSettings = sur -Dswing.aatext = true au fichier batch qui le lance MAIS cela n’a pas fait de différence. Devinez, je dois demander dans leur forum.