2009-08-05 124 views
0

我有一些Swing代碼(用1.6編寫的1.6),專門將文本區域中的字體設置爲Courier,但在某些Windows系統上,它顯示爲Arial(系統默認?)。這是否意味着系統中缺少字體? Java找不到字體時的行爲是什麼?它有抱怨嗎?它是否在某處登錄?立即訴諸使用系統默認值嗎? JVM的1.4/1.5/1.6版本的行爲有何不同?Java中的默認字體

有沒有其他人遇到過這個問題?我非常驚訝地發現,在UI中顯示的內容與我硬編碼不同,而且僅在某些系統上顯示。核心問題是我需要這種特殊情況下的等寬字體樣式,而Arial不是等寬字體。如果找不到某種字體,是否有某種方法可以指定回退?喜歡的東西:

如果字體,可以用「信使」 其他使用「等寬」

???

回答

1

你應該先檢查是否「信使」是GraphicsEnvironment.getAvailableFontFamilyNames()

的結果,我不知道在Java中的「if-unavailable-fallback-to」行爲的任何內置的機制之一。

+1

如果Courier在任何Windows系統上缺失,我會感到非常驚訝。 – 2009-08-05 16:46:56

0

根據這篇文章1微軟發佈的唯一的等寬TrueType字體是Courier New和Lucida Sans Typewriter。