最初以为是操作系统的字体显示问题,但SUSE9.1本身是包含中文字体的,很容易让我们想到了JRE。
文章标题为《SuSE 9.1 平台 ArcIMS中文显示解决方案》,ArcIMS运行于JRE环境之上,因此问题的根本在于SuSE9.1平台下JRE运行时环境的中文显示,通过文中介绍的方案可以解决SuSE9.1操作系统中运行于JRE之上的所有应用程序的中文显示问题,如ArcIMSAuthor打开SDE空间数据库时以中文命名的表无法显示,数据属性字段中的中文显示为乱码等等。
操作系统:SuSE 9.1
Sun JRE 运行时环境:1.5.0_06
问题:
ArcIMS发布地图中文显示为乱码,包括Author中添加数据时,名称为中文的表无法显示或显示为乱码,Author显示的地图数据,如属性字段包含中文则显示为乱码,在客户端浏览器浏览地图时,所有地图中的中文信息无法正确显示。
问题原因:
ArcIMS地图服务定制、管理、发布软件都是基于jre环境运行的,当jre运行时无法解析中文时,在Author等软件中看到的中文字体就是乱码,或是无法显示,因此需要配置jre的中文显示。
解决方法:
首先,必须先把字体文件(这里用宋体simsun.ttf测试,simsun为微软所有,建议使用开源中文字体)拷贝到JRE的字体目录JavaHome/lib/fonts下,然后编辑字体目录下的文件fonts.dir,把第一行的数字加1(一般情况下初始为48,改为49),然后在最后加一行,写上:
simsun.ttf -SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0,然后保存。
在JavaHome/lib中有许多字体相关的配置文件(JavaHome为JRE的根目录),找到fontconfig.SuSE.properties.src文件并进行修改:
# Version
version=1
# Component Font Mappings
serif.plain.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
serif.bold.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
serif.italic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
serif.bolditalic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
sansserif.plain.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
sansserif.bold.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
sansserif.italic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
sansserif.bolditalic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
monospaced.plain.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
monospaced.bold.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
monospaced.italic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
monospaced.bolditalic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialog.plain.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialog.bold.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialog.italic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialog.bolditalic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialoginput.plain.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialoginput.bold.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialoginput.italic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
dialoginput.bolditalic.zh-1=-SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
然后sequence.allfonts设为zh-1,按照上面所述的文件名格式保存,启动Java程序,即可看到中文显示界面。