在 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 服务器,字体能正常展示。