Java - Linux環境下圖片上drawString中文字體後不顯示. ( 但英文數字可以... )

1.問題:

      window環境下測試都沒問題, 代碼更新到linux服務器上, 發現生成圖片後中文字體不顯示?

 

2.分析: ( 相關代碼如下 )

      跟linux系統有關係? 最後查找發現是Linux服務器上沒有相應字體類型導致的. 因爲圖片是在linux下的系統裏生成的,用到java.awt.Font這個類。實例化的時候它會到jre裏去找字體,如果找不到對應字體,就會顯示不出來。

// 在圖片上寫文字!
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, 0, 0, null);
// 字體、字型、字號大小. 
g.setFont(new Font("仿宋", Font.PLAIN, fontSize));
// 指定位置畫文字
g.drawString("啦啦", 100, 100);
g.dispose();

 

3.解決如下:

前提: 先在本地Windows下找到字體文件:
在這裏插入圖片描述

解決一、在jre中添加相應的字體。( 沒有試 )

1.找到Java運行環境安裝目錄( /user/…/jre/lib/fonts ) , 放到jre下面.

2.創建一個文件夾. ( mkdir winFonts )

3.重啓tomcat服務器. ( 重點 - 不重啓不生效. )
 

解決二、在Linux系統中添加字體文件。 ( 親測有效 )

1.在 該目錄下( /usr/share/fonts ) 創建文件夾 winFonts.(文件夾名稱隨意)

2.複製需要添加的字體文件(參考3.1)到新創建的文件夾下.

3.刷新字體:fc-cache

4.查看字體:fc-list

5.重啓tomcat服務器. ( 重點 - 不重啓不生效. )
在這裏插入圖片描述

常見問題?

1.若fc-list沒看到添加的字體,有可能是此字體受版權保護無法添加進去,建議換成免費字體。
2.添加字體後不會馬上生效,需要重啓服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章