我一直在用Java构建开发环境(作为一个小型研究项目)。作为其中的一部分,我构建了一个自定义文本组件,使用Graphics2d绘制文本本身,如下所示:
g2.drawString("some text", 100, 100);
使用1.6(我假设这是由Apple提供),所有东西在Eclipse中都很好用,直到我打包并运行java 1.7(由Oracle提供)。显然在开发环境中字体非常重要,所以我很不高兴看到1.7中的结果。
我尝试过包装自定义字体,但它们都显得粗糙和腐蚀。上面的比较并不算太差,但有些字体(如摩纳哥)看起来很糟糕。
我猜这与Apple如何将事物挂钩到Quartz有关。但有没有办法改善事物,所以它在其他系统上看起来并不可怕?有没有人有这个策略?
更新:这是摩纳哥的比较:
和摩纳哥的C(在paintComponent中)的缩放比较(左边是1.7,右边是1.6)。请注意,我使用以下命令从本地ttf文件加载字体:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("monaco.ttf");
Font customFont = null;
try
{
customFont = Font.createFont(Font.TRUETYPE_FONT, is);
customFont = customFont.deriveFont(16.0f).deriveFont(Font.BOLD);
is.close();
ge.registerFont(customFont);
} catch (FontFormatException e1)
{
e1.printStackTrace();
} catch (IOException e1)
{
e1.printStackTrace();
}
this.setFont(customFont);
另请注意,使用以下命令打开抗锯齿:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
答案 0 :(得分:14)
Java 6由Apple开发。 Apple在图形层中投入大量精力使其与Quartz / Cocoa一起使用,尤其是使其看起来更好。
对于Java 7,开发由Oracle接管。这并不意味着Oracle从Apple获得了消息来源。相反,他们重新开始(可能将一些Unix代码移植到OS X)。这意味着Apple在OS X上使Java看起来很好的所有工作基本上都失败了。
Apple非常关注设计。甲骨文......嗯......不是那么多(exhibit A,exhibit B)你能做什么?
相关文章: