版主大哥,我就我这么久以来使用和学习各位的帖子,形成了一个理解。回想我自己配置中文环境时迷失在论坛各种帖子里的经历,就我现有的粗浅理解,写了一个概论。不当之处肯定是有的,希望各位大哥指正,修正。只要能让新来的兄弟们,对于 FreeBSD 中文配置,理出一个头绪,有目的参照论坛里面的帖子,少点弯路,我就很满意了。希望大家不要嘲笑我的无知和无畏。
---------
看了所有的有关 FreeBSD 的汉化的帖子。各不相同,每个人都有每个人不同的方法。基本上是看完第一篇帖子所形成的想法,很快就被第二篇帖子所推翻。想来想去,既然都能做到最后显示中文的目的,那么都是对的。让我等初学者头脑迷乱的原因,不简单是不思考,我到觉得是因为很多人写的帖子都是只有步骤,不解释原因。毕竟很多步骤不是唯一的做法,为什么选 A 而 不选 B 从来没有人解释过。
自己用 FreeBSD ,也有8个多月。同时也换用了3种不同的 Linux 发行版。基本上对 unix 系统惯例有一点肤浅的认识。借着这点肤浅的认识,努力去理解论坛里面所有的"汉化"方式。大致形成以下的想法,希望不对的地方版主能给于指正。
第一:有关 FreeBSD 的汉化概念本身应该的认识。
提到"汉化"这一个词,依赖普通人的常识,会形成这样的认识: "FreeBSD 是一个不支持汉字显示的系统。需要我们手动的添加这种能力。" 而对于使用计算机有那么些年的人说,更会形成这么一个认识:" FreeBSD 没有对多字节字符编码的处理能力"。因此,自打我接触到"FreeBSD 汉化"的这个词来说,就形成这样一个误解。认为,要让 FreeBSD 显示中文,必须自己做大量底层的工作。从内核到应用层来个全面修补。从最初的概念上就把 FreeBSD 显示中文复杂化了。经过一段时间使用,对 FreeBSD 的不断认识,才真正还 FreeBSD 一个本来面目。下面是我的认识:各位大哥,不对之处请指出,但不要嘲笑新人。
FreeBSD 是一个完整和完善的系统。从内核结构上已经就不存在汉字等多字节编码字符的显示问题。我们要做的只是添加我们需要的汉字字体。同时,就添加的字体,对 XFree86 做相应的设定,使其能够识别和使用我们添加的字体。同时,字体显示的处理,不完全是 XFree86 的工作,有一部分工作现在的处理思路是交给应用程序,以提供更好的灵活性。最后,由于,我们惯用的显示效果比较好的几种字体比如 simsun.ttc 是有商业版权的。FreeBSD 因此不能予以提供。导致,我们得到发行版本是一个没有对中文配置妥当的系统。
因此,FreeBSD "汉化"这种说法是错误地,有误导作用。真正我们需要地是配置中文环境。也就是说,恰当地说法是"FreeBSD 中文环境配置"。
第二:配置中文 FreeBSD 环境的认识
因为我们需要的只是配置,所以要让 FreeBSD 显示中文,我们要做的只是:
a 添加自己喜欢的中文字体到系统(基本上是复制)
b 对 XFree86 配置,使其可以找到,并使别我们添加的字体(在XF86config 中添加我们存放中文字体的路径)。
c 设定我们的环境参数,让系统按照中文习惯显示中文的提示信息,并中文习惯的时间,货币等表达方式,和中文对应的输入参数(在 .profile , .bashrc , .cshrc 等种设定 LANG=zh_CN.EUC LC_CTYPE=zh_CN.EUC.前者确定系统使用中文显示系统信息 ,后者确定中文的显示习惯。也有人写 LC_ALL=zh_CN.EUC ,据我的片面理解,她等价于前面两句。)
d 针对一些应用程序显示中文的方式,进行设定。这是牵扯到字体除了由 XFree86 完成显示处理的 Core Font 和 TrueType 字体外,还是有很多应用程序使用 fontconfig 来处理和显示字体,所以,对这一部分也要做设定(设定 .fonts.conf , 然后 用 fc-cache -f -v 建立已有的字体库信息)。
e 剩下的就是对于各种字体显示效果的附加要求导致的操作。
首先,中文字体,较西文字体复杂。所以,设计字体的人在实现字体的时候,对于字体显示较大的时候和较小的时候是用了两种不同的方法。比如我们用的 simsun.ttc。所以,按照同一种方式处理汉字的显示,在字体大地时候和小的时候,会有不同地效果。象一般西文字体都使用了"反锯齿" 技术。这对西文字体地显示有很好地平滑字体边缘地作用,可以更加美观。然而,中文恰恰在小字体地实现上不适合用这种能力,所以必须在字体小于 12 号地时候禁止"反锯齿" 能力。否则,就出现了多数 Linux 发行版上中文模糊不清晰地结果。其次,对于 TrueType 地字体,使用 hinting 技术可以美化显示效果。但不是所有地字体都有效地在小字体时实现了这种能力,而采用点阵字体用于小字体显示。所以,就有了在 .fonts.conf 里面添加
<match target="font">
<test name="family"><string>MingLiU</string></test>
<edit name="antialias"><bool>true</bool></edit>
<edit name="hinting"><bool>true</bool></edit>
<edit name="autohint"><bool>false</bool></edit>
</match>
<match target="font">
<test name="family"><string>MingLiU</string></test>
<test name="size" compare="less_eq"><int>12</int></test>
<edit name="antialias" mode="assign"><bool>false</bool></edit>
<edit name="hinting" mode="assign"><bool>true</bool></edit>
</match>
这么一段地原因。
另外,对于字体的两种处理方式,应用程序很多都是支持的,所以,有些人可以简单的只是做完 a b c 步骤,就可以。而 另一些则做完了a b c d e 所有的步骤。这就看个人喜好,对字体美观程度的要求,以及是否用到了 特别的只支持其中一种 TrueType 字体显示方式的程序。有的化,必须针对性配置。鉴于完整性,应当做完 a b c d e。而做这些步骤,有相应的工具可以使用,省去人为操作,所以,有人使用ttfm。
最后,等同于 windows 系统,软件也是分是不是存在中文版的问题,相应的,你要考虑你用的应用程序是不是支持中文。对应的去安装中文版本,就是符合 i18n 的版本,那么,系统就可以使它显示中文了。还有就是,你也要装一个中文输入法,把输入法的编码变成汉字内码。这就完成了。
第三:针对第二部的操作,有一些可以灵活的地方
这里的灵活,指的是不同的人,习惯修改不同位置的配置文件,以及不同的人,将字体放到了不同的位置。这一点在论坛里面帖子里表现很明显。初学者往往会很迷茫。其实,unix 系统是有一个惯例存在的。象 c 里面对 中文local 的设定,可以放到 ~/.profile 里,也可以放到 /etc/.profile 里。字体可以放到 /usr/X11R6/lib/X11/fonts/XXX ,也可以放到 /usr/local/share/fonts/XXX ,还可以放到 ~/.fonts/XXX 。区别在哪里?对于配置文件,放到 /etc/ 下面的,是针对整个系统有效的。而放到 ~/ 下面的,是针对单个用户有效的,不改变系统设置。而字体文件,不管放到哪里,只要你在 XF86Config 里指明了路径,她就可以使用。而放到 /usr/X11R6/lib/X11/fonts/XXX 和 /usr/local/share/fonts/XXX 的目的是一个惯例,把不是系统本身的东西在 /usr/local/ 对应的位置,来保证系统本身的洁净。你会发现,很多应用程序,会把自己放到这里。目的就是如此。
个人觉得:保持系统本身洁净,同时维持不同用户间灵活不同的配置。应该把每个用户的 local 配置,放到自己 home 里 ,即改写 ~/ 下面的 .profile ,.bashrc ,.cshrc 等等。而把字体放到 /usr/local/share/fonts/XXX 里,是不必每个用户都保持一个字体拷贝,同时又不影响系统本身。这样,不同的用户,可以使用不同的语言环境,不同的字体设置,不同的窗口管理器。这样才还原了 unix 本身灵活,优雅的特点。想象一下, root 登陆,使用的是标准的 西文环境,西文提示。娱乐用户登陆,使用的标准的中文环境,中文提示。甚至,为了学习外语,配置一个帐号,登陆后,系统使用其他语言的环境,其他语言的提示,岂不是很美妙的事情?
大体上,我的理解就是这样子。我认为,理清这些,对于我们初学者,有目的,快速的掌握自己喜欢的 FreeBSD 中文环境配置方法,是有帮助的。不至于陷入茫茫不同的成功范例而不知所措。我想,我们的论坛,缺少的就是这样一个综述吧!
当然,作为一个才开始学习 FreeBSD 的新人,对于我自己的理解,我想一定还有不对的地方。希望,我的帖子,能够在大家的帮助下,成为一个合适初学者的引路人。
引用:http://freebsdchina.org/forum/viewtopic.php?t=14548
No comments:
Post a Comment