日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为java程序添加字库

發布時間:2024/3/24 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为java程序添加字库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

發現問題:

寫了一個小Web程序,程序很簡單,從網上獲取天氣數據,并將這些數據繪制在圖片中發到新浪微博上。在本地Tomcat上測試,不錯,完美輸出想要的效果如下圖:


但是把這個程序放在新浪云服務器上的時候,程序就抽風了,輸出的數據信息都為一個個小方格子。第一反應是悲劇,亂碼了。然后各種尋找解決亂碼的辦法啊,查源頭是不是獲取天氣數據的時候就已經亂碼了,代碼的編碼格式。折騰半天還是不行。

最終在新浪云論壇中找到了答案,由于新浪云服務器上沒有帶相應的字庫,而我在繪制圖片的時候使用Graphics的setFont(new Font("宋體", Font.PLAIN, 22));使用drawString()繪制的字符串為宋體,而服務器中無法找到該字體庫(新浪云服務中無中文字體庫),可以使用以下代碼查看當前計算機支持的字體庫:

//獲取系統中可用的字體的名字 GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] fontName = e.getAvailableFontFamilyNames(); for(int i = 0; i<fontName.length ; i++) { System.out.println(fontName[i]); }

解決問題:

找到原因就好辦,既然沒有字體庫那就使用咱們自己的字體庫就行了。既然沒有字體庫,那就找一個字體庫吧,網上一搜一大堆,不愿意上網找直接在本地計算機中也能找到,在C:\Windows\Fonts路徑下面也有一大堆,找一個支持中文的字體庫。

接下來就需要將這個字體庫放入項目中,這里我將FZHTJT.TTF(方正黑體簡體)字體庫放在了源碼下weibo4j.examples文件夾下。然后使用代碼加載字體庫就得到了Font的實例,代碼很簡單:


public Font getFont(float size) {String pathString = RandImgnumUtil.class.getClassLoader().getResource("weibo4j/examples/FZHTJT.TTF").getFile();try {Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, new File(pathString));dynamicFont = dynamicFont.deriveFont(size);return dynamicFont;} catch (FontFormatException ex) {Logger.getLogger(RandImgnumUtil.class.getName()).log(Level.SEVERE, null, ex);} catch (IOException ex) {Logger.getLogger(RandImgnumUtil.class.getName()).log(Level.SEVERE, null, ex);}return null; }重要的幾行代碼說明:

1、String pathString = RandImgnumUtil.class.getClassLoader().getResource("weibo4j/examples/FZHTJT.TTF").getFile(); //獲取到字體庫路徑

2、Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, new File(pathString));//通過Font的createFont方法創建Font對象

3、dynamicFont = dynamicFont.deriveFont(size);//設置字體的大小
這樣就完成了自定義字體庫的加載,在程序中使用getFont方法就能夠隨意使用自己的字體庫了。

實例代碼:

Graphics g = image.getGraphics(); g.setColor(Color.WHITE); g.setFont(this.getFont(30.0f)); g.drawString("晴", 50, 180);


總結

以上是生活随笔為你收集整理的为java程序添加字库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。