[英]Why are fonts in java 1.7 different to 1.6?
我一直在用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);
Java 6由Apple開發。 Apple在圖形層中投入了大量精力,使其與Quartz / Cocoa一起使用,尤其是使其看起來更好。
對於Java 7,開發由Oracle接管。 這並不意味着Oracle從Apple獲得了消息來源。 相反,他們重新開始(可能將一些Unix代碼移植到OS X)。 這意味着Apple在OS X上使Java看起來很好的所有工作基本上都失敗了。
Apple非常關心設計。 甲骨文......嗯......沒那么多( 展覽A , 展覽B )
你能做什么?
相關文章:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.