[原创]彻底解决linux下java中文问题
时间:2005-11-09
来源:互联网
loveboylxy@bmy原创
可能很多朋友都遇到过linux下java中文问题.常见情况就是图形界面中的中文都显示为方框,比如安装DB2数据库,
WebSphere等软件.这是一个很头痛的问题.我在网上搜索了大量的关于解决java中文问题的文章,结合自己摸索,实践,
试了几十次,基本解决了linux下java中文问题,包括jdk1.4和1.5的.现在总结出来,供大家参考.
操作系统: Mandriva 2006 limited Editon
JDk版本 : jdk1.4,jdk1.5
jdk1.5的解决办法
先看下面这篇文章,这篇文章在网上很容易搜索到:
================================================================================================================
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的中文界面是不是出来了?
================================================================================================================
需要说明几点:
1,文中所有JavaHome/lib/*都应该是JavaHome/jre/lib/*.比如我的jdk安装目录jdk1.5.0_03
刚它提到的那些文件或目录都应该是jdk1.5.0_03/jre/lib/fontconfig.bfc,而不是jdk1.5.0_03/lib/fontconfig.bfc
2.
文章前面那段说明字体文件加载顺序, 其实可以不必理会.它说到的: Linux: "Sun", "RedHat", "Turbo", "SuSE",
如果不是这几个版本的linux呢?比如我的mandriva linux,如果改成
JavaHome/lib/fontconfig.mandriva .properties
或
JavaHome/lib/fontconfig.mandriva .bfc
好像不行.所以我的做法是这样的:
在JavaHome/lib目录下新建一个bak目录,把所有fontconfig.*文件全部移到bak目录,只留一个fontconfig.properties文件.
因为它按上文中那个顺序搜索,其它文件都没有,那就一定只有加载JavaHome/jre/lib/fontconfig.properties这个文件了.
所有的修改都是针对这个文件.
3,简单地说,修改过程如下
复制widnows下的simsun.ttf到Java_Home/jre/lib/fonts/目录下,用ln命令建一个链接也可以.如果windows下是simsun.ttc,
可以直接改成 simsun.ttf .
把其它fontconfig.*文件移到bak目录备份,修改Java_Home/jre/lib/fontconfig.properties文件,内容改成上文中的配置文件
(直接复制那段文字过去就行).
对于jdk1.4的解决
虽然我喜欢用最新的jdk1.5,但很多软件还在使用jdk1.4,如IBM DB2 V8.2.对1.4的解决方案类似.注意以下几点区别:
1.把Java_Home/jre/lib/font.properties.*文件移到bak目录,只留下font.properties.zh_CN.Redhat,我试了N次,
发现1.4就是加载这个字体配置文件.其它版本的linux,如果保留这个文件不行,可以试一下保留成其它文件名.
2.在Java_home/jre/lib/fonts/fonts.dir把第一行的数字加1,最后加一行,
simsun.ttf -misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
注意这一行与jdk1.5的不同.
3.字体配置文件与1.5也不同,应修改成如下
# @(#)font.properties.zh.Turbo.linux 1.4 02/06/10
#
# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
#
# Component Font Mappings
#
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
serif.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
serif.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
serif.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
serif.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
# Missing Glyph Character
#
default.char=274f
# Component Font Character Encodings
#
fontcharset.serif.0=sun.io.CharToByteISO8859_1
fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK
# Exclusion Ranges
#
# XFontSet Information
#
fontset.serif.plain=\
-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.serif.italic=\
-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.serif.bold=\
-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.serif.bolditalic=\
-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.bolditalic=\
-b&h-lucida-bold-i-normal-snas-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-,1\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.bolditalic=\
-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.default=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
appendedfontpath=/mnt/win_c/winnt/Fonts/
现在可以试一下,中文是不是出来了.
对其它中文问题的解决:
比如安装DB2过程中,安装的界面中文就是方框.如果你是硬盘安装,你会发现DB2安装源文件的目录下有一个jre目录,
安装过程中使用的就是这个jre.如果你已经把其它jdk1.4的问题解决了.就可以把这个jre文件夹删了,
把你已经解决中文问题的那个jre目录复制到这个目录.DB2安装好以后,可以修改DB2安装目录下的jdk,因为DB2等软件都是使用
自带的ibm-jdk1.4.1,不过跟sun的jdk,区别不大,同样修改.
Jbuilder界面的中文问题也可以类似的解决,可以修改jbuilder安装目录下的jdk1.4目录中的配置文件.
注:本文只是技术上的探讨,对simsun.ttf字体的版权问题不予考虑.解决过程中,发现问题,欢迎和我讨论.
可能很多朋友都遇到过linux下java中文问题.常见情况就是图形界面中的中文都显示为方框,比如安装DB2数据库,
WebSphere等软件.这是一个很头痛的问题.我在网上搜索了大量的关于解决java中文问题的文章,结合自己摸索,实践,
试了几十次,基本解决了linux下java中文问题,包括jdk1.4和1.5的.现在总结出来,供大家参考.
操作系统: Mandriva 2006 limited Editon
JDk版本 : jdk1.4,jdk1.5
jdk1.5的解决办法
先看下面这篇文章,这篇文章在网上很容易搜索到:
================================================================================================================
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的中文界面是不是出来了?
================================================================================================================
需要说明几点:
1,文中所有JavaHome/lib/*都应该是JavaHome/jre/lib/*.比如我的jdk安装目录jdk1.5.0_03
刚它提到的那些文件或目录都应该是jdk1.5.0_03/jre/lib/fontconfig.bfc,而不是jdk1.5.0_03/lib/fontconfig.bfc
2.
文章前面那段说明字体文件加载顺序, 其实可以不必理会.它说到的: Linux: "Sun", "RedHat", "Turbo", "SuSE",
如果不是这几个版本的linux呢?比如我的mandriva linux,如果改成
JavaHome/lib/fontconfig.mandriva .properties
或
JavaHome/lib/fontconfig.mandriva .bfc
好像不行.所以我的做法是这样的:
在JavaHome/lib目录下新建一个bak目录,把所有fontconfig.*文件全部移到bak目录,只留一个fontconfig.properties文件.
因为它按上文中那个顺序搜索,其它文件都没有,那就一定只有加载JavaHome/jre/lib/fontconfig.properties这个文件了.
所有的修改都是针对这个文件.
3,简单地说,修改过程如下
复制widnows下的simsun.ttf到Java_Home/jre/lib/fonts/目录下,用ln命令建一个链接也可以.如果windows下是simsun.ttc,
可以直接改成 simsun.ttf .
把其它fontconfig.*文件移到bak目录备份,修改Java_Home/jre/lib/fontconfig.properties文件,内容改成上文中的配置文件
(直接复制那段文字过去就行).
对于jdk1.4的解决
虽然我喜欢用最新的jdk1.5,但很多软件还在使用jdk1.4,如IBM DB2 V8.2.对1.4的解决方案类似.注意以下几点区别:
1.把Java_Home/jre/lib/font.properties.*文件移到bak目录,只留下font.properties.zh_CN.Redhat,我试了N次,
发现1.4就是加载这个字体配置文件.其它版本的linux,如果保留这个文件不行,可以试一下保留成其它文件名.
2.在Java_home/jre/lib/fonts/fonts.dir把第一行的数字加1,最后加一行,
simsun.ttf -misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
注意这一行与jdk1.5的不同.
3.字体配置文件与1.5也不同,应修改成如下
# @(#)font.properties.zh.Turbo.linux 1.4 02/06/10
#
# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
#
# Component Font Mappings
#
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
serif.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
serif.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
serif.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
serif.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
sansserif.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
monospaced.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
dialog.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.italic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bold.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
dialoginput.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
dialoginput.bolditalic.1=-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
# Missing Glyph Character
#
default.char=274f
# Component Font Character Encodings
#
fontcharset.serif.0=sun.io.CharToByteISO8859_1
fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK
fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK
fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK
fontcharset.dialog.0=sun.io.CharToByteISO8859_1
fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK
fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK
# Exclusion Ranges
#
# XFontSet Information
#
fontset.serif.plain=\
-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.serif.italic=\
-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.serif.bold=\
-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.serif.bolditalic=\
-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.sansserif.bolditalic=\
-b&h-lucida-bold-i-normal-snas-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-,1\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.monospaced.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.italic=\
-b&h-lucida-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.bold=\
-b&h-lucida-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.bolditalic=\
-b&h-lucida-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialog.plain=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.italic=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.bold=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.bolditalic=\
-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.dialoginput.plain=\
-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
fontset.default=\
-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1,\
-misc-SimSun-medium-r-normal--*-%d-*-*-c-*-iso10646-1
appendedfontpath=/mnt/win_c/winnt/Fonts/
现在可以试一下,中文是不是出来了.
对其它中文问题的解决:
比如安装DB2过程中,安装的界面中文就是方框.如果你是硬盘安装,你会发现DB2安装源文件的目录下有一个jre目录,
安装过程中使用的就是这个jre.如果你已经把其它jdk1.4的问题解决了.就可以把这个jre文件夹删了,
把你已经解决中文问题的那个jre目录复制到这个目录.DB2安装好以后,可以修改DB2安装目录下的jdk,因为DB2等软件都是使用
自带的ibm-jdk1.4.1,不过跟sun的jdk,区别不大,同样修改.
Jbuilder界面的中文问题也可以类似的解决,可以修改jbuilder安装目录下的jdk1.4目录中的配置文件.
注:本文只是技术上的探讨,对simsun.ttf字体的版权问题不予考虑.解决过程中,发现问题,欢迎和我讨论.
作者: loveboylxy 发布时间: 2005-11-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28