英文界面下的GBK编码中文支持的设置及美化

系统字体配置、中文显示和输入法问题
回复
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

英文界面下的GBK编码中文支持的设置及美化

#1

帖子 sammeme » 2006-04-28 23:14

因为汉化还不完善的缘故,或这个人喜好,不少人还是喜欢使用英文界面的ubuntu,但是如果不合适的设置中文就无法正常显示。下面就介绍下我的经验。

一。 英文界面下的GBK编码中文支持

这里主要讲述如何把界面设置成语言英文同时又支持中文(GBK)的方法。

1) 用root或sudo执行下面的命令来设置LOCALE
dpkg-reconfigure locales
a) 系统需要支持(产生)英文和中文。 [我的设置为: en_GB.UTF-8 和 zh_CN.GBK]
b) 默认编码选英文。[我的设置为: en_GB.UTF-8 ]

*如果其它不设置的话,系统的界面就是英文了,但是此时中文会乱,因为所有的文字都是通过默认编码[我的设置为: en_GB.UTF-8 ]来处理的。所以我们需要再设置LOCALE变量中的LC_CTYPE值来正常显示中文。

2) 如果您用GUI界面的话,把如下的代码放到 /etc/X11/Xsession.d/60env 中

代码: 全选

 
ENCODING="en_GB.UTF-8"
export LC_MESSAGES=$ENCODING
export LC_COLLATE=$ENCODING
export LC_CTYPE="zh_CN.GBK"
export LC_TIME=$ENCODING
export LC_NUMERIC=$ENCODING
export LC_MONETARY=$ENCODING
export LC_PAPER=$ENCODING
export LC_NAME=$ENCODING
export LC_ADDRESS=$ENCODING
export LC_TELEPHONE=$ENCODING
export LC_MEASUREMENT=$ENCODING
export LC_IDENTIFICATION=$ENCODING
* 保存好改文件后(你需要写的权限),重启X,在进入GUI,中文就可以正确显示了(如果系统有安装中文字体的话)。

* 截图可以看附件的图一。


二。 中文在LCD上的显示优化

因为LCD的工作方式,中文和英文在LCD上的显示效果截然不同(相同配置下),因起要区别对待,这也增加了解决的难度。

1) 从 http://www.linuxsir.org/ 下载 Versa-YuanTi, 我用的版本是2。0,以下是它的更新记录:

代码: 全选

0.1:忘记了
0.2:也忘记了
0.3:还是忘记了
1.0:字体全部重做。以 Bitstream 为基础直接 Merge 进圆体,不再进行逐字符替换。节省制作时间、减少错误。觉得较为完善、以后也很少会改动,故版本号做大的调整
2.0:在 1.0 的基础上嵌入从 simsun 里提出的 12、13、14、15、16、18 pixelsize 的 GBK 点阵
* 把下载的 Versa-YuanTi 字体解压到系统的字体文件目录中,比如/usr/share/fonts/truetype 中。

2) 更改字体配置文件。
a)以下的代码是在 /etc/fonts/fonts.conf中的,如果放到/etc/fonts/local.conf应该也可以的

代码: 全选

	<alias>
		<family>serif</family>
		<prefer>
			<family>Bitstream Vera Serif</family>
			<family>Times New Roman</family>
			<family>Thorndale AMT</family>
			<family>Luxi Serif</family>
			<family>Nimbus Roman No9 L</family>
			<family>Times</family>
			<family>Frank Ruehl</family>
			<family>FreeSerif</family>
			<family>MgOpen Canonica</family>
			<family>Kochi Mincho</family>
			<family>Baekmuk Batang</family>
 			<family>Vera Sans YuanTi</family>
   			<family>Vera Sans YuanTi Mono</family>
			<family>NSimSun</family>
		</prefer>
	</alias>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Bitstream Vera Sans</family>
			<family>Verdana</family>
			<family>Arial</family>
			<family>Albany AMT</family>
			<family>Luxi Sans</family>
			<family>Nimbus Sans L</family>
			<family>Helvetica</family>
			<family>Nachlieli</family>
			<family>FreeSans</family>
			<family>MgOpen Moderna</family>
			<family>Kochi Gothic</family>
			<family>Baekmuk Dotum</family>
 			<family>Vera Sans YuanTi</family>
   			<family>Vera Sans YuanTi Mono</family>
			<family>NSimSun</family>
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Bitstream Vera Sans Mono</family>
			<family>Andale Mono</family>
			<family>Courier New</family>
			<family>Cumberland AMT</family>
			<family>Luxi Mono</family>
			<family>Nimbus Mono L</family>
			<family>Courier</family>
			<family>Miriam Mono</family>
			<family>FreeMono</family>
			<family>Kochi Gothic</family>
			<family>Baekmuk Dotum</family>
 			<family>Vera Sans YuanTi</family>
   			<family>Vera Sans YuanTi Mono</family>
			<family>NSimSun</family>
		</prefer>
	</alias>
b) 把以下代码放到/etc/fonts/local.conf中:

代码: 全选

	
<alias>
                <family>serif</family>
                <prefer>
                        <family>Bitstream Vera Serif</family>
			<family>Vera Sans YuanTi</family>
                </prefer>
        </alias>
        <alias>
                <family>sans-serif</family>
                <prefer>
                        <family>Bitstream Vera Sans</family>
			<family>Vera Sans YuanTi</family>
                </prefer>
        </alias>
        <alias>
                <family>monospace</family>
                <prefer>
                        <family>Bitstream Vera Sans Mono</family>
			<family>Vera Sans YuanTi Mono</family>
                </prefer>
        </alias>




<match target="font" >
  <test name="family" >
   <string>SimSun</string>
   <string>Vera Sans YuanTi</string>
   <string>Vera Sans YuanTi Mono</string>
  </test>
  <test name="pixelsize" compare="more_eq"><double>12</double></test>
   <test name="pixelsize" compare="less_eq"><double>16</double></test>
  <edit name="antialias" >
   <bool>false</bool>
  </edit>
  <edit name="rgba" >
   <const>none</const>
  </edit>
  <edit name="hinting" >
   <bool>false</bool>
  </edit>
 </match>
 <match target="font" >
  <test name="family" >
   <string>NSimSun</string>
  </test>
  <test name="pixelsize" compare="more_eq"><double>12</double></test>
   <test name="pixelsize" compare="less_eq"><double>16</double></test>
  <edit name="antialias" >
   <bool>false</bool>
  </edit>
  <edit name="rgba" >
   <const>none</const>
  </edit>
  <edit name="hinting" >
   <bool>false</bool>
  </edit>
 </match>



<match target="font">
   <test name="family"><string>Vera Sans YuanTi</string></test>
   <edit name="globaladvance"><bool>false</bool></edit>
</match>

<match target="font">
   <test name="family"><string>Vera Sans YuanTi Mono</string></test>
   <edit name="globaladvance"><bool>false</bool></edit>
</match>

* 设置系统的字体为:Bitstream Versa

* 这里的设置主要一个是设置优先字体Bitstream Vera Sans, Vera Sans YuanTi, 再一个是依据显示字体来启用和禁用antialias和hinting。如果中文字体打开antialias和hinting在LCD上会显的很糊,而英文开启此配置会显的圆润,所以我们只需要让中文在12-16号中间禁用antialias和hinting。

* 因为Vera Sans YuanTi内嵌了部分simsun的GBK 点阵,当Vera Sans YuanTi关闭antialias和hinting是内嵌的simsun的GBK 点阵会被显示出来。而当启用antialias和hinting时这个字体中的圆体会被显示。这就是说:
在12-16号的中文字体会以simsun的字体显示出来,其他号的字体会以加了antialias和hinting的园体显示。

*具体效果大家可以看截图 (第二张) 中字号由小变大而带来自行和显示效果变化。
附件
字号由小变大而带来自行和显示效果变化
字号由小变大而带来自行和显示效果变化
fonts.jpg (4.7 KiB) 查看 3742 次
英文界面下的GBK编码中文支持
英文界面下的GBK编码中文支持
glwang
帖子: 18
注册时间: 2005-07-01 18:45

#2

帖子 glwang » 2006-05-07 10:54

写得不错。建议置顶。
头像
soliton
帖子: 338
注册时间: 2006-05-13 14:00

#3

帖子 soliton » 2006-05-16 19:25

:o
depp
帖子: 92
注册时间: 2005-10-20 4:15

#4

帖子 depp » 2006-05-17 0:20

LC_CTYPE改了,一定会有些程序是中文的界面。还是不要用GBK了,UTF8是大势所趋。看看我的帖子
viewtopic.php?p=75084#75084
depp
帖子: 92
注册时间: 2005-10-20 4:15

#5

帖子 depp » 2006-05-17 0:23

字体也最好不要用这种版权不明不白的。文泉驿好的很。
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#6

帖子 sammeme » 2006-05-17 11:47

depp 写了:LC_CTYPE改了,一定会有些程序是中文的界面。还是不要用GBK了,UTF8是大势所趋。看看我的帖子
viewtopic.php?p=75084#75084
如果只改LC_CTYPE (如我上面所描述的), 该是英文的地方中文不会出来. 这个设置指示用来告诉系统默认的解码方式,根显示何种地方文字无关.

UTF-8确实是大势所趋, 但是如果你手头有大量的文档是GBK编码的话,你还是要考虑一下的. 特别是中文windows默认的编码并非是UTF-8.

另:文件名编码转换可以用如下的命令:

代码: 全选

convmv -r -f gbk -t utf8 *
会把当前目录下的文档名从GBK编码改到UTF-8.
上次由 sammeme 在 2006-05-17 12:05,总共编辑 1 次。
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#7

帖子 sammeme » 2006-05-17 11:55

depp 写了:字体也最好不要用这种版权不明不白的。文泉驿好的很。
文泉驿的点阵字体还凑和,你要是愿意可以把Versa-YuanTi中 点阵simsun替换掉.

我再强调一下, 要兼顾中文和英文的显示要不做复合字体要不在系统配置上做大量文章.
depp
帖子: 92
注册时间: 2005-10-20 4:15

#8

帖子 depp » 2006-05-29 1:15

java 会根据LC_CTYPE决定界面用何种文字。
yision
帖子: 73
注册时间: 2008-02-21 21:23

Re: 英文界面下的GBK编码中文支持的设置及美化

#9

帖子 yision » 2009-01-16 21:59

那 如果 我不改 LC_CTYPE 那该怎么做呢
回复