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