2009-07-20 70 views
1

我正在寫一個圖形激烈的應用程序,使JLabel脫離屏幕。Mac和Windows中的字體渲染

當我打電話以下行,省略號出現在Mac上,但不是在窗戶框。

g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, 
    RenderingHints.VALUE_FRACTIONALMETRICS_ON); 

現在,我猜測這是由於Mac已經在做一些字體的子像素渲染,但我只想確認一下。

此外,由於在Windows上啓用FRACTIONALMETRICS勢在必行(否則該應用程序看起來很糟糕),任何人都可以建議一個工作而不添加一個檢查不是mac嗎?

謝謝。

回答

3

爲FractionalMetrics的RenderingHints所關注的大小時四捨五入浮整數或字距字體。字形本身不受此設置的影響。您可以通過Java 2D FAQ閱讀所有相關內容。

你是正確的,對Java的Mac OS X在系統級別啓用文本抗鋸齒,和Windows是不是,但沒有必要對MAC-只檢查。你應該做的是設置TextAntiAlias RenderingHint。

gfx.setRenderingHint( 
     RenderingHints.KEY_TEXT_ANTIALIASING, 
     RenderingHints.VALUE_TEXT_ANTIALIAS_ON 
    ); 

Java 6的支持ClearType字體渲染這是比抗鋸齒那是在Java 5中的ClearType經常需要在Windows XP中進行切換LCD屏幕要好得多;它在控制面板的顯示設置中的某處。然後,你需要運行與正確的命令行參數的Java程序來啓用它(或它們插入到System.setProperty()您顯示任何Swing組件前):

java -Dawt.useSystemAAFontSettings=lcd [...your gubbins here...] 
+0

感謝,ClearType的伎倆是好的,知道但遺憾的是超出了我的目標。任何想法是什麼導致一個省略號而不是另一個呢?還是反鋸齒會使尺寸增大? – 2009-07-20 22:48:48