2009年4月14日星期二

Linux下java1.5+中文字体的设置方法

简单的方法:
1 .建立目录:$JAVA_HOME/jre/lib/fonts/fallback;
2. cp中文字体到刚才建立的目录中,或者在这个目录中建立到中文字体的连接;
3. 大功告成。
如仍有问题,export JAVA_FONTS=$JAVA_HOME/jre/lib/fonts即可。

复杂的方法(原文地址)
Sun JRE 1.5.0版的中文字体设置
2005年 3月11日
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的版本号。
对于Slackware,你完全可以用Solaris的方案,也就是用:
JavaHome/lib/fontconfig.properties
做为自己的字体配置文件。

在这些配置文件中,仅.properties文件是文本文件。其格式跟JRE1.4.2版的不同。文件分为几段,并在每段开始时标明。
我们需要关注的仅有两段:Component Font Mappings和Search Sequences。
前者指定字体,后者指定要使用的properties的搜索顺序。
知道了这些,配置起来就简单了。

首先,设置字体文件,一般来说,Slackware 系统的字体配置文件在
/etc/fonts/fonts.conf 里面设置,我比较习惯将额外的中文字体放
在 /usr/share/fonts下面,为了节约空间,在JRE的字体目录
JavaHome/lib/fonts下 建立一个符号连接,指向我用的中文字体,
(比如,宋体Simsun.ttf):

ln -s /usr/share/fonts/simsun.ttf simsun.ttf

然后运行字体库生成命令: mkfontscale,生成需要的字体库文件
fonts.dir:

JavaHome/lib/fonts# mkfontscale
JavaHome/lib/fonts# mv fonts.scale fonts.dir

然后,转到目录JavaHome/lib下,随便找一个.properties.src文件,用文本编辑器打开,并编辑如下:

# Copyright 2003 Sun Microsystems, Inc. All rights reserved.
#

# Version

version=1

# Component Font Mappings

serif.plain.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
serif.bold.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
serif.italic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
serif.bolditalic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
sansserif.plain.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
sansserif.bold.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
sansserif.italic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
sansserif.bolditalic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
monospaced.plain.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
monospaced.bold.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
monospaced.italic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
monospaced.bolditalic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialog.plain.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialog.bold.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialog.italic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialog.bolditalic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialoginput.plain.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialoginput.bold.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialoginput.italic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialoginput.bolditalic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
dialoginput.bolditalic.zh-1=-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0

# Search Sequences

sequence.allfonts=zh-1

# Exclusion Ranges

# Font File Names

# AWT X11 font paths

上面这个文件中最重要的是字体名,也就是:-misc-simsun-medium-r-normal–0-0-0-0-p-0-gb18030.2000-0
这个东西,你可以根据fonts.dir里面的内容,选取一个合适的中文字体
使用。

然后按照上面所述的文件名格式保存在这个目录下。如Redhat系统的就保存为fontconfig.RedHat.properties, WindowsXP的就保存为fontconfig.XP.properties,不知道自己系统是什么的,比如,
Slackware,就直接保存为 fontconfig.properties以此类推。

现在,启动Java程序看看,漂亮的JRE1.5的中文界面是不是出来了?

参考资料:

原作者资料:
http://addone.blogchina.com/blog/article_17203.216643.html
本机(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

没有评论:

发表评论