Mac和Windows中的字体渲染

问题描述:

我正在写一个图形激烈的应用程序,使JLabel脱离屏幕。Mac和Windows中的字体渲染

当我打电话以下行,省略号出现在Mac上,但不是在窗户框。

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

现在,我猜测这是由于Mac已经在做一些字体的子像素渲染,但我只想确认一下。

此外,由于在Windows上启用FRACTIONALMETRICS势在必行(否则该应用程序看起来很糟糕),任何人都可以建议一个工作而不添加一个检查不是mac吗?

谢谢。

为FractionalMetrics的RenderingHints所关注的大小时四舍五入浮整数或字距字体。字形本身不受此设置的影响。您可以通过Java 2D FAQ阅读所有相关内容。

你是正确的,对Java的Mac OS X在系统级别启用文本抗锯齿,和Windows是不是,但没有必要对MAC-只检查。你应该做的是设置TextAntiAlias RenderingHint。

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

Java 6的支持ClearType字体渲染这是比抗锯齿那是在Java 5中的ClearType经常需要在Windows XP中进行切换LCD屏幕要好得多;它在控制面板的显示设置中的某处。然后,你需要运行与正确的命令行参数的Java程序来启用它(或它们插入到System.setProperty()您显示任何Swing组件前):

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

感谢,ClearType的伎俩是好的,知道但遗憾的是超出了我的目标。任何想法是什么导致一个省略号而不是另一个呢?还是反锯齿会使尺寸增大? – 2009-07-20 22:48:48