天堂的另一角

天堂魷魚的原创技术博客。所謂兼容並包,無奇不有。

 

Sun JRE 1.5.0版的中文字体设置

旧随笔,写于2004年10月29日。


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的中文界面是不是出来了?

参考资料


Sun公司对JRE1.5.0版的中文字体设置的官方说明:
http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html

posted on 2006-03-19 23:02 Addone 阅读(1754) 评论(3)  编辑 收藏 引用 所属分类: Linux软件介绍

评论

# re: Sun JRE 1.5.0版的中文字体设置 2006-04-23 00:56 litchi

谢谢
解决了我的netbeans5.0中文版乱码的问题

  回复  更多评论   

# re: Sun JRE 1.5.0版的中文字体设置 2006-06-10 15:55 Addone

最简单的方法是:
将字体文件(例如simsun.ttf)直接拷贝到JavaHome/lib/fonts/fallback/目录下,就直接可以正常显示中文了。  回复  更多评论   

# re: Sun JRE 1.5.0版的中文字体设置 2006-07-08 21:56 Addone

@Addone
补充一下,以上给出的简单方法可以让Java程序正确显示中文,但是Applet还是乱码的。  回复  更多评论   

只有注册用户登录后才能发表评论。

导航

统计

公告


Addone,又名:天堂鱿鱼。
这里是我的技术博客。其他文章
作为“杂感”分类存档。
我的新思想主要发往新站:
幻想园
幻想园

欢迎光临

Linux注册用户

feedsky
抓虾
google reader
bloglines

联系方式




My status

常用链接

留言簿(11)

随笔分类(99)

随笔档案(69)

相册

友情链接

推荐站点

搜索

积分与排名

最新评论

阅读排行榜