在linux字体下的显示问题及几种解决办法
将润乾报表部署到linux系统上时,往往在报表展现时会出现一些显示问题,例如:报表没有自动换行、统计图或表头斜线上的中文变成小方框、报表导出pdf后中文出问题等。
出现此类问题主要为操作系统中缺少中文字体所致,由于linux系统上没有对应的中文字体,将会导致导出pdf或参与图形计算时中文乱码。解决办法主要为系统增加相应的字体。增加字体有多种方式,下面以宋体为例介绍几种比较常见的操作:
一、将windows系统下的字体拷贝到linux下
将WINDOWS下的C:\WINDOWS\Fonts下的SIMSUN.TTC拷贝到linux下的/usr/share/fonts/TrueType/路径下,重启linux,让系统加载该字体即可,这样就能解决绝大多数字体问题。
注意:这里放置完字体后要重启系统,让系统加载字体,否则设置无效。也可以不重启系统,通过命令强制加载字体。在终端运行命令:
sudomkfontscale
sudomkfontdir
sudo fc-cache –fv
强制更新字体缓存,这样也能够是新加入的字体生效。
二、更改jre中字体
上述方法为解决操作系统字体,由于报表是通过java计算,所以也可以更改jre中的字体,从而也能解决该问题。
找到java安装目录下的/jre/lib/fonts目录,在下新建fallback文件夹,注意此处的目录一定要为当前web服务器使用的jdk目录,将windows下的字体文件拷贝到fallback文件夹下,重启web服务器即可解决该问题。
注意:如果系统中只需要宋体,则只将宋体拷贝到该目录下,否则有可能会造成报表展现时中文不乱码,但是字体也并不是想要的宋体。
如果系统中需要多种字体,则还需要更改jre的字体配置文件,该文件位于jdk安装目录java_home/jre/lib目录下,名称为font.properties.zh_CN.Redhat(不同操作系统该配置文件名称可能不同),在font.properties.zh_CN.Redhat中找到
dialog.1=-misc-zysong18030-medium-r-normal *-%d-*-*-c-*-iso10646-1
把zysong18030改成我们想要的宋体simsun
filename.-misc-zysong18030-medium-r-normal *-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_CN/TrueType/zysong.ttf
把zysong18030改为simsun;zysong.ttf改为simsun.ttc
然后重启web服务器,字体能正常展示。