Sun JRE 1.5.0版的中文字体设置(转载) Sun公司的JRE(JAVA运行库)1.5.0版采用的字体设置方案跟1.4.2版的相去甚远。如果设置不当,Java程序中的中文会表现为方格。 本文给出了一般性的字体设置方法,并且在最后给出了本机测试通过的字体配置文件以供下载。
首先介绍一下其字体配置文件的加载方案。其加载顺序为(JavaHome指JRE的根目录,下同): JavaHome/lib/fontconfig.OS.Version.properties JavaHome/lib/fontconfig.OS.Version.bfc JavaHome/lib/fontconfig.OS.properties JavaHome/lib/fontconfig.OS.bfc JavaHome/lib/fontconfig.Version.properties JavaHome/lib/fontconfig.Version.bfc JavaHome/lib/fontconfig.properties JavaHome/lib/fontconfig.bfc 其中,OS字段可以是: Windows: "98", "2000", "Me", "XP", "2003"。 Solaris:空。 Linux: "Sun", "RedHat", "Turbo", "SuSE"。 而Version字段指该OS的版本号。
在这些配置文件中,仅.properties文件是文本文件。其格式跟JRE1.4.2版的不同。文件分为几段,并在每段开始时标明。 我们需要关注的仅有两段:Component Font Mappings和Search Sequences。 前者指定字体,后者指定要使用的properties的搜索顺序。 知道了这些,配置起来就简单了。
首先,必须先把字体文件(这里用宋体Simsun.ttf)拷贝到JRE的字体目录JavaHome/lib/fonts下,然后编辑字体目录下的文件fonts.dir,把第一行的数字加1,然后在最后加一行,写上: simsun.ttf -SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 然后保存。
然后,转到目录JavaHome/lib下,随便找一个.properties.src文件,用文本编辑器打开,并编辑如下:
# @(#)linux.fontconfig.SuSE.properties 1.2 03/10/17 # # Copyright 2003 Sun Microsystems, Inc. All rights reserved. #
# 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
# Search Sequences
sequence.allfonts=zh-1
# Exclusion Ranges
# Font File Names
然后按照上面所述的文件名格式保存在这个目录下。如Redhat系统的就保存为fontconfig.RedHat.properties, WindowsXP的就保存为fontconfig.XP.properties,以此类推。
现在,启动Java程序看看,漂亮的JRE1.5的中文界面是不是出来了?
参考资料:
本机(SuSE Linux 9.1 personal+JDK-1.5.0)测试通过的fonts.dir及fontconfig.SuSE.properties文件(.tar.gz格式): http://blog.blogchina.com/upload/2004-10-29/20041029103119811400.gz
Sun公司对JRE1.5.0版的中文字体设置的官方说明: http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html
【补充说明】 本人在自己的操作系统下没有发现simsun.ttf, 所以用的是simfang.ttf文件, 对应的font.dir中, 也是使用simfang来替换的,在linux redhat10/jdk1.5.0_03测试通过, 一下是我的项目中使用这个jdk生成的图片: 
|