有需求生成一個二維碼,並且有一段文本說明,但是使用awt.font來生成中文時,一直存在亂碼的問題。網上的解決辦法有幾種,但是在centos上親測有用的就是如下的方法。
Java代碼如下:new java.awt.Font("宋體",Font.BOLD,13);
1,從windows上拷貝simsun.ttc宋體文件(有的說改后綴為ttf,沒有試),拷貝到/usr/share/fonts下,可以新建一個文件夾,比如我創建的是chinese,即路徑為/user/share/fonts/chinese
2,上傳simsun.ttc到/usr/share/fonts/chinese下,執行chmod 777 simsun.ttc (修改執行權限)
3,在/usr/share/fonts/chinese路徑下執行fc-cache -fv,安裝字體到系統
4,執行fc-list能夠看到已經安裝過的字體,能夠看到安裝的字體。
5,重啟tomcat即可。
之前的思路一直是想使用java.awt.Font的public static Font createFont(int fontFormat,File fontFile) 方法來做,即傳入一個ttf文件(把simsun.ttc改名為simsun.ttf,這個地方一定要求是ttf后綴不然會報錯),因為這樣畢竟是api代碼層級的實現,不用改動服務器環境,但是一直不成功
1、先從你本機 C:\Windows\Fonts 拷貝或者網絡上下載你想要安裝的字體文件(*.ttf文件)到 /usr/share/fonts/chinese/TrueType 目錄下(如果系統中沒有此目錄,則自行mkdir創建,亦可重命名為自己喜歡的文件夾名)
2、修改字體文件的權限,使root用戶以外的用戶也可以使用
# cd /usr/share/fonts/chinese/TrueType
# chmod 755 *.ttf
3、建立字體緩存
# mkfontscale (如果提示 mkfontscale: command not found,需自行安裝 # yum install mkfontscale )
# mkfontdir
# fc-cache -fv (如果提示 fc-cache: command not found,則需要安裝# yum install fontconfig )
4、重啟計算機
# reboot
