📄 080.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="ekm1.0.css" type="text/css" rel="stylesheet">
</head>
<body>
<div id="Layer2"
style="z-index: 2; left: 0%; width: 100%; position: relative; top: 0%;">
<table cellspacing="0" cellpadding="0" width="100%" align="center"
bgcolor="#999999" border="0">
<tbody>
<tr class="mybgcolor">
<td height="20"><br>
</td>
</tr>
</tbody>
</table>
</div>
<div id="Layer1"
style="z-index: 8; left: 2%; width: 95%; position: relative; top: 5%;">
<table width="80%" border="0" align="center">
<tbody>
<tr>
<td class="tttable">
<p class="titlebar">Java中文支持</p>
<div>
<p>Java本身对国际字符集支持得很好。只要稍加注意,开发出来的程序就可以正确处理中文。这里谈到的中文支持问题其实只是中文显示支持的问题,也就是说需要配置中文字体以正确的显示中文。</p>
<p>在Java虚拟机实现时,GUI窗口的生成是通过调用操作系统API来完成的,跟具体操作系统相关。因此,窗口标题能否正确显示中文与操作系统对中文的支持相关。但窗口中的表现内容却只由Java虚拟机本身来完成,跟具体操作系统无关。我们必须配置中文字体才能使窗口中的中文内容正确显示。</p>
<p>在Java平台中,字体配置信息主要定义于font.properties系列文件中,对JDK来说存放于{JAVA_HOME}/jre/lib目录下,对JRE来说存放在{JAVA_HOME}/lib目录下。其中定义了五种平台无关的逻辑字体:Serif,
SansSerif, Monospaced,
Dialog和DialogInput,每一个JVM的实现,都必须包含这五种字体。另外,还定义了逻辑字体跟实际字体的映射,以及实际字体所在的位置。</p>
<p>为了支持不同的操作系统和区域设置,font.properties包含了附带不同后缀的多个版本。一般来说,Java按照以下顺序搜索字体属性文件:<br>
font.properties.<language>_<region>_<encoding>.<osVersion><br>
font.properties.<language>_<region>_<encoding><br>
font.properties.<language>_<region>.<osVersion><br>
font.properties.<language>_<region><br>
font.properties.<language>_<encoding>.<osVersion><br>
font.properties.<language>_<encoding><br>
font.properties.<language>_<osVersion><br>
font.properties.<language><br>
font.properties.<encoding>.<osVersion><br>
font.properties.<encoding><br>
font.properties.<osVersion><br>
font.properties<br>
程序包中已经打入了一个小工具com.huying.util.PrintLocale可以列出系统当前的区域设置,您可以用如下命令运行它:<br>
java -classpath jdiary.jar com.huying.util.PrintLocale<br>
根据输出结果决定到底应该配置哪一个配置文件。在RedHat 9.0且默认语言为简体中文时此命令得到的结果类似于:<br>
user.language: zh<br>
user.region: null<br>
file.encoding: GB18030<br>
os.version: 2.4.20-8<br>
所以我决定修改font.properties.zh文件。</p>
在我的系统中并没有font.properties.zh这个文件,我得从跟它最接近的文件中拷一份。这里最接近的文件似乎是font.properties.zh.Turbo,所以我们就拷贝它。font.properties.zh.Turbo是Sun专门为Turbo
Linux定制一个font.properties。看来Sun认为Turbo
Linux是最有影响的Linux中文发行版,值得专门给它定制一个font.properties。
<p>好,接下来我们要修改这个配置文件。首先请检查 appendedfontpath=xxxxx
这个项目,这一项定义了JVM到哪个目录去找追加的字体。不同的发行版字体文件所在的位置不同,所以系统默认值常常是不对的,需要自己修改。对RedHat字体文件目录是/usr/share/fonts,其中中文字体目录是/usr/share/fonts/zh_CN/TrueType。所以我们把这一项的值指定为/usr/share/fonts/zh_CN/TrueType。对其它发行版,请指定它们的字体目录。如果你不知道它们的字体目录在哪里,可以使用如下的查找命令:<br>
find /usr -name *.ttf<br>
根据输出结果很快就可以知道系统把中文字体放在什么地方。关于find命令的详细解释,请参阅Linux文档,方法是在命令行下输入:man find
。</p>
<p>配置文件的主要部分用来指定逻辑字体跟实际物理字体之间的映射。由于各个不同的发行版安装的中文字体不同,系统默认值也常常是不对的,也需要自己修改。在这里为了简单起见,我只想把五种逻辑字体全部定义为宋体。但是怎么才能知道宋体的字体描述呢?请打开中文字体所在目录下的fonts.dir文件,这个文件定义了该目录下所有字体的字体描述。在这个例子中我发现宋体的字体描述是这样的:<br>
gbsn00lp.ttf -Arphic Technology Co.-AR PL SungtiL
GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0<br>
所以我根据它来修改配置文件,把凡是引用到中文字体的地方都换成如上的字体描述。<br>
</p>
<p>改完之后存盘。再次运行Java GUI程序就会发现中文已能正常显示。</p>
<p>最后附上我修改之后配置文件供您参考:</p>
<p># @(#)font.properties.zh.Turbo.linux 1.4 02/06/10<br>
#<br>
# Copyright 2002 Sun Microsystems, Inc. All rights reserved.<br>
#<br>
<br>
# Component Font Mappings<br>
#<br>
serif.0=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1<br>
serif.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1<br>
serif.italic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
serif.bold.0=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1<br>
serif.bold.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
serif.bolditalic.0=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1<br>
serif.bolditalic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
sansserif.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
sansserif.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
sansserif.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
sansserif.italic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
sansserif.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
sansserif.bold.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
sansserif.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
sansserif.bolditalic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
monospaced.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1<br>
monospaced.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
monospaced.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1<br>
monospaced.italic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
monospaced.bold.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1<br>
monospaced.bold.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
monospaced.bolditalic.0=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1<br>
monospaced.bolditalic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
dialog.0=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
dialog.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
dialog.italic.0=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
dialog.italic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
dialog.bold.0=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
dialog.bold.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
dialog.bolditalic.0=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1<br>
dialog.bolditalic.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
dialoginput.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1<br>
dialoginput.1=-Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0<br>
<br>
dialoginput.italic.0=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -