[英]How to import a custom java.awt.Font from a Font family with multiple TTF files? (An example is included)
我知道您可以使用以下內容導入Java中的Font:
File file = new File(fontPath);
Font font = Font.createFont(Font.TRUETYPE_FONT, file);
// alternative:
// Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(file));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
然后你會使用例如font.deriveFont(Font.PLAIN, 20);
獲得所需的風格和大小。
例
但現在讓我們看一下Consolas
字體的例子,那里有四個TTF文件:
consola.ttf
(Plain) consolab.ttf
(Bold) consolai.ttf
(Italic) consolaz.ttf
(Bold&Italic) 當然你可以用上面consola.ttf
的方法導入consola.ttf
,然后使用font.deriveFont(Font.BOLD, 20);
是不一樣的使用consolab.ttf
因為普通的字體簡單地轉化為看起來像一個大膽的字體。
示例圖片
new Font("Consolas", Font.PLAIN, 20);
安裝了new Font("Consolas", Font.PLAIN, 20);
和new Font("Consolas", Font.BOLD, 20);
(作為旁注,如果您在系統上安裝了字體,那么如果使用deriveFont(Font.BOLD);
您也會獲得正確的粗體字體deriveFont(Font.BOLD);
): consola.ttf
,使用createFont
和派生的粗體字體導入(兩者的大小均為20,如上例所示): 好吧,安裝時沒問題,但我不希望別人有自定義字體,所以我想把TTF放到jar文件中,以便我可以在初始化期間通過getResourceAsStream(path)
導入它們。
有沒有辦法導入所有相關的TTF,然后只需調用new Font("Custom Font Name", fontStyle, fontSize);
所以它像安裝的字體一樣使用(圖1),它看起來不像派生的'假'粗體字(圖2)?
我不確定究竟是什么問題。 你得到了所有的TTF文件,你必須導入並注冊它們。 以下測試使用未安裝在我的系統上的DejaVu Sans字體。
Font f = Font.createFont(Font.TRUETYPE_FONT, new File("dvs.ttf"));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(f);
Font dvs = new Font("DejaVu Sans", Font.PLAIN, 20);
這是一個帶有plain( dvs
)和派生粗體 ( dvs.deriveFont(Font.BOLD)
)字體的圖像。
Font f = Font.createFont(Font.TRUETYPE_FONT, new File("dvs.ttf"));
Font fb = Font.createFont(Font.TRUETYPE_FONT, new File("dvsb.ttf"));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(f);
ge.registerFont(fb);
Font dvs = new Font("DejaVu Sans", Font.PLAIN, 20);
Font dvsb = new Font("DejaVu Sans", Font.BOLD, 20);
這是一個普通( dvs
)和真正粗體 ( dvsb
)字體的圖像。
您可以通過查看font2DHandle
來確認使用了正確的文件。
我還測試了斜體和粗體斜體 ,並且與Font#createFont(int, InputStream)
方法一樣有效。
上面的方法是有效的,因為字體是按其全名映射的(例如Arial,Arial Bold等),因此只要您的字體名稱正確,您就可以注冊一個系列的多個成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.