2012-04-22 72 views
1

我將ttf文件捆綁在jar文件中,並打算將它們用作渲染文本的物理字體。物理字體java?

我已經看到了在互聯網上的所有示例代碼如下:

InputStream is=Essai.class.getResourceAsStream(resourcePath); 
Font f=Font.createFont(fontFormat, is); 

我對這個代碼的兩個問題:

  • 首先,單個字體,說DejaVu擁有4種不同的ttf文件,每種風格1種(常規,粗體,斜體和粗斜體);是否足以從單個ttf(4箇中的任何一個)創建字體?

  • 其次,我沒有見過創建的字體後,關閉了流代碼,這使我想知道的是它故意的嗎?也許創建的字體(稍後將在本地GraphicsEnvironment中註冊)需要該流保持打開狀態?

    createFont()方法的javadoc說:「此方法不關閉InputStream。」

    所以我的第二個問題是,我應該在創建字體後關閉流,還是保持打開狀態?
+0

感謝您抽出時間回答。我不同意你的修改,我需要第二個問題留在列表的第二個元素下面,因爲......這是第二個問題:-) – 2012-04-22 16:30:02

回答

3
  1. 我不相信裝載一個變種就會加載它們。但是,那並不重要。 Java可以使用粗體+斜體的任意組合來創建Font變體。我只把標準Font放在Jar中。
  2. 關閉流。爲了簡潔起見,許多例子都是爲了避開角落(儘管這通常是一個壞主意)。
+0

好的沒問題,我會牢記在心:) 「我不相信加載一個變體會加載它們。」,這是真的,我剛剛測試過它。我還測試了由java創建的變體是否與ttf文件中定義的變體相同,並且發現它們沒有。從相應的ttfs加載的變體看起來更「性感」! :P。現在問題在於它們在GraphicsEnvironment中使用相同的名稱進行註冊,這意味着我只能在Font構造函數中正確使用它們中的一個。 但任何方式,我會找到一種方法來管理它。 再次感謝您的答案:)我會標記它解決 – 2012-04-22 17:30:52