如何在任意 Java 应用程序中启用抗锯齿功能?

2022-08-31 20:32:01

默认情况下,许多 Java 应用程序不使用抗锯齿字体,尽管 Swing 能够提供这些字体。如何强制任意 Java 应用程序使用 AA 字体?(适用于我正在运行的应用程序和我正在开发的应用程序)


答案 1

如果您有权访问源代码,则可以在 main 方法中执行此操作:

  // enable anti-aliased text:
  System.setProperty("awt.useSystemAAFontSettings","on");

或者,(如果您无权访问源代码,或者如果这更容易),您可以通过将以下选项添加到命令行中,将上述系统属性传递到jvm中:

-Dawt.useSystemAAFontSettings=on

答案 2

最新版本的 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


推荐