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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为java程序添加字库

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

發(fā)現(xiàn)問題:

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


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

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

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

解決問題:

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

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


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方法創(chuàng)建Font對象

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

實(shí)例代碼:

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


總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。