我正在编写一个强大的图形应用程序,可以在屏幕外渲染JLabel。
当我调用以下行时,省略号出现在mac上但不出现在windows框中。
g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
现在,我猜这是因为Mac已经对字体做了一些子像素渲染,但我只想确认一下。
此外,由于在Windows上启用FRACTIONALMETRICS是必要的(否则应用程序看起来很糟糕),有人可以提出一项工作,但不会添加支票而不是mac吗?
感谢。
答案 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...]