报表知识库
我要提问

润乾报表在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中字体显示就一致了。