Mac与Windows中的字体渲染

时间:2009-07-20 13:00:27

标签: java swing

我正在编写一个强大的图形应用程序,可以在屏幕外渲染JLabel。

当我调用以下行时,省略号出现在mac上但不出现在windows框中。

g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
    RenderingHints.VALUE_FRACTIONALMETRICS_ON);

现在,我猜这是因为Mac已经对字体做了一些子像素渲染,但我只想确认一下。

此外,由于在Windows上启用FRACTIONALMETRICS是必要的(否则应用程序看起来很糟糕),有人可以提出一项工作,但不会添加支票而不是mac吗?

感谢。

1 个答案:

答案 0 :(得分:3)

FractionalMetrics的RenderingHints涉及在调整字体大小或字距时将浮点数舍入为整数。字形本身不受此设置的影响。您可以在Java 2D FAQ上阅读所有相关信息。

你是正确的,Mac OS X上的Java在系统级别启用了文本消除锯齿,而Windows则没有,但是不需要仅支持Mac的检查。你应该做的是改为设置TextAntiAlias RenderingHint。

gfx.setRenderingHint( 
        RenderingHints.KEY_TEXT_ANTIALIASING, 
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON 
    );

Java 6支持ClearType字体渲染,这在LCD屏幕上比在Java 5中的抗锯齿更好。通常需要在Windows XP上切换ClearType;它位于控制面板的显示设置中的某个位置。然后,您需要使用正确的命令行参数运行Java程序以启用它(或在显示任何Swing组件之前将它们插入System.setProperty()):

java -Dawt.useSystemAAFontSettings=lcd [...your gubbins here...]