【问题标题】:How do you enable anti aliasing in arbitrary Java apps?如何在任意 Java 应用程序中启用抗锯齿功能?
【发布时间】:2010-09-15 20:22:58
【问题描述】:

默认情况下,许多 Java 应用程序不使用消除锯齿字体,尽管 Swing 能够提供它们。你如何强制一个任意的 java 应用程序使用 AA 字体? (对于我正在运行的应用程序和我正在开发的应用程序)

【问题讨论】:

    标签: java antialiasing


    【解决方案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 设置,则文本应该使用 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

    【讨论】:

      【解决方案3】:

      为了记录,我发现在我的 Windows 7 机器上,

      • 如果我不在我的代码中使用它,我会得到漂亮的 ClearType 子像素渲染。
      • 但是如果我使用它,我会得到经典的黑白抗锯齿效果,这更难看。

      所以应该谨慎使用这段代码。我想当所有 Linux 用户都更新到默认情况下可以很好地处理别名的 OpenJDK 版本时,它就不再需要了。

      【讨论】:

      • 试试 System.setProperty("awt.useSystemAAFontSettings", "lcd");你应该得到 ClearType。
      • 作为 linux 和 windows 用户,我不喜欢“cleartype”。我故意禁用它。
      【解决方案4】:

      感谢您的信息。我自己也在想这个。 我使用 SoapUI(www.eviware.com),默认情况下它不使用 AA 文本。我添加了 -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true 到启动它的批处理文件,但没有任何区别。猜猜,我必须在他们的论坛上问。

      【讨论】:

      • 它可能将参数解释为与应用程序而不是 jvm 相关——您可能需要更深入地研究 bat 文件。 (或者它可能不适用于所有应用程序......如果是这样,请让我知道/否决我的答案......)
      • 我能够通过编辑 .sh 启动文件使最后一行显示为:java -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dsoapui.properties=soapui 来使其工作。属性 -Dgroovy.source.encoding=iso-8859-1 -cp $SOAPUI_CLASSPATH com.eviware.soapui.SoapUIPro $*
      • 我相信您可以通过将此处列出的 -D.... 参数添加到 JAVA_OPTS 行或仅指定 JAVA_OPTS=-Dawt.useSystemAAFontSettings=on -Dswing 来对 soapui bat 文件执行相同的操作.aatext=true 在周围环境中
      • 对于 Windows 上的 SoapUI,我编辑了“C:\Program Files (x86)\SmartBear\SoapUI-5.0.0\bin”文件夹中的 SoapUI-5.0.0.vmoptions 文件并添加了 - Dawt.useSystemAAFontSettings=on -Dswing.aatext=true 作为最后一行。
      • 另外,参数的顺序会有所不同,您需要在任何-jar mycooljar.jar之前添加参数
      猜你喜欢
      • 2019-05-13
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 2014-08-21
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      相关资源
      最近更新 更多