以CentOS為例嘁圈,字體文件在/usr/share/fonts目錄
1.網(wǎng)上下載字體庫屿脐,我用的ttf文件寨躁,其它沒有試
2.復制ttf文件到/usr/share/fonts目錄下故爵,也可新建文件夾以區(qū)分
3.建立字體索引吧寺,更新字體緩存
cd /usr/share/fonts
mkfontscale
mkfontdir
fc-cache -fv
4.查看已安裝字體列表
fc-list
5.代碼中遇到的問題
我在做一個在圖片上添加水印的功能時刁俭,win環(huán)境沒問題橄仍,上linux環(huán)境出現(xiàn)找不到字體,按照上述問題安裝字體以后牍戚,java代碼引入字體一直有問題侮繁,但是不會報錯,最終發(fā)現(xiàn)是字體名字不對如孝。
我安裝的字體文件:
AdobeHeiti_S60.cn.ttf
fc-list展示的已安裝字體列表中宪哩,該字體的信息:
Adobe Heiti Std,Adobe 黑體 Std,Adobe Heiti Std R,Adobe 黑體 Std R:style=R,Regular
我在代碼中使用引入字體使用:
Font font = new Font("Adobe Heiti Std", Font.BOLD, 55);
但是圖片上依然無法打印中文,后來考慮是不是字體的名字有問題第晰,所以在代碼中引用該字體后锁孟,打印該字體的名字:
Font font = Font.createFont(Font.TRUETYPE_FONT, new File("h:\\AdobeHeiti_S60.cn.ttf"));
System.out.println(font.getName());
這樣,打印出來的字體名字竟然是:
Adobe 黑體 Std
然后茁瘦,把代碼改為:
Font font = new Font("Adobe 黑體 Std", Font.BOLD, 55);
具體原因不知道罗岖,只能建議大家如果在linux環(huán)境下使用自己安裝的字體時,先打印一下字體的名字腹躁,再在代碼中引入桑包。另外如果有大哥知道我上面問題的具體原因,望不吝賜教纺非,拜謝