2011-02-28 211 views
0

我已捆绑一个JAR归档我与常规负载沿该线内的.TTF字体:Font.createFont +抗锯齿

[snip] 
is = IdeUiUtil.class.getResourceAsStream(fontName); 
font = Font.createFont(Font.TRUETYPE_FONT, is); 
font = font.deriveFont(style, size); 
[snip] 

UPDATE:字体是在标题中使用一个TitledBorder,并且最终还将用于几个JLabels

问题是,在Window平台上它看起来都很麻烦。在linux上,它很好的反锯齿。我有什么要做的呢,它在Windows上也是反锯齿的?

+0

这是一个相当古老的问题,但我完全穿过了同一个问题。如果我从一个输入流中加载一个字体(并将其注册到GraphicsEnvoronment中),那么这个字体不会被消除锯齿,无论使用什么样的渲染提示。特别是如果该字体在运行时没有加载,但是只能在系统字体下使用,那么这个字体是反锯齿的。看起来这是Java中的一个错误。 – 2014-08-03 07:53:58

回答

0

如果您正在使用绘制图形,你应该使用:

Graphics2D g2d = (Graphics2D)getGraphics(); 
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

...但是这不是特定于捆绑的字体:它适用于有图形对象使用的所有字体。

有一个hack将其应用于面板,但我不确定它是否是最新的。

+0

对于最近的JDK,还有一个关于Stackoverflow的提示:http://stackoverflow.com/q/179955/438970 – Damien 2011-02-28 16:25:46

+0

好吧,AA似乎在除了我设置加载字体的TitledBorder之外的所有内容上都启用。我也尝试将这种字体设置到其他组件(在这种情况下是JLabels),并注意到它们也不是匿名的。如果我使用系统字体,如'Arial',则组件正确渲染。但我会给你一个提示... – exhuma 2011-02-28 16:32:52

+0

好吧。我只是尝试使用系统道具。没有运气... :( – exhuma 2011-02-28 16:35:35