以CentOS为例,字体文件在/usr/share/fonts目录
1.网上下载字体库,我用的ttf文件,其它没有试
2.复制ttf文件到/usr/share/fonts目录下,也可新建文件夹以区分
3.建立字体索引,更新字体缓存
cd /usr/share/fonts
mkfontscale
mkfontdir
fc-cache -fv
4.查看已安装字体列表
fc-list
5.代码中遇到的问题
我在做一个在图片上添加水印的功能时,win环境没问题,上linux环境出现找不到字体,按照上述问题安装字体以后,java代码引入字体一直有问题,但是不会报错,最终发现是字体名字不对。
我安装的字体文件:
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环境下使用自己安装的字体时,先打印一下字体的名字,再在代码中引入。另外如果有大哥知道我上面问题的具体原因,望不吝赐教,拜谢
网友评论