Java Mac与Windows中的字体渲染

Java Mac与Windows中的字体渲染,java,swing,Java,Swing,我正在编写一个图形化的应用程序,将JLabel呈现在屏幕外 当我调用下一行时,省略号会出现在mac电脑上,但不会出现在windows框中 g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); 现在,我猜这是因为Mac已经在做一些字体的亚像素渲染,但我想确认一下 此外,既然必须在windows上启用分馏矩阵(否则该应用看起来很糟糕),除了添

我正在编写一个图形化的应用程序,将JLabel呈现在屏幕外

当我调用下一行时,省略号会出现在mac电脑上,但不会出现在windows框中

g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
    RenderingHints.VALUE_FRACTIONALMETRICS_ON);
现在,我猜这是因为Mac已经在做一些字体的亚像素渲染,但我想确认一下

此外,既然必须在windows上启用分馏矩阵(否则该应用看起来很糟糕),除了添加一个not mac检查之外,还有谁能建议一个解决方案吗


谢谢。

分数矩阵的渲染提示与调整字体大小或字距时将浮点舍入为整数有关。字形本身不受此设置的影响。你可以在网站上看到这一切

您是对的,Mac OS X上的Java正在系统级启用文本消除混叠,而Windows则没有,但不需要仅对Mac进行检查。您应该做的是将TextAntiAlias RenderingHint设置为启用

gfx.setRenderingHint( 
        RenderingHints.KEY_TEXT_ANTIALIASING, 
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON 
    );
Java6支持ClearType字体呈现,这在LCD屏幕上比Java5中的抗锯齿效果要好得多。ClearType通常需要在Windows XP上切换;它在控制面板的显示设置中的某个位置。然后,您需要使用正确的命令行参数运行Java程序以启用它(或者在显示任何Swing组件之前将它们插入System.setProperty()):


谢谢,ClearType技巧很高兴知道,但遗憾的是,它超出了我的目标版本。你知道是什么导致了其中一个省略,而另一个没有?或者是抗锯齿使大小变大了?字符串的呈现方式是否相同,字体是否相同?我不记得Mac Java应用程序是否默认使用Lucida Grande。有时,像大写字母W这样的宽标志符号会在JLabel上调用省略号。如果布局管理器允许,请尝试将其加宽一点。
java -Dawt.useSystemAAFontSettings=lcd [...your gubbins here...]