如何在任意 Java 应用程序中启用抗锯齿功能?
2022-08-31 20:32:01
默认情况下,许多 Java 应用程序不使用抗锯齿字体,尽管 Swing 能够提供这些字体。如何强制任意 Java 应用程序使用 AA 字体?(适用于我正在运行的应用程序和我正在开发的应用程序)
默认情况下,许多 Java 应用程序不使用抗锯齿字体,尽管 Swing 能够提供这些字体。如何强制任意 Java 应用程序使用 AA 字体?(适用于我正在运行的应用程序和我正在开发的应用程序)
如果您有权访问源代码,则可以在 main 方法中执行此操作:
// enable anti-aliased text:
System.setProperty("awt.useSystemAAFontSettings","on");
或者,(如果您无权访问源代码,或者如果这更容易),您可以通过将以下选项添加到命令行中,将上述系统属性传递到jvm中:
-Dawt.useSystemAAFontSettings=on
最新版本的 Java 6/7 中的 Swing 控件应自动遵守系统范围的首选项。(如果您在Windows操作系统上使用Windows L&F,那么如果您在系统范围内启用了该设置,则应使用ClearType呈现文本。因此,也许一种解决方案可以简单地是:启用本机外观和感觉?
在你正在开发的应用程序中,如果你直接渲染自己的文本,你还需要做这样的事情(在打电话或交朋友之前的某个时刻):Graphics.drawText
if (desktopHints == null) {
Toolkit tk = Toolkit.getDefaultToolkit();
desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints"));
}
if (desktopHints != null) {
g2d.addRenderingHints(desktopHints);
}
参考资料: http://weblogs.java.net/blog/chet/archive/2007/01/font_hints_for.html