润乾报表在 linux 和 windows 中字体显示不一致解决办法

 

问题描述

客户经常遇到这样一个问题:报表字体为宋体,在 windows 中展现正常,能达到需要的效果,但是把应用放到 linux 中,同样的报表展示的字体样式就跟 windows 不一样,未达到预期效果。最后检查客户 linux 的字体发现是客户 linux 中的宋体版本跟 windows 中的不一样造成的,所以造成展现的报表里面字的样式不一致。

解决方法

同步 windows 的字体到 linux 系统中,使二者的字体版本和样式一样,这样展现出来的字体样式就没有区别了。

实现步骤

给 linux 安装字体的步骤如下(以 debain 版本的 linux 为例):

1,拷贝字体到系统字体目录下,比如 /usr/share/fonts/truetype/hahafonts(hahafonts 请自行建立)。

到 win 下找到你需要的字体,比如拷贝了 simhei.ttf simyou.ttf tahoma.ttf verdana.ttf simsun.ttc tahomabd.ttf verdanab.ttf 等 7 款字体。当然,如果想要简单可以只拷 simsun,tahoma 就行了。

cp .tt /usr/share/fonts/truetype/hahafonts/
cd /usr/share/fonts/truetype/hahafonts/

2,生成字体的 fonts.dir+fonts.scale 文件:

Debian 下:

apt-get install ttmkfdir
ttmkfdir && cp fonts.scale fonts.dir

3,把字体路径加到 xfree86 文件中,如 /etc/X11/XF86Config-4:

添加内容如下:

FontPath “/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType”
FontPath “/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID”
FontPath “/usr/share/fonts/truetype/gbk”
FontPath “/usr/share/fonts/truetype/hahafonts”

注:/usr/share/fonts/truetype/gbk 中为其他点阵字体,可以不加。

4,执行 fc-cache -v -f:

注:fc-cache — build font information cache files

5,firefly 补丁:

http://hahaghost.512j.com/linuxbak/fonts.conf 替换 /etc/fonts/ 里的 fonts.conf 文件,然后加上源:

把下面 2 行加到 /etc/apt/sources.list 里
deb http://debian.okey.net/debian-uo/ sid firefly java marillat rareware misc
deb http://debian.okey.net/debian-fonts/ ./

然后执行 apt-get update&&apt-get upgrade 就可以了。

注:执行 apt-get upgrade 后,自动升级的有:libfontconfig,libxft,fontconfig 都是修改的过的补丁。

6,重启之后就可以看到适合的字体了:

然后 xfsfonts | grep gbk,查找您需要的字体,添加到 gtkrc 或者 gtkrc.zh_CN 中。

其中的 gbk 是个例子,可以换成自己需要的,比如 simsun 等。

这样,报表在 Linux 和 Windows 中字体显示就一致了。