?? 265613-ht.txt
字號:
FreeBSD 中文環(huán)境 howto
____________________________________________________
author:cjacker
____________________________________________________
內(nèi)容列表:
一.關(guān)于本文檔
1.簡介:
之所以要寫這樣一個HowTo文檔,主要是因為希望FreeBSD下的中文環(huán)境越來越好用,
從目前的發(fā)展趨勢來看,FreeBSD的中文環(huán)境確實越來越好了.
需要用戶作的工作也越來越少了.
做了很長時間的linux中文化研究,積累的了一些經(jīng)驗,對在FreeBSD下的中文工作帶來了
很大的幫助.
2.怎樣閱讀本文檔:
本文檔適合初學(xué)者和開發(fā)者閱讀,希望能夠從中得到一些幫助.
3.本文檔可以解決哪些問題:
這個文檔包含了絕大部分你可能遇到的中文問題,或你正在疑惑的問題.
二.基本工作:
1.什么是locale:
望文生意,locale本地化的意思.
深入一點,locale就是一組用來處理本地化語言的C程序.由國家和本地習(xí)慣的不同,
在處理文字、日期、數(shù)字、貨幣格式等問題都會有所不同,locale就是用來解決這個
問題。
C語言的locale定義,分為以下幾類:
LC_ALL:代表所有的locale
LC_CTYPE:用來處理文字編碼
LC_MESSAGES:信息的顯示,你可能會在這樣一個目錄看到大量的mo文件
LC_TIME:時間格式
LC_NUMERIC:數(shù)字格式
LC_MONETARY:貨幣格式
LC_COLLATE:字母順序和特殊字符的比較
其中比較重要的是
字符編碼LC_CTYPE和本地化的信息顯示LC_MESSAGES.
2.中文編碼簡介:
現(xiàn)在(4.5)版本的系統(tǒng)中文locale為zh_CN.EUC(也就是GB2312編碼),大約包含6000多漢字(不包括特殊字符)
編碼范圍為第一位b0-f7,第二位編碼范圍為a1-fe(第一位為cf時,第二位為a1-d3)
計算一下漢字個數(shù)為6762個漢字。當然還有其他的字符。包括控制鍵和其他字符
大約7573個字符編碼
gbk編碼是對gb2312編碼的擴充,容納的漢字更多,但僅僅是擴充,沒有質(zhì)的變化。保留了所有g(shù)b2312編碼
在此基礎(chǔ)上進行編碼范圍的擴充.容納(包含特殊字符)共22014個字符編碼.
gb18030編碼是在gbk編碼基礎(chǔ)上的擴充,因為漢字更多,僅僅使用兩位編碼已經(jīng)不能
容納要求的漢字,所以采用了2\4位混和的辦法,可以支持更多的漢字編碼。并且保留了原有的gbk 2字節(jié)編碼
兼容gb2312和gbk編碼的文件。大概容納55657個編碼(包含特殊字符)
unicode編碼:俗稱萬國碼,致力于使用統(tǒng)一的編碼準則表達各國的文字。
為表達更多的文字,utf-8采用2/3混編的方式。目前容納的漢字范圍小于gbk編碼。并且以
3字節(jié)的方式處理中文,帶來了兼容性的問題,原有的gbk,gb2312,gb18030編碼文件都不能正常的處理,
還有很長的路要走。
目前,gbk編碼和utf-8編碼已經(jīng)在FreeBSD平臺測試性的實驗成功。
你可以訪問www.linuxforum.net中的FreeBSD世界版面獲得更多的信息。
如果你沒有安裝新的gblocale.只能使用zh_CN.EUC
3.中文locale的設(shè)定:
如果你使用csh:
應(yīng)當設(shè)置:
setenv LANG zh_CN.EUC
setenv LC_ALL zh_CN.EUC
如果你使用bash:
應(yīng)當設(shè)置:
export LANG=zh_CN.EUC
export LC_ALL zh_CN.EUC
如果你使用了gbk locale
你應(yīng)該設(shè)置為
LANG=zh_CN.GBK
LC_ALL=zh_CN.GBK
4.FreeBSD locale文件定義在哪?
二進制的locale文件包含在/usr/share/locale/目錄下的相關(guān)目錄下.
像zh_CN.EUC目錄包含LC_COLLATE\LC_TIME\LC_CTYPE
源文件在/usr/src/share/mklocale;/usr/src/share/colldef;/usr/src/share/timedef目錄.
5.FreeBSD locale 源文件的組成:
請參看/usr/src/locale/mklocale/下的zh_CN.EUC.src閱讀本部分
LC_CTYPE將所有的字符分為以下幾類:
ALPHA:所有的拼音字母
CONTROL:控制碼
DIGIT:阿拉伯數(shù)字
GRAPH:所有有筆畫的字符,不包括空白和空格
LOWER:小寫字母
PUNCT:標點符號
SPACE:空格,空白,換行等
UPPER:大寫字母
XDIGIT:用來表示16位數(shù)字的字符
BLANK:空白,通常只包括space和tab
PRINT:所有可列出的字符,blank
IDEOGRAM:其他所有的字符,以范圍的形式列出.
6.時區(qū)的設(shè)定:
我們使用的時區(qū)是CST,請正確的設(shè)置,不然,建立文件的時間表示會很奇怪.
使用命令:
tzsetup
三.X相關(guān):
1.X中文化:
顯示由X完成.
輸入由chinput-3完成.
軟件的中文顯示由LC_MESSAGES完成
2.配置X
XFree 86 3.3.4版本開始已經(jīng)支持中文,所以需要我們作的工作就很少了.
為了驅(qū)動更多的新硬件,推薦使用XFree86 4版本以上.
在4.5光盤包含有Xfree 3.3.6和4.1版本.
請使用4.1版本.
運行xf86config配置,會在/etc/X11/目錄生成一個XF86Config文件,就是X 4的配置文件.
為了可以使用ttf字體.
你需要修改FontPath,添加自己的ttf字體的路徑.
同時將Load "freetype"修改為 Load "xtt".
這樣就可以很好的處理中文truetype字體.
同樣,可能會出現(xiàn)鼠標的問題,如果你在系統(tǒng)安裝時激活鼠標.
請去掉pointer段的protocal一行.
3.配置fonts.dir:
如果你使用中文的pcf字體,只需在安裝字體的目錄運行mkfontdir命令就會自動生成一個fonts.dir文件,
如果使用的truetype字體,可能只能手動建立這個文件了.
下面是一個例子:
======================= from here ===============================
19
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-p-0-ascii-0
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-p-0-fcd8859-15
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-p-0-ibm-cp850
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-p-0-iso8859-1
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-p-0-iso8859-15
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-p-0-koi8-r
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-c-0-gbk-0
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-c-0-big5-0
demo.ttf -misc-demo-medium-r-normal--0-0-0-0-c-0-iso10646-1
ai=0.3:demo.ttf -misc-demo-medium-i-normal--0-0-0-0-p-0-iso8859-1
ab=y:demo.ttf -misc-demo-bold-r-normal--0-0-0-0-p-0-iso8859-1
ai=0.3:ab=y:demo.ttf -misc-demo-bold-i-normal--0-0-0-0-p-0-iso8859-1
ai=0.3:demo.ttf -misc-demo-medium-i-normal--0-0-0-0-c-0-gbk-0
ab=y:demo.ttf -misc-demo-bold-r-normal--0-0-0-0-c-0-gbk-0
ai=0.3:ab=y:demo.ttf -misc-demo-bold-i-normal--0-0-0-0-c-0-gbk-0
ai=0.3:demo.ttf -misc-demo-medium-i-normal--0-0-0-0-c-0-gb2312.1980-0
ab=y:demo.ttf -misc-demo-bold-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.3:ab=y:demo.ttf -misc-demo-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0
===================== end =======================================
這里要解釋一下的是-p-和-c-:
-p-定義在X啟動時將所有字符都調(diào)入內(nèi)存.
-c-定義在X啟動時只將需要顯示的字符調(diào)入內(nèi)存.
當然是使用-c-要好一些(快),但是如果你將英文字體也改為-c-就會發(fā)現(xiàn)一個字母占用的空間也變成
漢字的寬度了,很難看,所以,對所有的中文字體使用-c-,對英文的字體使用-p-.
至于ab,ai分別用來定義粗體,斜體了.
這里的demo指字體名,請根據(jù)你的需要修改,文鼎發(fā)布了四款免費的中文字體.其中兩款是gb2312的.
如果你自己擁有合法的字體,也可以按照上述配置修改.
4.中文字體分類:
點陣字體:
這種字體將字型點矩陣直接存儲在內(nèi)存中,使用時取出.但如果字型的點數(shù)過少,容易出現(xiàn)毛刺.
同樣在放大時也容易出現(xiàn)毛刺.
向量字體:
這種字體使用線段描繪字體外形,所以放大或縮小一樣的平滑,但浪費效率,計算時間長,在過度放大時
也會出現(xiàn)棱角.
曲線描邊字體:
這種字體使用曲線公式描繪字型,計算費時更長,但顯示效果最好,常見的有TrueType font.
5.有用的點陣字體(portable compiled font)
Xfree 86自帶了fangsong ti和song ti兩種點陣中文字體.
其他有用的還有unifont-iso10646-1 unicode點陣字體.
來自turbo linux的ccs16_1點陣字體.
可以使用xlsfonts|grep gb2312得出系統(tǒng)可用的中文字體.
6.truetype字體:
免費的truetype字體可以使用文鼎的四款字體.
同樣你也可以使用合法得到的simsun.ttf等非免費字體.
fonts.dir的寫法可以參考上面的介紹.
7.在啟動X之前,請檢查是否正確修改了/etc/X11/XF86Config文件.
四.中文的顯示和輸入:
軟件的國際化作的越來越好了,所以很多問題變的越來越簡單.
在繼續(xù)之前,請確定你已經(jīng)安裝了中文字體并正確的配置.
1.console下的中文輸入和顯示-zhcon
cd /usr/ports/chinese/zhcon/
make;make install
在終端下啟動:
#zhcon
這時你就可以在console下處理中文了
2.X下的中文輸入XIM server-chinput
目前最新的版本是chinput-3.0.2
已經(jīng)包含了turbo unicon輸入模塊和zwincontrol控制條.
安裝很簡單,配置主要是修改/usr/local/lib/Chinput/Chinput.ad
中的locale定義和使用的字體.
另外需要設(shè)置環(huán)境變量export XMODIFIERS=@im=Chinput(bash)
setenv XMODIFIERS (@im=Chinput)(csh)
啟動X后,運行chinput,就可以向任何支持XIM的軟件輸入中文了.
目前包括智能拼音,五筆詞組,雙拼,gbk拼音等輸入法.
3.X下支持中文輸入的終端:
crxvt:
支持gb2312輸入
請安裝系統(tǒng)盤中的zh-rxvt包或從port中編譯安裝.
使用時,請設(shè)置字體,例:
crxvt -fmn -misc-demo-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0
請將demo修改為你擁有的中文字體
然后就可以使用chinput-3輸入中文了.
mlterm:支持gbk和utf-8中文處理的虛擬終端:
安裝(從系統(tǒng)盤或port)
前面提到了ccs16_1 gbk點陣字體,請安裝.
修改/usr/X11R6/etc/mlterm/font文件,添加GBK = 16,ccs16_1;
在GBK locale下啟動mlterm,同樣你的chinput也要設(shè)置為gbk locale啟動
(修改/usr/local/lib/Chinput/Chinput.ad)
就可以使用gbk拼音輸入gbk中文字符了.
4.ls中文文件名的顯示:
使用
#vi 你好
建立一個中文文件名的文件.
用ls查看會發(fā)現(xiàn)文件名變成問號.
解決方法:
export LC_CTYPE=en_US.ISO_8859-1
ls就可以看到中文文件名了.
這個辦法當然不是治本的.
cd /usr/src/bin/ls/
fetch http://freebsd.sinica.edu.tw/~statue/util.c.mbpatch
patch <util.c.mbpatch
make;make install
以后就可以直接使用ls正確顯示中文文件名了.
5.vi無法處理中文的辦法:
export LC_CTYPE=en_US.ISO_8859-1
vi
就可以正確的處理中文了.
長期的解決辦法是建立一個腳本cnvi
內(nèi)容為:
#!/bin/sh
export LC_CTYPE=en_US.ISO_8859-1
vi $1
然后chmod +x cnvi
將他放在/usr/bin下,以后使用cnvi編輯文件就可以了.
五,桌面管理器的中文化:
這里只列出GNOME和KDE(其他桌面使用不多,可以自己嘗試正確設(shè)置)
隨i18n越作越好,我們只需要作一些配置工作.
1.GNOME
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -