FreeBSD Chinese HOWTO

Size: px
Start display at page:

Download "FreeBSD Chinese HOWTO"

Transcription

1 FreeBSD Chinese HOWTO The Chinese FreeBSD Documentation Project

2 FreeBSD Chinese HOWTO by The Chinese FreeBSD Documentation Project Published February 2001 Copyright 1999, 2000, 2001, 2002, 2003 by Shen Chuan-Hsing 本文說明如何在 FreeBSD 的系統上使用中文 其中包括了在 FreeBSD 系統上使用中文可能遭遇的問題, 以及如何取得, 安裝與設定各種不同的中文軟體, 以及 FreeBSD 的中文化工作等 如果您在使用 FreeBSD/Linux 上遇到任何的中文問題, 都歡迎寫信跟我討論, 當您遇到的中文問題有解答的時候, 也希望能寫封信通知小弟 Shen Chuan-Hsing 新增或修改 Redistribution and use in source (SGML DocBook) and compiled forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Important: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

3 Table of Contents 1. 前言 簡介 如何取得這份文件? jadetex - SGML+JadeTex 產生不內嵌字型的中文 PDF 注意事項 目標 如何學 BSD? 以 FreeBSD 建立中文 Desktop 的安裝指南 保持最新的 Ports Tree 時區設定與對時 X Window 與 Window Manager Window Manager 文鼎 TTF 與國喬 PCF 字型 設定 locale 中文輸入與終端機 瀏覽器 郵件用戶端 彩色的 ls Telnet MP3 Player Media Player, 支援 vcd dvd DivX PDF Reader DOC Reader FTP Client MSN Messeger 使用其他字型作為預設字型...10 I. 中文環境 中文環境 中文編碼標準 基本中文環境的要件 國際化與中文化 可能的問題 什麼是 locale? 中文 X Window XFree 使用字型 中文 locale 的設定 時區的設定 中文的訊息 幫助本地化和翻譯的工作 參加中文 I18N/L10N 的計畫 翻譯 PO 檔注意事項 中文 manual page 中文輸出字型 PCF - 點陣字型...32 iii

4 6.2. PostScript TrueType 中文的顯示及輸入 輸入法 中文控制台 (Console) X Window 下的中文輸入平台 X Window 下支援 XIM 的中文終端機 X Window 下的內建輸入法中文終端機 新增輸入法 在 Shell 底下的中文輸入 big5fs - Joliet, VFAT 和 NTFS 檔案系統的中文顯示 gnuls - 特殊中文檔名和目錄的顯示 xpdf - 中文 PDF 的顯示 中文視窗管理程式 GNOME 程式的中文支援 Enlightenment 的中文化 KDE 的中文化 WindowMaker 的中文化 Sawfish 的中文化 中文的列印 現在的中文列印 bg5pdf - 轉換中文 Big5 編碼文件成為不內嵌的 PDF bg5ps - 使用 TTF 字型轉換中文 Big5/GB 編碼文件成為 Portscript enscript - 直接使用 CID-font 來列印 gb2ps - 轉換中文 GB 編碼文件成為 PostScript gbscript - 轉換中文 GB 編碼文件成為 PostScript tocps - 轉換中文編碼文件成為 PostScript vflib - 使用自由向量字型的向量字型函式庫, 支援 BIG5 和 GB cnprint wprint...99 II. 中文應用軟體 中文排版軟體 X Window 下的排版軟體 Console 下的排版軟體 TeX/LaTeX 下的排版軟體 中文轉碼軟體 iconv cn2jp - 在中文和日文間的編碼轉移函式庫 autoconvert - 智慧的中文編碼轉換 c2t - 轉譯 GB/Big5 編碼成拼音 hc - 漢字轉換器, 在 GB 和 Big5 編碼間轉換 gb2jis - GB 漢字轉換 JIS 漢字 hztty - 在 GB Big5 和 HZ tty 中轉換 jis2gb - JIS 漢字轉換 GB 漢字 pycodec - 中文碼 / 萬國碼轉換程式 fzzdxfw - 方正中等線繁體 中文郵件用戶端 iv

5 12.1. sylpheed - 建構在 GTK+ 上, 輕量級且快速的電子郵件軟體 mutt - 功能強大的電子郵件軟體 pine4 - 操作便利的電子郵件軟體 郵件亂碼? 中文網際網路軟體 bind samba - 網路芳鄰, 資源分享程式 HTML 網頁瀏覽 FTP 檔案傳輸 Telnet 遠端連線 ICQ 連線軟體 bluefish - 網頁編寫 tin - 新聞討論群閱讀器 tintin++ - MUD 工具 中文 IRC 軟體 中文程式設計 在 FreeBSD 下寫程式應該注意的問題 JSP / Servlet 怎樣才能處理中文? Java 連結到 MySql 如何使用中文? linux-gtk - gtk 的函式庫 rpm, 有 Big5/GB 的支援 php 的 ImageTTFText() 經常抓錯字? php 上傳中文檔名的檔案 用 php 製作中文 PDF 檔 Tcl/Tk - 廣為運用的一種高階電腦語言與 GUI 發展工具 PostgreSQL 不能處理中文? PostgreSQL + JDBC + Servlet + XMLC 中文完全解決方案 Java 中文程式設計 Perl 中文程式設計 MySQL Localisation and International Usage 在 LDAP 下使用中文 中文多媒體軟體 mplayer xmms - mp3 播放軟體 有用的中文軟體 字典軟體 FreeWnn acroread-chtfont - Acrobat Reader 的 PDF 閱讀軟體 cle_base - 利用 CLE 所提供的中文 L10N 來完成中文化 cless - 一個較好用的分頁閱讀程式 Dia - 類似 Vision 的流程設計軟體 Firebird - BBS 伺服器 fortunetw - 唐詩三百首與易經 Gnumeric - GNOME 報表軟體 hanzim - 中文字學習軟體 libtabe - xcin 的中文處理函式庫 lunar - 轉換陽曆和陰曆的對應日期 linux_locale - linux 模擬器所需的中文 locale 資訊 mkisofs - 建立光碟影像檔 v

6 mule-freewnn muni p5-date-chinese qkmj - 中國的國粹 : 麻將 發展中的中文軟體 Outta-port mkhybrid xfig movabletype - blog 其它軟體的中文相關問題 sendmail procmail vim - VI 的進階編輯器 mailman - How to Enable Chinese in Mailman FreeBSD 的中文化 FreeBSD 中文文件計畫 FreeBSD 中文化計劃 FreeBSD 的中文站台 FreeBSD 的中文討論區 FreeBSD 的中文 IRC 聊天室 III. 附錄 常見問題解答 為何我無法輸入中文? 如何在 Netscape 輸入中文? ChiTeX 與 CJK 有何不同? 可否同時安裝? rxvt 為何是日文的? 加快 X Win 的方法? 為何 Netscape 的圖示是黑白的? 中文的 SSH client for windows? 在 FTP 中輸入中文? Oracle8i 沒辦法使用中文? 安裝 Oracle9i 出現亂碼? wu-ftp 無法上傳中文檔名的檔案? kdm 登入畫面是亂碼? vi 輸入中文會顯示 /XX/XX? write 無法送中文訊息? talk 無法送中文訊息? wall 無法送中文訊息? finger 無法看到中文 project? mail 無法看到中文 project? xml 是否具有處理中文的能力? 如何刪除以中文命名的檔案? X-win32 如何安裝中文字型? 網頁亂碼? OpenOffice641 內開啟中文的 HTML 及純文字檔? vnc 抓 XFree86 的中文問題? CCCII-FT 如何更改 X 的預設中文字體? vi

7 Gdk-WARNING **: BIG unzip 解開中文檔名變亂碼? squid 瀏覽 ftp 與 gopher 中文亂碼? Nautilus 中文字變成??? apache2 預設顯示中文網頁 網址列不能使用中文檔名? wget 中文檔名變亂碼 如何造字? 內建 ftpd 的中文問題 chm 怎麼在 Unix 底下觀看? konsole 字距過大 Cyrus-IMAP 將 8-bit 文字轉換為 X 的問題 英文間距太大的解決方法 文字編碼 中文編碼 感謝 vii

8 List of Tables 3-1. TW-BIG5 字區與編碼範圍 七個擴充字 GB 的漢字編碼規則 文鼎字體速查表...46 List of Figures 5-1. man snapshot showttf snapshot cid-gv snapshot moefonts-cid snapshot moettf snapshot arphicttf snapshot wangttf snapshot ntuttf snapshot big5con snapshot zhcon snapshot xcin25 snapshot aterm snapshot rxvt snapshot Eterm snapshot mlterm snapshot cxterm snapshot tcsh snapshot ntfs snapshot gnuls snapshot xpdf snapshot konq_3_1 snapshot konq_3_2 snapshot konq_3_3 snapshot kfont_3_1 snapshot konq_3_4 snapshot windowmaker snapshot snapshot snapshot kde-print snapshot bg5pdf snapshot bg5ps snapshot openoffice snapshot abiword snapshot joe snapshot qe snapshot ve snapshot CJK snapshot CJK-LyX snapshot viii

9 10-8. dvipdfmx snapshot ttf2pt1 snapshot hztty snapshot fzzdxfw snapshot sylpheed snapshot mutt snapshot konqueror snapshot mozilla snapshot lynx snapshot IglooFTP snapshot ncftp3 snapshot bbsnet snapshot qterm snapshot licq snapshot gaim snapshot kmerlin snapshot bluefish snapshot tin snapshot tintin++ snapshot xchat snapshot php-imagettftext snapshot php-pdf snapshot tcltk snapshot applet snapshot swing snapshot ldap snapshot mplayer snapshot xmms snapshot dict snapshot pydict snapshot stardict snapshot stardict2 snapshot oxford snapshot edict-big5 snapshot acroread snapshot fortunetw snapshot hanzim snapshot qkmj snapshot vim snapshot openoffice snapshot vnc snapshot cccii snapshot nautilus snapshot konsole snapshot ix

10 Chapter 1. 前言 這份文件大部分都不是作者親自撰寫的, 由網路上大家所努力出來的成果蒐集為主, 雖然有想過要轉型成為 "FreeBSD 中文使用環境 " 簡介文件, 不過礙於作者本身的能力與時間的不足, 所以還在慢慢規劃中 關於 FreeBSD 可以先參考它的官方網站 以及他所提供的豐富文件, 目前較為建議的閱讀是 FreeBSD Handbook (http://freebsd.sinica.edu.tw/handbook/) 本文目前適合給已經有安裝 FreeBSD 概念, 但遇到中文相關問題時, 可以用來找資料的文件, 初學者可能要先閱讀過基本的文章後, 例如 FreeBSD Handbook, 也有 FreeBSD Ports Collection (http://freebsd.sinica.edu.tw/handbook/ports.html) 的使用概念後, 會更為適合閱讀此份文件 在閱讀此份文件時, 目前還沒辦法一步步的引導使用者去設立 FreeBSD 中文使用環境, 不過這將是我們未來的目標 1.1. 簡介 本文件雖已力求正確, 然而無法保證所有操作 / 設定範例, 都可以順利的在您的系統上面進行 如果您依照本文件的說明而使您的系統發生任何問題或損失, 作者都將不負任何責任 希望由於本文的出現, 能大量減少在網路上一再重複出現的問題 :" 為什麼我不能輸入 / 看到中文?"," 為什麼我 xxxx 裝不起來?" 等等 雖然我也了解這是不太可能的 如何取得這份文件? 這份文件目前可以在這個網址取得 : WWW: (http://freebsd.sinica.edu.tw/~statue/zh-tut.php) 這份文件是由 SGML 所編寫而成的, 如果想取得原始檔案, 可以用以下的方式 : % cvs -d login (Logging in to CVS password: anoncvs % cvs -d checkout zh-tut 如果想手動產生 HTML,TXT 等格式, 則必須照以下的方式 : # cd /usr/ports/textproc/docproj # make JADETEX=yes install clean # cvsup -g /usr/share/examples/cvsup/doc-supfile 接著修改 /usr/local/share/texmf/web2c/texmf.cnf, 將以下改成 hash_extra = 25000,max_strings = , pool_free = 50000, 這樣應該就可以了 接著就可以到 zh-tut/ 底下用 make FORMATS=html 製作整頁模式的 HTML 版本, make FORMATS=split-html 製作章節模式的 HTML 版本, 因為以 make FORMATS=pdf 製作出來的 PDF 中文無法正常顯示,make FORMATS=ps 製作出來的 PS 版本也是如此, 所以目前的 PDF 版本是用 Adobe Distiller 以預設值 PDF 1.3 做出非內嵌中文的 PDF 版本, 以及以 PDF 1.2, 並內嵌字型製做出內嵌中文的 PDF 版本 並用 WebCapture2CK 增效模組做出了 PDF 的有超連結版本 TXT 版本則是使用 lynx 的 -dump 並搭配 -assume_charset=big5 1

11 Chapter 1. 前言 -assume_local_charset=big5 瀏覽整頁模式 HTML 版本所製作出來的 PS 的版本則是由 pdf2ps 所製作, 不過做出來會變成 30 MB, 不太適合下載 jadetex - SGML+JadeTex 產生生不不內嵌字型的中中文文 PDF Contribute by 海邊的野孩子 last update: 2003 年 4 月 7 日周一 19 時 11 分 14 秒 CST 要先安裝 tetex, docproj, CJK, xpdf 等應用軟體, 請參考前一節的說明 jade 可以將 XML/SGML 轉換成 tex 檔, 若是 XML 原本內含中文, 或是其他 CJK 文字, 原本會輸出成一般的中文, 加上環境變數 SP_ENCODING=Big5 後, 輸出的 tex 檔會將這些文字用 \Character{29992} 表示, 這數字是 unicode, 用 在 unicode 裡是中文的 用 字 若是直接以 jadetex 編譯這個.tex, 會出現 Unknown character 的錯誤訊息, 我的方式很簡單, 既然這些字元沒有定義, 就幫他定義一下, 在編譯的時候先引入就好了 定義一個 cjk-char.sty, 每行的內容像 : \DefineCharacter{19968}{4E00}{\begin{CJK*}{Bg5}{bsmi}XXX\end{CJK*}} XXX 是經過 bg5conv 處理過的中文字 因為每個字都用 \begin{cjk*} 和 \end{cjk*} 包住, 所以編譯時會很久 這個做法可能可以在一份文件中用到好幾種編碼的文字 若要加快編譯速度, 就要將 \begin{cjk*} 用在開頭, \end{cjk*} 放在 \endfot{} 之前 這樣可以大幅提昇速度, 但是一份文件裡可能就只能有一種編碼的亞洲文字 還有一種做法是最開始使用 \begin{cjk*}{}{bsmi}, 在每個字定義的地方都用 \CJKenc{Bg5} 來指定編碼, 這樣速度會比第一種快一些 然後在.tex 的開頭加入 \usepackage{cjk,pslatex}\input cjk-char.sty 再進行編譯 下面就是我的步驟,cjk-char.sty 要自行下載 # env SP_ENCODING=Big5 make FORMATS=tex # echo \usepackage{cjk,pslatex}\input cjk-char.sty > zh-tut.tex.2 # cat zh-tut.tex >> zh-tut.tex.2 # mv zh-tut.tex.2 zh-tut.tex # env SP_ENCODING=Big5 make FORMATS=dvi # dvipdfmx zh-tut.dvi 最後用 xpdf 的 pdffont 檢驗 在 type 的地方全都是 Type 1 就沒問題囉 # pdffonts zh-tut.pdf name type emb sub uni object ID Helvetica-Bold Times-Roman Type 1 Type 1 no no no no no no ShanHeiSun-Light CID TrueType no no no 18 0 Courier Helvetica Times-Bold Times-Italic Courier-Bold UJULYZ+CMMI10 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 no no no no no no no no no no no no no no no yes yes no

12 Chapter 1. 前言 DL: cjk-char.sty (http://freebsd.sinica.edu.tw/zh-tut/cjk-char.sty) 1.3. 注意事項 本文中範例的使用以 sh/ bash 為主 若您使用的是 csh/tcsh, 請注意其中的差異 例如對環境變數的設定, 在 sh/bash 中是 % export TERM=vt100 在 csh/ tcsh 中則是 % setenv TERM vt 目標 本文希望能提供在 FreeBSD 系統上使用中文的完整而自足的說明 只要是與 FreeBSD 上使用中文有關的, 我都希望能夠包括進來! 然而, 限於個人智識與能力, 我知道這幾乎是個 " 不可能的任務 " 因此, 有任何的不足或遺漏之處, 請別在意, 儘量告訴我! 1.5. 如何學 BSD? 目前網路文件已經有幾本觀念還算完整的書, 我會建議先閱讀 FreeBSD 使用手冊 (http://freebsd.sinica.edu.tw/docs/cfreebsd/) 和網路農夫 (http://freebsd.sinica.edu.tw/docs/csh) 來獲得一些基本的觀念, GNU/Linux 初探 (http://info.sayya.org/~edt1023/linux_entry.html) 也是十分值得參考的文件之一, 有了基本的觀念後, 就可以進階的閱讀 FreeBSD 入魔手冊 (http://www.study-area.org/2freebsd/2freebsd.htm) 以及王波的 FreeBSD 大全 (http://freebsd.sinica.edu.tw/docs/completed/), 繁體 FreeBSD handbook (http://freebsd.sinica.edu.tw/handbook.php) 從這些文件中, 就可以含蓋從安裝到使用的觀念與用法, 對一個入門 BSD 的人應該是十分足夠的了 如果對任何中文的相關議題有興趣可以參考拙作的 FreeBSD Chinese HOWTO (http://freebsd.sinica.edu.tw/zh-tut.php) 好的文件 (manpage 也算 ) 大多數都是原文的, 需要時間慢慢看, 但是資料也最豐富 完整 如果想要找中文的文件, 您可以用 Google 找看看有沒有寫出中文的 documents: (http://www.google.com/) 用 Google 的時候善用 site: 這個指令, 有時候您只想找中文的資料, 但是您的 keyword 只有英文, 這時候您可以加 site:tw 讓它只找 *.tw 的 site 平常想要找軟體, 我們會到 /usr/ports 底下用 make search key=keyword 找 通常 pkg-descr 會有 Website url, 如果 ports 的軟體不會用, 可以去原來的 site 翻翻看 mailing list 再不行到 Google 再找 handbook 對於基本操作及設定會有很大的幫助, 不過我不認為原文的 handbook 對初學者而言是一個好的開始 WWW: (http://info.sayya.org/~edt1023/linux_entry.html) 3

13 Chapter 2. 以 FreeBSD 建立立中中文 Desktop 的安裝指南 以下是筆者自己在安裝 FreeBSD 時的作法, 並不會適合所有人 在建立中文 Desktop 前, 請先參考 Installing FreeBSD (http://freebsd.sinica.edu.tw/handbook/install.html) 安裝好基本的 FreeBSD 環境, 並設定好網路卡 一般使用者的需求是要能夠在 X Window 下使用中文環境, 所以下面就是建立基本中文環境的做法 當按照下面的中文環境設定好後, 就可以使用 startx 開啟 WindowMaker 美化過後的 X Window, 並使用滑鼠右鍵開啟選單, 先執行 xcin2.5 後, 在執行 rxvt, 這樣子即可在 rxvt 上進行基本的中文顯示與輸入, 這對在 X Window 底下使用 Console 軟體已經十分足夠 2.1. 保持最新的 Ports Tree last update: 2003 年 1 月 27 日周一 04 時 50 分 10 秒 CST Contributed by Gea-Suan Lin 在安裝軟體前, 最好先更新 Ports Tree, 建議先由安裝光碟中選擇 Ports Collection 先安裝好後, 再來更新 Ports Tree, 這樣子更新的時間會比較短 接著設定好 /etc/make.conf ( 若沒有則自行建立 ) SUP_UPDATE= SUP= SUPFLAGS= # yes /usr/local/bin/cvsup -g -L 2 # SUPHOST 代表要到哪台 CVSup, 請改成離您比較近的 Server # cvsup[1-9].tw.freebsd.org SUPHOST= cvsup.tw.freebsd.org # # 如果您是用 -stable, 請用 stable-supfile ( 目前的 -stable 是 4.3) # 如果您是用 -current, 請用 standard-supfile ( 目前的 -current 是 5.0) SUPFILE= PORTSSUPFILE= DOCSUPFILE= /usr/share/examples/cvsup/stable-supfile /usr/share/examples/cvsup/ports-supfile /usr/share/examples/cvsup/doc-supfile # 國內主要的 FreeBSD distfiles mirror 站台 MASTER_SITE_BACKUP?= \ ftp://ftp.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp2.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp3.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp4.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp5.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp7.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp8.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/\ ftp://ftp9.tw.freebsd.org/pub/freebsd/distfiles/${dist_subdir}/ MASTER_SITE_OVERRIDE?= # 在此我是安裝 XFree86-4 XFREE86_VERSION= 4 ${MASTER_SITE_BACKUP} 4

14 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 Note: 可以安裝 sysutils/fastest_cvsup 來檢察那一個 cvsup 最適合你, 安裝完後修改 /usr/local/bin/fastest_cvsup, 把台灣的個數 tw => 3, # Taiwan 改成 tw => 13, # Taiwan, 然後執行 fastest_cvsup -c tw 安裝好基本的 Ports Tree 後, 安裝 cvsup-without-gui: # cd /usr/ports/net/cvsup-without-gui # make install clean 接著就可以進行更新了 : # cd /usr/ports # make update WWW: 如何用 CVSup 去更新你的 source 以及 ports (http://ccca.nctu.edu.tw/~gslin/documents/use-cvsup.txt) 2.2. 時區設定與對時 調整時區, 並對時 # tzsetup /usr/share/zoneinfo/asia/taipei # ntpdate clock.stdtime.gov.tw 請參考時區的設定一節 2.3. X Window 與 Window Manager 安裝 XFree86-4 # cd /usr/ports/x11/xfree86-4 # make install clean # cd /usr/ports/x11/wrapper # make install clean 請參考中文 X Window 一節 2.4. Window Manager 我慣用的 Window Manager 是 windowmaker: # cd /usr/ports/x11-wm/windowmaker # make install clean 設定 windowmaker: # wmaker.inst 5

15 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 wmaker.inst 會根據環境設定產生所需的檔案, 並且產生 ~/.xinitrc, 裡面會有基本的起始設定, 或是手動編輯 ~/.xinitrc 與 ~/.session: exec wmaker 在裝完 windowmaker 後就可以用 startx 來啟動 X 了 由於 rxvt 在 XIM 的部份設定有問題, 如果關閉 WindowMaker 時, 先關閉了 xcin, 會造成 rxvt Core Dump, 所以筆者都會修改 ~/GNUstep/Library/WindowMaker/exitscript, 在最後加上 ps grep rxvt awk {print $1} xargs kill -9 請參考 WindowMaker 的中文化一節 2.5. 文鼎 TTF 與國喬 PCF 字型 安裝字型 : # cd /usr/ports/chinese/arphicttf # make install clean # cd /usr/ports/chinese/kcfonts # make install clean 接著編輯 /etc/xf86config, 在 Section "Module" 區段, 加入 Load "xtt" Section "Module" Load Load Load Load Load Load Load Load Load Load Load EndSection "dbe" "dri" "extmod" "glx" "pex5" "record" "xie" "xtrap" "speedo" "type1" "xtt" 在 Section "Files" 區段, 加入 FontPath "/usr/x11r6/lib/x11/fonts/truetype/" 與 FontPath "/usr/x11r6/lib/x11/fonts/local/" Section "Files" RgbPath ModulePath FontPath FontPath FontPath FontPath FontPath FontPath FontPath EndSection "/usr/x11r6/lib/x11/rgb" "/usr/x11r6/lib/modules" "/usr/x11r6/lib/x11/fonts/misc/" "/usr/x11r6/lib/x11/fonts/speedo/" "/usr/x11r6/lib/x11/fonts/type1/" "/usr/x11r6/lib/x11/fonts/75dpi/" "/usr/x11r6/lib/x11/fonts/100dpi/" "/usr/x11r6/lib/x11/fonts/truetype/" "/usr/x11r6/lib/x11/fonts/local/" 6

16 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 請參考中文輸出字型一節 2.6. 設定 locale 安裝 auto-tw-l10n: # cd /usr/ports/chinese/auto-tw-l10n # make install clean 安裝完, 在 /usr/local/share/skel/zh_tw.big5/ 目錄底下會有許多的參考設定, 最簡單就是編輯 ~/.cshrc: setenv setenv LC_CTYPE LANG zh_tw.big5 zh_tw.big5 或是採用 auto-tw-l10n 的設定 # cat /usr/local/share/skel/zh_tw.big5/dot.cshrc >> ~/.cshrc # cat /usr/local/share/skel/zh_tw.big5/dot.xdefaults >> ~/.Xdefaults # cat /usr/local/share/skel/zh_tw.big5/dot.gtkrc >> ~/.gtkrc 請參考中文 locale 的設定一節 2.7. 中文輸入與終端機 安裝 xcin25 與 rxvt: # cd /usr/ports/chinese/xcin25 # make install clean # cd /usr/ports/chinese/rxvt # make install clean 接著編輯 ~/.cshrc, 加入 setenv XMODIFIERS 讓大部份軟體都可以知道你有安裝了 xcin 這樣子的 XIM 並且我會修改 xcinrc 的部份設定, 先 chmod 644 /usr/x11r6/etc/xcin 後, 修改其內容, 把 DEFAULT_IM 改成 chewing, 並且把預設的字型大小 24 改成 16 rxvt 的設定可以參考 auto-tw-l10n 安裝在 /usr/local/share/skel/zh_tw.big5/dot.xdefaults, 或是將該檔案拷貝到 ~/.Xdefaults 請參考中文的顯示與輸入一節 2.8. 瀏覽器 Mozilla, 基本上 Mozilla 發展那麼久了, 很多功能, 中文化介面, 網頁排版都是相當完善的 # cd /usr/ports/www/mozilla 7

17 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 # make install clean 並且到 (http://themes.mozdev.org/) 下載 ORbit 3+1, (http://themes.mozdev.org/themes/orbit.html) 的網頁中, 可以選擇安裝模式或是檔案模式, 安裝模式就是在 Mozilla 底下點選就可以安裝, 檔案模式可以自行下載後, 在透過 Mozilla 的功能來匯入 請參考 Mozilla 繁體中文語言包一節 2.9. 郵件用用戶戶端 Mozilla-mail, 不但可以完全擺脫 MS 下的讀信中毒問題, 功能根本沒有任何缺少 沒事還可以定一兩個 news-group 來看看, 而且自己整理好的文章或是信件, 也可以單獨移出 ( 變成一個文件檔案 ), 不會像 outlook 常常會因為移轉信件花很多精神 此應用軟體在 Mozilla 裝好後就可以使用 彩色的 ls 雖然預設的 ls 能看到中文和彩色, 不過我還是偏好使用 gnuls,gnuls 的安裝 : # cd /usr/ports/misc/gnuls # make install clean 安裝完後, 在 ~/.cshrc 增加一行 alias ls gnuls --color=auto --show-control-chars, 讓 gnuls 的顏色和中文功能啟動 請參考 gnuls - 特殊中文檔名和目錄的顯示一節 Telnet 當需要遠端輸入中文時, 就會需要這樣子的軟體 # cd /usr/ports/chinese/telnet # make install clean 然後在 ~/.cshrc 裡面加上 alias telnet zh-telnet 請參考 telnet 的中文問題一節 MP3 Player xmms, 中文的曲名都可以看到 # cd /usr/ports/chinese/xmms # make install clean 8

18 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 然後去 (http://www.xmms.org/skins.html) 找一下喜歡的 SKIN 吧, 我常用的 SKIN 有 Winamp X (XMMS version) v1.01 (http://www.xmms.org/scripts/skins.php?dl=86), 下載下來後, 將該檔案拷貝至 ~/.xmms/skins 就可以了 請參考 xmms - mp3 播放器一節 Media Player, 支援 vcd dvd DivX mplayer, 中文字幕都支援 # cd /usr/ports/chinese/mplayer-fonts # make WITH_GUI=yes install clean 當然要裝一下 SKIN 才會漂亮 : # cd /usr/ports/multimedia/mplayer-skins # make BATCH=YES WITH_SKIN_ALL=yes install clean 請參考 mplayer 一節 PDF Reader xpdf, 設定一下中文取代字型, 就可以看到大部分的中文 PDF # cd /usr/ports/chinese/xpdf # make install clean 請參考中文 PDF 的顯示一節 DOC Reader Abiword, 也是設定一下中文取代字型, 就可以看到大部分的中文 DOC # cd /usr/ports/editors/abiword # make install clean 請參考 Abiword 文字編輯器一節 FTP Client 我常用的有 fetch, wget, ncftp3, IglooFTP, 前三個是文字介面使用的, 最後一個在 X 底下, 以下是安裝 : # cd /usr/ports/outta-port/wget # make install clean 9

19 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 # cd /usr/ports/ftp/ncftp3 # make install clean # cd /usr/ports/ftp/iglooftp # make install clean 由於 wget 的中文有點問題, 所以目前都用 outta-port 在安裝 MSN Messeger 我使用 gaim 來當作我慣用的 MSN Messenger, 不過我都會小心的把 panel 的部份 comment 掉, 使用 gnome panel 很不方便, gaim 的安裝 : # cd /usr/ports/net/gaim # make install clean 進入後, 中文字體在接收訊息的部份會有問題, 工具 -> 偏好設定 -> 交談 -> 忽略字型, 這樣子作就可以解決了 如果遇到顯示字型過小的問題, 檢察一下 ~/.gtkrc, 通常我的字型都是設 16 請參考 gaim - ICQ, MSN clone 一節 使用其他字型作為預設字型 last update: 2003 年 1 月 25 日周六 12 時 54 分 03 秒 CST 不得不承認現在的文鼎字型不如細明體, 以下介紹將預設字型設定成細明體的方式 首先要有 mingliu.ttc, 將該字型拷貝到 /usr/local/share/fonts/truetype/ 下, 然後用 ttfm 安裝該字型 : # ttfm.sh --add xttfm /usr/local/share/fonts/truetype/mingliu.ttc 關於英文字距的問題, 可以修改 /usr/x11r6/lib/x11/fonts/truetype/fonts.dir, 檢察有 mingliu.ttc 那些列, 把字型倒數第三個欄位是 m 的, 改成 p, 並且在字型的開頭加上 fn=1:, 例如 mingliu.ttc -DynaLab-MingLiU-medium-r-normal m-0-iso 要改成 fn=1:mingliu.ttc -DynaLab-MingLiU-medium-r-normal p-0-iso 接著是根據每個軟體來修改, 在 gtk 系列的軟體, 可以修改 ~/.gtkrc, 在英文字型後, 第一個加上 -DynaLab-MingLiU-medium-r-normal--16-*-*-*-c-*-big5-0, 就可以了 WindowMaker 則是修改 ~/GNUstep/Defaults/WindowMaker, 把所有包含 Font 的設定加上,-DynaLab-MingLiU-medium-r-normal--16-*-*-*-c-*-big5-0, 這邊的 16 要根據前面 Font 的字型大小設定, 設定完後, 重開 X 就可以了 Mozilla 修改字型可以進入選單後修改, Edit -> Preference -> Appearance -> Fonts, Fonts for: 選擇 Traditional Chinese, 然後把字型都選擇成 dynalab-mingliu-big5-0 就可以了 10

20 Chapter 2. 以 FreeBSD 建立中文 Desktop 的安裝指南 xpdf 則是修改 /usr/x11r6/etc/xpdfrc, displaycidfontx Adobe-CNS1 "-dynalab-mingliu-medium-r-normal--%s-*-*-*-c-*-iso " UCS-2 就可以了 11

21 I. 中文環境

22 Chapter 3. 中文環境 3.1. 中文編編碼碼標準 在電腦開始使用的時候, 所有的字都只用 1byte 來儲存, 1byte 包含 8bits, 每個 bits 都只能表示 on/off, 也就是 1byte 只能表示 到 的編碼範圍, 只有 256 個編碼空間, 這對中文而言, 是不夠的 我們知道中文字在目前常見的電腦上是由兩個位元組 (two bytes) 所編碼組成的 最常見的編碼方式有台灣地區所通行的 Big5 編碼, 及大陸地區所使用的 GB 編碼 而且開頭的位元組幾乎都是大於 128 的數值, 也就是所謂 non-ascii 碼的範圍 (ASCII 是指小於 128 的編碼 ) 字集 (Character Set) 是一組符號或文字的組合, 而編碼 (Encoding) 則是將這一組符號或文字以適當的方式編入位元組中, 以便電腦能夠表示與儲存 目前現有的字集如中文字集 英文字集 日文字集等, 而中文編碼則是選取部份或全部字集中的部分或全部字, 給予一個號碼, 如 Big5 包含部分中文字集 英文字集 部分日文字集等 接下來就是萬碼奔騰, 眾多中文編碼標準的問題, 目前台灣使用的中文編碼存在許多問題, 第一是中文編碼有數種 Big5 CCCII CNS11643 Big5E Big5+ ISO CP950, 每個編碼所包含的中文字數不同, 編碼方式也不相同, 而且大部分都沒有標準規格, 第二是常用的 Big5 編碼字數不足 雖然常用的 Big5 已經使用 2bytes 來表示中文字, 但是 2bytes = 16bits = 2^16 = 個編碼空間, 以 Big5 的標準而言, 為了要和 ASCII 能夠相容, 只能使用兩萬多字, 現存的中文字最少在七萬以上, 造成許多字在 Big5 的系統下, 無法使用 在加上中文標準繁多, 卻又沒有最後的標準規格, 各家廠商所實做產品也就未必相容 最明顯的例子就是日文平假片假名, 在這些中文編碼中並不是每個都包含, 當遇到所謂的 Big5 日文 時, 就會產生許多問題 Big Five 如不去考慮特殊符號, 及後來的七個擴充字, TW-BIG5 的排序方式如下 : 將所有的字分成兩大群 : 常用字區與次常用字區 每一個字區分別用筆畫來排序 同一個筆畫的字, 依部首來排 TW-BIG5 每個字由兩個位元組組成, 其第一位元組編碼範圍為 0xA1... 0xF9, 第二位元組編碼範圍為 0x x7E 與 0xA1... 0xFE, 總計收入 個字 ( 包括 5401 個常用字 7652 個次常用字 7 個擴充字 以及 808 個各式符號 ), 其中可以大致劃分為以下幾個字區 : Table 3-1. TW-BIG5 字區與編碼範圍 第一位元組 第二位元組 字區 制定 A1..A E, A1..FE 各種符號區 1984 A E, A1..BF 各種符號區 ( 包括標點符號 ASCII 全形符號 注音符號等 )

23 Chapter 3. 中文環境 第一位元組 A3 A4..C5 C6 C6 C7 C8 C9..F8 F9 F9 F9 第二位元組 E E, A1..FE 40..7E A1..FE 40..7E, A1..FE 40..7E, A1..D E, A1..FE 40..7E, A1..D5 D6..DC DD..FE 字區 歐元符號 常用字區 常用字區 罕用符號區 制定 CP 倚天 罕用符號區 ( 包括日文 俄倚天文等 ) 罕用符號區 ( 包括俄文 輸倚天入法特殊符號等 ) 次常用字區 1984 次常用字區 七個擴充字 表格符號區 1984 倚天 倚天 Table 3-2. 七個擴充字 擴充字 BIG5 碼 Unicode 碼 BIG5_1984 的同義字 ER 0xF9D6 0x88CF 棋 ER 0xF9D7 0x92B9 鏽 ER 0xF9D8 0x7CA7 裡 ER 0xF9D9 0x58BB 牆 ER 0xF9DA 0x6052 恆 ER 0xF9DB 0x7881 妝 ER 0xF9DC 0x5AFA 嫻 CNS11643 CNS11643 中文標準交換碼, 一般簡稱 CNS 碼或 CNS11643, 因中央標準局 (http://www.cns11643.gov.tw/) 公佈及修訂之先後而有二個版本, 一般稱為 CNS 版 (1986 公告版 ) 及 CNS 版 (1992 年修訂版 ), 此二個版本之差異僅在於其所編定之字數不同 75 年公告之 CNS11643 定義 13,051 個漢字,81 年修訂版擴編為 48,027 個漢字 75 年公告之 CNS11643 名稱為 通用漢字標準交換碼, 於 81 年擴充後修訂 CNS11643 名稱為 中文標準交換碼 兩個電腦系統要交換資料時, 以兩方皆認可之碼傳輸, 此稱為交換碼, 交換碼之設計須符合國際標準 因此一般在電腦內部處理時使用內碼, 而在傳輸時, 再轉換為標準交換碼 WWW: (http://www.cns11643.gov.tw/) GB 在中國, 中文信息編碼由政府負責制定並監督實施 這是為了保證對於所有的系統中文的編碼都是一致的, 能夠互相進行操作 從計算機的應用開始, 已經頒布了多種中文信息編碼標準, 常用的是 14

24 Chapter 3. 中文環境 GB ,GB12345,GB13000(GBK), 以及最新標準 值得一提的是, 最新的 GB18030 標準將要作為強制標準實行, 所有不支持 GB18030 標準的軟體將不能作為產品的出售 從 GB 編碼開始, 漢字都是採用雙字節編碼 為了與系統中基本的 ASCII 字符集區分開, 所有漢字編碼的每個字節的第一位元都是 1 例如:" 啊 " 字的編碼為 0xB0A1 Table 3-3. GB 的漢字編碼規則 第四個字節 編碼 第一個字節 第二個字節 第三個字節 GB2312 0xB0-0xF7 0xA0-0xFE GBK 0x81-0xFE 0x40-0xFE GB18030 的雙字節 0x81-0xFE 0x40-0x7E, 0x80-0xFE GB18030 的四字節 0x81-0xFE 0x30-0x39 0x81-0xFE 0x30-0x Unicode/ISO Unicode (Universal Multiple Octet Coded Character Set), Unicode 國際標準組織於 1984 年 4 月成立 IOS / IEC JTC1 / SC2 / WG2 工作組, 針對各國文字 符號進行統一性編碼,1991 年美國跨國公司成立 Unicode Consortium, 並於 1991 年 10 月與 WG2 達成協議, 採用同一編碼字集 目前 Unicode 是採用 16 bit 之編碼架構, 其字集內容與 ISO 之 BMP(Basic Multilingual Plane) 相同 Unicode (Unicode Consortium) 並於 1992 年 6 月通過 DIS(Draft International Standard), 目前版本為 Unicode v2.0 於 1996 年公佈, 內容包含符號 6811 漢字 韓文拼音 造字區 6400, 保留 共 個碼位 目前碼位空間為 U+0000 到 U+10FFFF, 共有 1,114,112 個空間 Unihan3.2 包含超過七萬個 CJK 字 ISO HK WWW: (http://www.iso10646hk.net/) WWW: (http://www.unicode.org/) 3.2. 基本本中中文環境的要件 先讓我們一起來想一想, 一個基礎中文平台要能夠做到那些事情, 不妨就以編輯一份文件為例吧 ( 像我現 在在這邊寫稿一樣 ), 我們希望開啟的程式可以有友善的介面, 有中文的選單跟說明 ( 中文訊息 ), 還要有慣用的中文輸入法可以把中文打進去 ( 輸入 ), 打字進去以後必須可以看到輸入的結果 ( 顯示 ), 打字出錯了還要可以修改才行, 必要的時後還得可以改變字型等等的 ( 處理 ), 文章打完了, 要能夠順利的把結果印出來 ( 列印 ); 從這一個例子裡面我們就可以歸納出一個基本中文環境, 應該要可以做到下面這幾件事情 : 中文的訊息 中文的顯示 中文的輸入 中文的列印

25 15

26 中文的處理 Chapter 3. 中文環境 上面的列表就是我們認為一個基本中文環境所要滿足的要件, 也是我們在評估一個系統中文支援優劣時所用的基準, 其實所謂的 " 中文化 ", 代表的就是在作為基礎的英文版作業系統上面, 做出修正的工作, 目的不外是要能夠滿足上面所提到的這些要件罷了, 這個列表的順序剛好是依照程式設計加以支援的困難程度排出來的, 順序是從簡單到困難 ; 提供中文的訊息跟介面所牽涉到的大多只是翻譯的工作, 最為簡單, 在顯示時要考慮到字型的搭配問題, 在輸入時要有一個程式之間共用的輸入介面, 這些就比較困難, 而列印不只要作到應用程式跟列印伺服程式之間的整合, 還需要有產生大點數美觀字體的能力, 這件工作牽涉的問題更加複雜了, 這幾點裡面要讓應用程式處理中文是最困難的一部分, 例如中文正規表示法 中文字串搜尋等等, 都是目前還難以解決的課題 那麼, 在目前的 FreeBSD 環境底下, 要用甚麼方法才可以讓系統支援上面提到的這些基本要件呢? 3.3. 國際化與中中文文化 要讓系統支援中文, 可能的解決方案不出三種, 一是使用外掛式的中文系統, 二是撰寫獨立的中文程式, 三是利用系統上提供的國際化架構來支援 所謂的外掛式中文環境, 指的是如同 DOS 底下的倚天中文或者 Windows 底下的雙橋中文這樣的系統, 在 FreeBSD 系統底下, 外掛式的中文環境可以藉著 LD_PRELOAD 的機制來達成, 只要設定 LD_PRELOAD 這個環境變數, 適時的指到提供中文支援的動態函式庫去, 就可以在程式執行時, 動態的用支援中文的函式來替換掉原本不支援中文的函式, 結果就可以讓不支援中文的程式變得可以顯示中文跟接受中文輸入了, 例如 xa+cv 或者是在 TurboLinux 裡面使用的 zhwinpro 都是屬於這類的程式 利用這種方式來提供中文的支援很簡單, 很靈活, 也不需要去修改程式的原始碼並重新編譯, 可是這個方法卻沒辦法讓應用程式對中文作正確的 " 處理 ", 常見的例子是雖然加上了外掛的中文系統, 可是編輯文字時在中文字上面按一次刪除鍵卻還是只能刪除半個中文, 這是因為在應用程式內部仍然是把一個中文字當成兩個英文字來看待, 而這顯然是不正確的, 此外這個方式也不支援跟函式庫作靜態連結的程式, 還控會造成系統的不穩定, 因此大家已經理解到這個方式無法解決根本問題, 漸漸的捨棄這種外掛的方式, 而用其他的方法提供中文支援了 第二種方式是修改程式, 直接讓每個程式都支援中文的使用, 這種是最簡單也是最困難的方法, 說它簡 單, 因為這件工作很直接, FreeBSD 底下的程式又大多數都可以拿到程式的原始碼, 只要對這些原始碼作修正, 加入支援中文的部份, 就可以支援中文的使用囉, 例如很多人使用的中文 cpine 郵件程式就是用英文版 pine 的原始碼改出來的, 其他如 cxterm 程式或者支援多種語言的 emacs 等等程式都是由應用程式自行提供中文支援的, 這些程式對中文的支援很好, 也都受到了大家的歡迎愛用, 可是, 使用者一旦離開這些有提供中文支援的程式以後就無法用中文了, 一個 FreeBSD 套件少說有五六百個程式套件, 想要全面的中文化, 必須要一個一個完整的對這些程式做出修改才行, 這件工作在人力跟物力上都會是一個天文數字的投資, 是不可能的事情, 所以我們前面說這也是最困難的方法 :) 況且, 因為編碼系統不一樣, 這些程式拿到日本就要改一次日文版, 拿到韓國也要再改一次韓文版, 這種作法會使得資源重複浪費的部份十分嚴重, 由此可見, 靠獨立的程式來提供中文環境並不是個聰明的作法, 必須要有更好的方式才行 那麼甚麼才是這個更好的方式呢? " 國際化 " 可能是目前我們找得到的最好解答, 國際化的英文名稱是 InternationalizatioN, 這個英文單字的第一個字母 I 與最後一個字母 N 之間有 18 個字母, 所以也被簡稱為 I18N I18N 是一種觀念跟目標, 這個想法是要提供一個架構, 讓同樣的程式碼可以適用在各種語文習慣跟編碼系統上面, 程式設計人員只要利用這個架構的機制跟準則撰寫應用程式, 就可以在不需重新編譯程式的情況下, 自然的支援各式各樣的語言, 不過為了要達成這樣的目標, 作業系統必須提供一定程度的支援, 特別是在各種的程式庫裡面都得有支援 I18N 的設計才可以, 這邊特別重要的就屬 C 程式庫以及 X 視窗系統的國際化設計了 過去,FreeBSD 上的 C 程式庫跟 X 對國際化的支援都不完整, 整個基礎環境還不成熟, 所以多數的程式並沒有照著 I18N 的標準來撰寫, 導致中文化的問題困難重重, 這個現象在這一年來已經有了大幅的改善, 目前國際上大家寫程式的時候已經有支援 I18N 的普遍共識了, 主流的程式也都漸漸提供了 I18N 的支援, 利用標準的 FreeBSD 國際化架構來支援中文還是要改程式, 不過這個改法是國際的 16

27 Chapter 3. 中文環境 主流, 也可以保證投資可以有最大的獲益, 所以我們認為這才是建構中文環境的正途, 在後續的文章裡面我們將會一一跟大家介紹目前 FreeBSD 底下 I18N 環境的實作方法, 以及設計 I18N 程式所該注意的事項 一般國際化架構設計的基本原則, 是把程式處理會跟語文編碼相關的部份獨立出來, 這些資料不只是編碼系統的定義, 還包括該語文下的一些使用習慣, 例如數字 日期 排序 貨幣的格式, 以及翻譯的訊息等等... 這些跟語文環境有相關的資料, 我們稱之為 " 區域環境資料庫 " (locale database,localization Environment database), 把這些資料分離出來以後, 就可以定義一個跟語文編碼無關的介面, 給程式設計師使用, 讓程式設計人員在設計程式時不必考慮, 對特定語文環境提供支援的細腹 A 寫出來的程式就可以不限於支援特定語言, 而是在程式執行的時候才依使用者的選擇的區域環境 (locale) 聯繫到不同的資料庫, 進而提供該語文的支援 I18N 只是提供可能用來支援中文的大架構, 要能夠使用中文, 還必須要在這個架構裡面加入對中文語文編碼的支援才可以, 這個在國際化架構之下加入對某種特定語文支援的動作稱為 " 區域化 ", 英文稱為 LocalizatioN, 因為 L 跟 N 之間有 10 個英文字母, 也常被簡稱為 L10N, 一般的 " 中文化 " 是泛指為應用程式加上中文支援的過程, 不過我們這邊提到的中文化, 事實上就是在國際化架構下面加入中文區域化支援的工作 ; 就目前的 FreeBSD 環境而言, 當前在 FreeBSD 上用來提供中文支援的國際化架構可說是已經大致完備, 底層程式庫的中文區域化工作也都大致完成了, 在這個架構之上已經可以提供一個不錯的中文環境可以用了, 說起來, 我們能有今日的中文環境可用, 實在要感謝這些國際性程式開發組織 (XFree86) 有心重視亞洲語系使用者的需求, 此外, 長久以來許許多多網路上自由軟體作者的貢獻也是功不可沒, 正就是因為有這許多前人不計個人報酬的努力, 我們才能享受當前的中文環境 3.4. 可能的問題 許多程式由於各式各樣的原因, 並未考慮到輸入的資料可能是 non-ascii 碼的問題 它往往假設了它所要處理的資料都是 ASCII 碼, 更糟糕的是, 當它遇到 non-ascii 碼時, 常常假設它不存在, 而將它的第八個位元截去! 這是所謂的 8-bit clean 問題 例如, 您的 telnet 程式總是認為您輸入的都是七位元的 ASCII 碼 當您輸入中文時, 每每將第八位元砍掉, 所以都變成亂碼 網路上的通訊程式也常常只能傳輸七位元的資料 較早期的 sendmail 程式就是惡名昭彰的例子 sendmail 只能接送含七位元的信件, 導致我們在傳送中文信件時, 必須採用各式各樣奇怪的編碼格式 ( 如 uuencode,base64,qp 等 ), 這往往又為收信者帶來很大的困擾! ( 我常在想如果當初電子郵件的創造者能多一點點的遠見, 我們今天就會少許多的問題!) 在網路上這個問題顯得更為複雜 即使您和您的收信人的機器都已經安裝了可以處理中文信件的 sendmail 程式, 對方仍有可能收到亂碼信件 因為這封信在到達對方手中前可能經過好多部主機, 如果其中一部機器的 sendmail 將第八位元截去, 事情就完了! 對於 client/server 架構的程式, 問題可能出在 client 端, 也可能是在 server 端, 或是雙方都有 除了無法處理 non-ascii 碼資料的問題之外, 應用程式無法辨識中文編碼也是一大問題 也就是, 很多程式 ( 即使能正確處理八位元的資料 ) 都將一個中文字視為兩個獨立的位元組 這在許多情況下不會有什麼不好, 但在某些場合下就顯得很糟! 最顯然的例子, 即使您能正確的輸入中文, 可是當您按下倒退鍵 (backspace) 時, 往往只倒後了一個位元組而將一個好好的中文字截成兩半, 剩下的那半當然就成了亂碼 還有, 文書編輯器可能在一個中文字中間換行而導致出現亂碼, 或是將一行很長的中文句子當作一個很長的英文字母而不換行, 使得畫面變得很難看 還有更糟的! 某些中文字所含的特殊內碼對某些應用程式具有特別的意義, 這導致程式遇到這些內碼時將產生嚴重的錯誤, 或是當掉 17

28 Chapter 3. 中文環境 下面將試著為這些問題提出一些解決之道, 但是這仍是片面的, 不完全的, 而且不能令人滿意 也許只有當所有的軟體都能為中文量身打造時問題才可能真正的解決 話雖如此, 愈來愈多的程式在設計上已經注意到國際化的問題, 例如現在大部分主機的 sendmail 程式都已經能正確處理 8-bit 的信件 --- 因為不僅僅是傳輸中文信件需要 8-bit, 現在很多的多媒體郵件也都需要用 8-bit 傳送 很多軟體已經完全不需修改, 或者只要開啟一些特殊的選項, 就能使用中文 同時也有愈來愈多人正在為軟體的中文化而努力 且讓我們拭目以待 3.5. 什麼是 locale? locale 是一組 C 程式語言處理自然語言 ( 文字 ) 的程式介面, 也可以簡單的說,locale 就是一組 [ 地區性語言 ] 的資訊 由國家語言和各地習俗影響所決定的慣例, 或代表一個地理區域的定義所組成, 這些慣例包含文字 日期 數字 貨幣格式和排序等等 這代表著 locale 可讓程式的輸出可以直接反應地方區域性的文化 C 語言的 locale 定義, 分為下列各大類 : LC_ALL 代表所有的 Locale LC_CTYPE 字元定義 ( 包含字元分類與轉換規則 ) LC_MESSAGES 訊息顯示 LC_TIME 時間格式 LC_NUMERIC 數字格式 LC_MONETARY 貨幣格式 LC_COLLATE 字母順序與特殊字元比較 其中與一般使用者息息相關的, 是字元定義 (LC_CTYPE) 與訊息顯示 (LC_MESSAGES) LC_CTYPE 直接關係到某些字元或內碼在目前的 locale 下是否可列印? 要如何轉換字碼? 對應到哪一個字?... 等等 LC_MESSAGES 則關係到軟體的訊息輸出是不是符合地域性, 例如 : 我們需要的是中文 而一個真正完整支援 locale 系統, 是當使用者在 shell prompt 下, 直接設好環境變數後, 則馬上就能切換到那個語言了 例如 : % setenv LC_CTYPE zh_tw.big5 locale 命名規則 : 語言 _ 地區名. 字元編碼名稱 設定 Locale 的字元定義為台灣地區的 Big5 繁體中文碼定義, 有了正確的 locale 的定義後, 使得任何地區的語文, 只要在加入適當的 locale data 之後,C Library 就能正確地處理軟體顯示訊息, 而我們使用的 [ 中文 ] 當然也不例外, 而目前中文使用的 locale data 就是 zh_tw.big5, 代表的就是中文語系 (zh) 台灣地區 (TW) 使用 Big5 編碼系統 (Big5) 18

29 Chapter 4. 中文 X Window X Window 系統是 UNIX 下強而有力的圖形環境 XFree86 由 MIT X Window 系統 X11R6 改版而來, 它是免費的 完整中文化 X Window System 中文的訊息 : 由 locale messages 解決 中文的顯示 : 由 I18N 解決 中文的輸入 : 由 xcin 解決 中文的列印 : 由 gscjk 解決 中文的處理 : 由系統底層的 C Library(libc) 與 X Library 的 locale 環境與 I18N 標準以及軟體的配合解決 建立 I18N 的環境 安裝中文字型 設定 Shell locale 環境 安裝 XIM 中文輸入程式 基本上只要安裝完 X Window 後, 再安裝中文字型, 這樣子就可以看到 X Window 的中文了, 而再安裝 xcin2.5 就可以輸入中文, 剩下的就選自己所偏好的軟體來安裝囉 4.1. XFree86-4 x11/xfree86-4 的安裝 : # cd /usr/ports/x11/xfree86-4 # make install 先用 XFree86 -configure 產生 XF86Config.new, 然後用 XFree86 -xf86config XF86Config.new 來測試這個檔案能不能正常的運作, 如果可以的話, 就 mv XF86Config.new /etc/x11/xf86config, 然後依照以下的方式繼續做下去 # XFree86 -configure # mv XF86Config.new /etc/xf86config 由於筆者通常使用三鍵滑鼠, 所以會設定一下, 接著編輯 /etc/xf86config, 在 Section "InputDevice" 區段, 加入 Option "ZAxisMapping" "4 5" Section "InputDevice" Identifier Driver Option Option Option EndSection "Mouse0" "mouse" "Protocol" "MouseSystems" "Device" "/dev/sysmouse" "ZAxisMapping" "4 5" 19

30 Chapter 4. 中文 X Window 通常都需要指定 HorizSync 和 VertSync 才能讓解析度設定的高一點, 在 Section "Monitor" 區段, 加入 HorizSync 與 VertRefresh Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" HorizSync VertRefresh EndSection 我通常都用 16bpp 和 1024x768 的螢幕, 在 Section "Screen" "Display" 中, Depth 16 的地方加上 Modes "1024x768" 區段, 加入 DefaultDepth 16, 並在 SubSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 16 SubSection "Display" Depth Modes EndSubSection EndSection 16 "1024x768" WWW: (http://www.xfree86.org/) 4.2. 使用字型 要在 X 底下看中文, 就必須先設定好你要的字型, 目前 X 取用字型主要有兩種方式, 一種是傳統的 XLFD, 利用 X 內建的 freetype 模組或是 xtt 模組來讀取字型, 或是直接取用 Font Server 的字型, 另一種則是目前流行的 fontconfig 通常筆者都會同時設定這兩種字型取用的方式, 雖然 fontconfig 在 KDE3 與 GNOME2 廣泛的被使用, 但是仍然有許多軟體只支援 XLFD 的取用方式, 兩者都加以設定可以避免許多問題, 如果確定您所使用的所有軟體都支援 fontconfig, 那麼只設定 fontconfig 也是可以的 WWW: Fonts in XFree86 (http://www.xfree86.org/~dawes/4.3.0/fonts.html) XLFD, fontset last update: 2003 年 1 月 20 日周一 10 時 25 分 06 秒 CST -kc-fixed-medium-r-normal-* c-160-big5-0 - 廠商名稱 - 字體種類 - 字體粗細度 - 字體傾斜度 - 字體寬度 - 附加型式 - 像素大小 - 點數大小 - 水平解析度 - 垂直解析度 - 字距 - 平均寬度 - 字型集 廠商名稱 (Family): 提供該字型的廠商名稱, 如 Arphic( 文鼎 ) kc( 國喬 ) 字型種類 (Foundry): 該字型所屬的類型 20

31 Chapter 4. 中文 X Window 字體粗細度 (Weight): 字體的粗細程度, 如 medium( 適中 ) bold( 粗體 ) 字體傾斜度 (Slant): 字體的傾斜程度, 如 r( 不傾斜 ) o( 傾斜 ) i( 傾斜並且具有較奇特變化 ) 字體寬度 (Monospaced/fixed): 字體的寬度, 如 normal( 正常 ) condensed( 最窄 ) semicondensed( 稍窄 ) 附加型式 (Proportional): 字體額外的格式, 如 sans( 無 ) medium( 適中 ) 目前大部分字體均已不用此欄位 像素大小 (pixels): 用像素來表示字體大小 點數大小 (points): 用點數來表示字體大小 10 個點數等於 1 個像素 水平解析度 (resolution): 字體的水平解析度 ( 每英吋的點數 ), 如 垂直解析度 (resolution): 字體的垂直解析度 ( 每英吋的點數 ), 如 字距 (spacing): 字體的間隔, 如 p( 依比例大小 ) m( 固定大小 ) c( 以前打字機時代所用的間隔, 目前已經少用 ) 平均寬度 (average width): 此字體所有字的平均寬度, 以點數為單位 字型集 (character set): 此字體所採用的字型集 如 big5-0 iso WWW: (http://www.x-docs.org/xlfd/xlfd.pdf) xtt Module 要使用 xtt Module 必須修改 XF86Config, 幫他加上新的 FontPath, 因為 ports 會將中文 TrueType 安裝到 /usr/x11r6/lib/x11/fonts/truetype/, 而且把中文 PCF 安裝到 /usr/x11r6/lib/x11/fonts/local/: Section "Files" : : FontPath FontPath EndSection "/usr/x11r6/lib/x11/fonts/truetype/" "/usr/x11r6/lib/x11/fonts/local/" 以及讓 X 去使用 xtt 模組, 如果在模組區發現已經有設定 Load "freetype", 請將該行刪除, 因為這兩個模組是互斥的 : Section "Module" : : Load EndSection "xtt" 最後再透過 ttfm 來安裝新字體就可以了 是不是一定要 xtt 模組才能使用中文 TrueType? 答案不是 freetype 模組也可以用來處理中文, 但是兩者只能選一個, 而 xtt 是專為 CJKV 字型而設計產生的 TrueType 處理模組, 其中 TTCap 選項所提供的功能更是中文 TrueType 所不能或缺的 對 TTCap 而言, 他的語法是擴充 fonts.dir 來提供更多的選項, 例如 : ds=y:ai=0.3:bsmi00lp.ttf -Arphic-AR PL Mingti2L Big5-bold-i-normal c-0-iso

32 Chapter 4. 中文 X Window 最前面的 ds=y:ai=0.3: 就是 X-TT 擴充的部份 在這個例子中, 文鼎明體的名稱是 bsmi00lp.ttf, ds=y(double Strike) 使用粗體, ai=0.3(automatic Italic) 使用斜體, 所以相對應的產生 -bold-i- 的文鼎明體粗斜體字型 常用的還有 fn=integer 來指定 TrueType Collection(.ttc) 檔案的 face 號碼, 像是目前處理 mingliu 就是跳過固定寬的細明體, 而改採用直接指定變動寬的新系明體 fn=1 WWW: (http://x-tt.sourceforge.jp/) fontconfig fontconfig 安裝完後的設定檔在 /usr/x11r6/etc/fonts/fonts.conf, 基本上不太會需要改動該檔案, 如果要加東西則是另外寫在 /usr/x11r6/etc/fonts/local.conf 使用 fontconfig 只需要將字型檔拷貝到 fonts.conf 所指定的目錄下, 通常筆者都會建立 /usr/x11r6/lib/x11/fonts/truetype, 然後執行 fc-cache -f -v 來建立字型資料庫, 也可以用 fc-list 來取得已經建立的資料 # fc-cache -f -v : fc-cache: "/usr/x11r6/lib/x11/fonts/truetype": caching, 8 fonts, 0 dirs : fc-cache: "/root/.fonts": no such directory, skipping fc-cache: succeeded # fc-list grep Big5 AR PL KaitiM Big5:style=Regular AR PL Mingti2L Big5:style=Reguler 4.3. 中文 locale 的設定 當一個程式啟動時, 系統會預設給它一個初始 locale, 稱為 POSIX 或 C locale 在此 locale 下, 程式的表現 會與傳統的 C 語言中一樣, 使用英文做訊息輸出, 只能處理英文等 ASCII 碼等等 如果該程式有支援 I18N, 也就是說它有按照 I18N 的標準來寫, 則它在啟動後就會馬上呼叫系統函式來改變它的 locale, 如此它就搖身一變, 變成可以處理該 locale 所代表的地區語文了 zh_tw.big5 的 locale 設定檔在 /usr/src/share/mklocale/zh_tw.big5.src, 而實作中, 則是儲存在 /usr/share/locale/ 目錄下, 以我們的 zh_tw.big5 locale 為例, 該目錄中就包含了 LC_COLLATE LC_CTYPE LC_TIME 而 LC_MESSAGES 則是儲存在 /usr/local/share/locale/zh_tw/lc_messages/ 或是 /usr/x11r6/share/locale/zh_tw.big5/ 底下 由於 LC_MESSAGES 類別掌管的是程式訊息輸出所用的語言, 而且不同程式間的訊息都不會一樣, 因此它不能像其他類別一樣, 只提供單一一個資料檔即可 相反的, 在這 ER 所採取的方式是由各應用程式自行提供它們的訊息資料檔, 並統一放在各 locale 的 LC_MESSAGES 的目錄下 例如 mutt 程式, 其訊息的部分除了英文以外, 可能還同時提供了繁體中文 簡體中文 日文 法文等翻譯, 因此, 在以上這些語文所代表的 locale 中, 其底下的 LC_MESSAGES 目錄中都會有一份屬於 mutt 程式的訊息資料檔 換句話說, 在 I18N 架構下, 程式訊息部分是與程式分離的, 如此才能分別對各 locale 做 區域化 ( 即翻譯成各地區的語言 ) 如此, 當 mutt 在執行時, 系統會根據目前 22

33 Chapter 4. 中文 X Window 它的 LC_MESSAGES locale 設定去找找看有沒有它的訊息資料檔存在, 有的話就以該語言做訊息輸出, 否則的話則以 C locale 的方式 ( 即英文 ) 來輸出訊息 以上所有的 locale 類別中, 除了 LC_MESSAGES 之外, 最重要的就是 LC_CTYPE 了 此類別掌管的是該 locale 中所有字元的處理方式 一個應用程式若要能被 區域化 成某地區的語文, 首要工作就是要能處理該地區的文字 例如每個字的內碼如何編碼? 是單一 byte 還是由多個 bytes 組成的? 怎樣的編碼才是合法可用的? 這個字是不是可以印? 是不是數字? 若給定任意的文字字串, 要如何能區分出一個個字等等 因此, 此類別牽涉的層面相當廣, 除了程式本身的文字處理能力以外, 甚至到 X Window 中的文字顯示 ( 即 XOM: X Output Method) 文字輸入 ( 即 XIM: X Input Method) 等等, 都與它有關 因此, 當我們要開始使用一個支援 I18N 的程式之前, 一定要先設好 LC_CTYPE 這個 locale 類別 設定 Shell locale 環境變數 我們必須指定 zh_tw.big5 這個 locale 環境變數給 Shell,Shell 才能正確的處理中文訊息, 一般而言我們只要指定 locale 的字元定義 LC_CTYPE 為 zh_tw.big5 即可讓 Shell 正確的處理中文, 若要讓 Shell 的輸出訊息也顯示中文, 則可將 locale 訊息顯示 LC_MESSAGES 也設定為中文的 locale data 至於要設定 stty pass8 的原因是, 台灣地區所通行的 Big5 編碼, 及大陸地區所使用的 GB 編碼, 其開頭的位元幾乎都是大於 128 的數值, 也就是所謂 non-ascii 碼的範圍 (ASCII 是指小於 128 的編碼 ) 中文問題就在這裡, 許多程式由於各式各樣的原因, 並未考慮到輸入的資料可能是 non-ascii 碼的問題, 程式往往假設了她所要處理的資料都是 ASCII 碼 ( 因為大部分軟體為外國人發展的 ), 更糟糕的是, 當程式遇到 non-ascii 碼時, 常常假設她不存在, 而將它的第八個位元截去, 這是所謂的 8-bit 輸入中文時, 每每將第八位元砍掉, 所以中文都變成亂碼 因此必須指定 stty pass8, 警告 Shell 不要將輸入的第八個位元截掉, 這樣才能正確顯示中文 ENABLE_STARTUP_LOCALE 則是 a.out 遺物, 他會強制 ld.so 載入程式前, 先呼叫 setlocale(), 在 3.x 前就 把這個 ugly hack 拿掉了 字元的分類與編編碼碼 一個 locale 所包含的合法字元與其編碼方式, 我們稱之為 character set ( 字集 ) 以我們的 zh_tw.big5 locale 為例, 其實它內部包含了兩個 sub-character set, 一個是 ASCII 用來表示一編的英文 數字 電腦慣用符號等等, 另一個就是以 Big5 編碼方式的, 我們俗稱的 全形 字, 包括了中文字 全形英文 數字 以及符號等 前者每個字元的長度是一個 byte, 而後者每個字元的長度則是兩個 byte 在 locale 的設定中, 以 LC_CTYPE 最為重要, LC_CTYPE 包含了字元內碼資訊, 直接影響部份 C 函式隊字元的處理結果, 包括 : ctype.h: isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), toupper(). wctype.h: iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), towupper(). stdlib.h: mblen(), mbtowc(), mbstowcs(), wctomb(), wcstombs(). zh_tw.big5 locale 的設定檔在 /usr/src/share/mklocale/zh_tw.big5.src, 在 LC_CTYPE 的設定檔中, 它將所有的字元分類成以下幾種 : UPPER: LOWER: 拼音字的大寫字 拼音字的小寫字 23

34 Chapter 4. 中文 X Window ALPHA: 所有的拼音字母 DIGIT: 阿拉伯數字 SPACE: 空隔字元, 如空白 (space) 換行 tab... 字元等 XDIGIT: 代表十六進位數字的字元 BLANK: 空白字元, 通常只包括空白 (space) 與 tab 兩個 CNTRL: 電腦的控制字元 PUNCT: 標點符號 GRAPH: 所有有筆畫的字元, 不包括空白與空格 PRINT: 所有可以印出的字元, 包括空白 (blank) 字元 TOUPPER: 小寫拼音字母轉大寫拼音字母的對應表 TOLOWER: 大寫拼音字母轉小寫拼音字母的對應表 4.4. 時區的設定 last update: 2002 年 12 月 30 日周一 00 時 13 分 37 秒 CST 我們的時區是 CST, 如果設定錯的話 date 跟檔案建立的時間看起來就會很怪 使用 tzsetup 來修改 : 首先安裝程式會問, 您的 CMOS 時間是否是格林威治時間 (UTC), 我們的 CMOS 通常都是設為當地 的時間, 所以請選 NO 接下來要選時區, 我們選 5 Asia 43 Taiwan 或是直接使用以下的指令 # tzsetup /usr/share/zoneinfo/asia/taipei 另外也可以利用 ntpdate 來與網路時間協定 (NTP) 伺服器對時 # /usr/sbin/ntpdate clock.stdtime.gov.tw 然後用 date 確認一下時間是不是正確 % date 2002 年 12 月 30 日周一 00 時 13 分 37 秒 CST 24

35 Chapter 5. 中文的訊息 5.1. 幫助本地化和翻譯的工作 目前 FreeBSD 的主要文件如下 :FreeBSD Handbook,FAQ, ports-handbook,developers-handbook,articles,manual,www 但是有翻譯的部份不多, 僅有 handbook,faq,ports-handbook FreeBSD handbook 本來是由 FreeBSD 中文文件計畫所主持 (FDP), 歷經 & 目前由筆者代為維護中 WWW: ijliao 的 Handbook 翻譯分配表 (http://www.csie.nctu.edu.tw/~ijliao/handbook.html) WWW: foxfair 的 Handbook 翻譯分配表 (http://people.freebsd.org/~foxfair/zh-fdp.html) WWW: statue 的 Handbook 翻譯分配表 (http://freebsd.sinica.edu.tw/~statue/zh-fdp/) WWW: 繁體 FreeBSD Handbook 4.3 (http://freebsd.sinica.edu.tw/handbook/index.html) 而大陸已經有翻譯完成的簡體 Handbook 的書籍正在販售中, 也有其簡體的 PDF 檔案可以提供下載, 希望大家可以參考該書, 把我們的繁體 Handbook 也翻譯完成 WWW: 簡體 FreeBSD Handbook 4.7 (http://freebsd.sinica.edu.tw/gb2312.php) FreeBSD FAQ 曾經由 帶領翻譯完成整個 FAQ, 不過後來沒有與總部繼續更新, 不過最近他又回來了, 繼續領導著 FAQ 的翻譯 WWW: vanilla 的 FAQ 翻譯分配表 (http://fatpipi.cirx.org/~vanilla/fcdp.html) FreeBSD Porters Handbook 這對想做自己 port 的人是一份很好的文件, 不過目前尚未翻譯, 但是有簡體的使用者翻譯好了, 不過還需要修飾和整理成繁體的 WWW: 簡體 FreeBSD Porters Handbook (http://freebsd.sinica.edu.tw/~statue/docs/ports-handbook-gb2312/) 5.2. 參加加中中文 I18N/L10N 的計畫 PO 翻譯 :GNOME,KDE 25

36 目前國內幫忙翻譯訊息的組織集中在 KDE3, 如果有興趣可以前往 (http://i18n.linux.org.tw/) 瀏覽目前的翻譯狀況 Chapter 5. 中文的訊息 5.3. 翻譯 PO 檔注意事項 以下摘錄 kde3 翻譯小組的一些建議, 原始文件可以在 (http://www.linux.org.tw/~ycheng/kde/trans-po.txt) 找到 Contributed by last update 2003 年 5 月 10 日周六 11 時 26 分 18 秒 CST 標頭部份 : 每個 po 檔一開頭的幾行, 大多固定長的像底下的樣子, 其中比較要注意的幾個項目為 : ==== 標頭範例 =============================================================== # traditional Chinese translation for XXX. # Pofeng Lee # Abel Cheung # Yuan-Chung Cheng msgid "" msgstr "" "Project-Id-Version: XXX X.X.X\n" "POT-Creation-Date: : \n" "PO-Revision-Date: : \n" "Last-Translator: Chung-Yen Chang "Language-Team: Chinese (traditional) "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" ============================================================================= PO-Revision-Date: 此欄位就請填入您翻譯時的日期時間 Last-Translator: 最後翻譯的人, 若您是最後翻的人, 就填入您的資料, 以便讓人有疑問時可以連絡的上 至於之前翻譯者的資料該如何處理呢? 或許比較好的方式, 您可以把他的資料放在最前面, 並將該行以 # 開頭註解起來, 如在 po 檔的最前面幾行加入這樣的資訊 : # Translator: aaa bbb # # ccc ddd Language-Team: 若原本已是 Chinese (traditional) 那就不須要變動, 若是新的 po 檔, 則可以將其改為 Chinese (traditional) 表示這是由我們繁體中文的翻譯小組所翻譯的 Content-Type: text/plain; charset=utf-8 字元集部份,KDE3 用 utf-8,gnome & gnu 目前還在用 big5 Content-Transfer-Encoding: 8bit encoding 部份我們中文字都是用 8bit 26

37 Chapter 5. 中文的訊息 翻譯提示 (hint) ( 注意, 這是 KDE 獨有的 extention), 如底下的範例, 在 msgid 中您會看到有 "_:" 開頭的字串, 凡以 "_:" 開頭的即表示之後的字串是翻譯的提示, 這部份是給您參考用的, 所以您只要翻譯 "Screen at %1" 這行即可 ==== 翻譯提示 (hint) 範例 ===================================================== #: ui/konsole_mnu.cpp:85 #, c-format msgid "" "_: Screen is a program controlling screens!\n" "Screen at %1" msgstr "" " 視窗於 %1" ============================================================================= 翻譯者的姓名及 如下的範例, 若碰到這樣的狀況, 請填您自己的姓名及 , 千萬不要把它給翻成了 " 您的姓名 " " 您的電子郵件帳號 " ref: Getting Credit for Your Work (http://i18n.kde.org/translation-howto/getting-credit.html) ==== 翻譯者的姓名及 範例 =============================================== #: _translatorinfo.cpp:1 msgid "" "_: NAME OF TRANSLATORS\n" "Your names" msgstr "" " 張崇嚴, 張三 " #: _translatorinfo.cpp:3 msgid "" "_: OF TRANSLATORS\n" "Your s" msgstr "" # ^ 註 : 為了對齊, 英文逗點後勿留空白 ============================================================================= HTML TAG 部份 : 如底下範例, 若有 <p><b> 等 HTML TAG, 您必須保留其語法部份 ==== HTML TAG 部份範例 ====================================================== #: toplevel.cpp:110 msgid "<p><b>what can I do?</b></p><p>%1</p>>" msgstr "<p><b> 我能做什麼?</b></p><p>%1</p>" ============================================================================= 快速鍵部份 : 如底下範例, 若有看到 "&" 開頭的地方, 如 &D, 則表示這可能是選單中的某快速鍵, 我們可以按 alt + d 鍵來快速執行等等, 此部份的翻譯方式, 我們則是在最後面加上 "(&D)" 來表示 ==== 快速鍵部份範例 ========================================================= #: toplevel.cpp:61 msgid "&Debugger" msgstr " 除錯器 (&D)" #: toplevel.cpp:61 msgid "&Debugger..." msgstr " 除錯器 (&D)..." # (&D) 之前不留空格 #... 是半形 ; (&D) 要放在... 之前 " 27

38 Chapter 5. 中文的訊息 #: toplevel.cpp:61 msgid "&Debugger:" msgstr " 除錯器 (&D):" # : 是半形 ; (&D) 要放在 : 之前 " ============================================================================= c-format 部份 : 如底下範例中的 %1 %2 等變數, 不一定 %1 就一定在前 %2 在後, 可以視翻譯的文法句型做適當的調整 ==== c-format 部份範例 ====================================================== #, c-format msgid "%1 is beated by %2" msgstr "%2 擊敗 %1" msgid "%s is beated by %s" msgstr "%2$s 擊敗 %1$s" ^^^^ > 請注意, %2$s 代表的是 msgid 中第二個 %s ============================================================================= fuzzy( 模糊 ) 部份 : 若看到 "#, fuzzy", 則表示這部份的翻譯是電腦自動猜測幫您翻的, 有時候會對, 但也有時會錯的很離譜, 因此, 您必須檢查一下, 並做適當的翻譯調整調整完後, 也要記得把 "#, fuzzy" 那行給拿掉 ==== fuzzy( 模糊 ) 部份範例 ==================================================== #:../partitioning.py:1425 #, fuzzy msgid "" "You are about to delete a RAID device.\n" "\n" "Are you sure?" msgstr " 您必須選擇一個磁碟陣列裝置 " #:../partitioning.py:1428 #, fuzzy, c-format msgid "" "You are about to delete the /dev/%s partition.\n" "\n" "Are you sure?" msgstr " 您確定要刪除這個分割區嗎 " ============================================================================= 淘汰部份 : 有些在舊版本中有的訊息, 但在新版本中已經沒有了, 因此這部份就沒有用了, 會出現在整個 po 檔的最後面部份, 都以 "#~" 為開頭, 關於這部份, 您可以將它刪除掉, 或是也可以將其保留, 當做日後參考用也行 ==== 淘汰部份範例 =========================================================== #~ msgid "&About" #~ msgstr " 關於 (&A)" #~ msgid "Panel Menu" #~ msgstr " 面板選單 " #~ msgid "Settings..." #~ msgstr " 設定..." 28

39 Chapter 5. 中文的訊息 #~ msgid "Legacy Application" #~ msgstr " 傳統應用程式 " ============================================================================= 單數複數 : 中文沒有單數複數的問題, 請直接填 msgstr[0] 即可 ==== 單數複數範例 =========================================================== msgid "found %d fatal error" msgid_plural "found %d fatal errors" msgstr[0] " 找到了 %d 個重大的錯誤 " ============================================================================= 其他綜合建議 : 標點符號請儘量用全形標點符號, 但欄名尾的冒號則用回半形 提示要用 " 您 " 取替 " 你 " 編譯 : msgfmt -cv xxx.po -o /dev/null 安裝 : msgfmt -cv xxx.po -o /usr/share/locale/zh_tw/lc_messages/xxx.mo 測試 : LC_MESSAGES=zh_TW.Big5 xxx ; 參考資料 : The KDE Translation HOWTO (http://i18n.kde.org/translation-howto/) 翻譯工具 KBabel (http://i18n.kde.org/tools/kbabel/) 5.4. 中文 manual page groff 有 -Tlatin1 選項, 目前透過這個選項來顯示中文 目前還沒有中文 manual page 的繁體翻譯計畫, 不過有簡體的, 下面是一個翻譯與使用的範例 :.Dd January 15, 1991.Dt APROPOS 1.Os.Sh NAME.Nm apropos,.nm whatis.nd 搜尋 whatis.sh 用法概要.Nm apropos.ar 關鍵字... 資料庫.Nm whatis.ar 關鍵字....Sh 詳細解說.Nm 由指定的關鍵字, 尋找一組含有系統命令簡短描述的資料庫檔案, 並且將結果顯示於標準輸出.Nm whatis 29

40 Chapter 5. 中文的訊息 只顯示整個字完全符合的結果.Sh 傳回值.Nm 這個命令在成功 \ 時傳回 0, 如果找不到符合的關鍵字則傳回 1.Sh 請參考.Xr makewhatis 1,.Xr man 1 # mkdir -p /usr/local/man/zh_tw.big5/man1 # cd /usr/local/man/zh_tw.big5/man1 # zcat /usr/share/man/man1/whatis.1.gz > whatis.1 # vi whatis.1 # cat whatis.1 groff -man -Tlatin1 Figure 5-1. man snapshot 目前在 outta-ports 中有類似的測試 port, 可以試用看看 # cd /usr/ports/outta-port/man-doc # make install # cman whatis WWW: CMPP 中文 MAN-PAGE 計劃 (http://www.cmpp.net/)( 簡體 ) 30

41 Chapter 6. 中文輸出字型 點陣字型 (Bitmapped Fonts): 這種字型就是直接將點矩陣的字型儲存在記憶體中, 使用時就直接取出, 這種方式若儲存點數不多則輸出字型太難看 ; 但若儲存點數較多則需要佔掉太多記憶體, 同時將字體放大後可能產生鋸齒壯, 因此目前除了幾乎很少用到 曲線描邊字型 (Outline Fonts): 這是利用曲線公式來描繪字框, 因此不論放大縮小位數是多少都一樣平滑, 但是缺點是計算耗時更久, 常見的包括常用在印刷的 Postscript 與用在螢幕顯示的 TrueType Font(TTF) 等 可取用 Windows 2000 CJK 的 TrueType 字型 : Traditional Chinese:mingliu.ttc(8.41MB) 為 MingLiU & PMingLiU( 細 ), kaiu.ttf(4.93mb) 為 DFKai-DB Simplified Chinese:simsun.ttc(10.01MB) 為 SimSun & NSimSun( 細 ), simhei.ttf(9.58mb) 為 SimHei Japanese:msmincho.ttc(8.71MB) 為 MS Mincho & MS PMincho, msgothic.ttc(7.89mb) 為 MS Gothic, MS PGothic & MS UI Gothic( 細 ) Korean:batang.ttc(15.51MB) 為 Batang, BatangChe; Gungsuh, GungsuhChe, gulim.ttc(12.89mb) 為 Gulim, GulimChe; Dotum, dotumche( 細 ) WWW: Chinese, Japanese and Korean characters in English Windows (http://www.geocities.com/fontboard/cjk/index.html) WWW: Chinese Fonts (http://cgm.cs.mcgill.ca/~luc/china.html) 31

42 Chapter 6. 中文輸出字型 Figure 6-1. showttf snapshot 6.1. PCF - 點陣字型 PCF 的全名是 Portable Compiled Font 點陣字型, 它非常耗費記憶體, 同時字型放大會造成鋸齒外觀 代表字型 BDF(Bitmap Distribution Format, 點陣分散格式 ), HBF(Hanzi Bitmap Font, 漢字點陣字體 ) BDF Spec: (http://partners.adobe.com/asn/developer/pdfs/tn/5005.bdf_spec.pdf) cmexfonts - 中推會中中文文 PCF 字型 該著作權為中華民國行政院研考會 中文電腦推廣基金會所共有, 字形設計為華康科技 Dynalab Inc. cmexfonts 的安裝 : 32

43 Chapter 6. 中文輸出字型 # cd /usr/ports/chinese/cmexfonts # make install 這個套件中包含了 16 點 24 點兩套中文點陣字型 WWW: (http://www.cmex.org.tw/) kcfonts - 國喬中中文文 PCF 字型 國喬中文 PCF 字型是 FreeBSD 下最常用的點陣字型 要得知已安裝的 BIG5 字型用 : % xlsfonts grep big5 kc15f.pcf.gz -kc-fixed-medium-r-normal c-160-big5-0 kc24f.pcf.gz -kc-fixed-medium-r-normal c-240-big5-0 kcfonts 的安裝 : # cd /usr/ports/chinese/kcfonts # make install 這個 國喬中文字 套件裡面包含了 16 點 20 點以及 24 點三套中文點陣字體, 足供一般情況顯示中文之用 適用於 640x480 解析度 (NoteBook) # rxvt -ls -fm kc15 -fn 8x16 & 適用於 +1024x768 解析度 (17 吋螢幕 ) # rxvt -ls -fm kc24 -fn 12x24 & gugod-clean - 搭配中中文文 PCF 用的英文字型 看了一下 irc 上得聊天, 終於懂得是為了終端機的殘影問題 節錄 gugod 的一段話 : 配合 kc15f 改了一下 schumacher 的 clean, 本來這兩種字不一樣高, 所以用久了 term 會髒髒的, 改成一樣高就不會了, 這個 clean 是 15 的, 怎麼改成一樣高的? 大致上是改 bdf 中的 PIXEL_SIZE, POINT_SIZE, FONT_ASCENT, FONT_DESCENT 還有 FONT 這些東東先, 不過要先用 xmbdfed 把 bdf 字改成想要的長寬, 不然 clean 字的每個字母長寬都不一樣, 很難稿, 相關工具請看 ports/x11-fonts gugod-clean 的安裝 : # cd /usr/ports/chinese/gugod-clean # make install # cd /usr/x11r6/lib/x11/fonts/local # mkfontdir # xset fp rehash 將以下加入 /usr/x11r6/lib/x11/fonts/local/fonts.alias 33

44 Chapter 6. 中文輸出字型 gugod16 -gugod-clean-medium-r-normal c-90-iso gugod18 -gugod-clean-medium-r-normal c-80-iso gugod20 -gugod-clean-medium-r-normal c-100-iso gugod22 -gugod-clean-medium-r-normal c-110-iso 然後執行 Eterm --font gugod16 & 就可以看到很漂亮的 Eterm 透明背景, 原來會髒掉的終端機也沒問題了 unifont - iso 的字型 unifont 包含了目前 iso 大部分字的字型, 不過中文字有缺 unifont 的安裝 : # cd /usr/ports/outta-port/unifont # make install WWW: (http://people.debian.org/~dvdeug/) intlfonts - 各國的免費 PCF 字型 這個包含各國的免費 PCF 字型, 而且裡面還包含了 cns11643 七個字面的 16pt 24pt 與 40pt, 以及 big5 的 taipei16 與 taipei24, 裝完幾乎可以處理各種語言了 intlfonts 的安裝 : # cd /usr/ports/x11-fonts/intlfonts # make install 6.2. PostScript PostScript 為美國 Adobe( (http://www.adobe.com)) 公司於 1985 年所發表的文件描述技術, Adobe 並利用這個技術, 創造著名合乎 PostScript 技術的字型, 並從而改變整個印刷工業,PostScript 可以精確的描述平面繪製任何文字及圖形, 現今 PostScript 的技術已經非常普遍的使用在印刷領域, 包括螢幕顯示 (Display), 雷射印表機 (Laser Printer), 輸出機 (Imagesetter), 數位印刷機 (Digital Printing).. 等等輸出設備 而與 PostScript 技術搭配最重要的是 PostScript 字型, 使用者可以透過 PostScript 技術調整某些參數, 而改變字型的大小, 陰影 / 立體 / 空心 / 粗細等特殊效果, 由於 PostScript 在印刷方面卓越表現, 目前世界上主要的文獻幾乎多是以 PostScript 的形式出現 目前常見的中文列印方案都是產生 Postscript 後, 再進行列印 產生的檔案又可分為內嵌 (bg5ps enscript cnprint) 與不內嵌字型 (truetype cid font), 目前的解決方案偏向於使用 CID-Keyed font CID-Keyed font,cid 是 Character ID 的簡稱 34

45 Chapter 6. 中文輸出字型 CID 字形格式的設計主要是為了各種 PostScript 輸出設備, ATM(Adobe Type Manager) 軟體, CPSI(Configurable PostScript Interpreter) 解譯器及 DPS(Display PostScript) 顯示型 PostScript 軟體等, 能使用於大字庫字體集, 特別是台灣 大陸 日本 韓國等雙位元語系的國家文字 CJK(Chinese, Japan, Korean) 字集上日 韓二國文字, 除了平假名 片假名及韓文字外, 佔最多字體容量的還是漢字部份, 而且中 日 韓的漢字很多都是相同的漢字, 如果一套 CJK 字集能包括 Big5 GB JIS 及 KSC 碼的所有的字形 容量一定比四種碼位分開的字形少 30% 以上, 而且可以不用擔心, 以後從以上四個地區來的文件, 輸出時沒有對應的字形輸出 在 1990 年 Adobe 發表可以支援雙位元架構的 PostScript 字形格式, 一般我們通稱為 OCF(Original Composite Font) 格式, 它使用比較複雜字形構造及字形儲存方式, 因為它為了要支援雙位元的字形, 就必須要做成這樣複雜的架構, 像目前大家所使用的中文 Type1 Type3 Type4 等字形格式, 都是屬於 OCF 格式 OCF 字形要抓取列印一個雙位元字形時, 必須要經過複雜的對應關係, 才能取得字形的外框資料去列印, 所以 Type1 Type3 Type4 等 OCF 字形的檔頭 (header) 描述都非常複雜, 而且每一家字形廠商都不太一樣 CID 字形的架構比 OCF 字形就簡單多了, 直接由 CMap 檔案去對應字形外框資料, 所以解譯器能快速的取得及解譯字形的外框資料及列印, 而且比較節省記憶體的使用 Character Collection( 字形集 ) 及 CMap File( 對應檔 ) 這二者 Adobe 有定義標準格式, 字形廠商可以使用 Adobe 的標準格式, 以繁體中文為例,Adobe 定義一個 Character Collection, 和很多個的 CMap File, 如 Adobe-CNS1-0,B5-H,B5pc-H,ETen-B5-H 等不同的 CMap file 不同的 CMap file 使用於不同的內碼系統, 如果這些內碼系統的字碼有擴充時, 只要增加新的 CMap file 及 CID 字形即可, 可以不影響到原來的 CMap file 及 CID 字形檔 WWW: (http://www.arphic.com.tw/faqs/faqs_cid.htm) WWW: (http://partners.adobe.com/asn/developer/technotes/fonts.html) 使用 TrueType 字型當作是 CID font gs-cjk 是一個讓 Aladdin/Artifex/GNU ghostscript(gs) 能夠使用 CJK 功能的發展計畫 在這個網站中, 所提供 的程式集, 包含讓 gs 能夠把 CJK ( 繁 簡中文, 日文, 韓文 ) 的 TrueType 字型當作 CID-Keyed 的字型來處理的必要修補檔案 ( patch), 以及改進在 gs CID-Keyed 字型的 handler 該計畫已經整合到 ghostscript7 CID-Keyed font 由 CID font 和 CMap 所組成, 使用前記得安裝 print/adobe-cmap 使用 ghostscript 來列印文件 : # gs -sdevice=cdj550 -soutputfile=/dev/lpt0 xx.ps gs --help 會有更多的選項 以此套件搭配 arphicttf 就可以讓大部分的軟體可以透過 gs 讀取 ttf 來產生正確的 gs 檔 以下是利用 ttfm 來將 arphicttf 的字型加入 gs-cjk 的列表 : # ttfm.sh --add gs-cjk bkai00mp.ttf # ttfm.sh --add gs-cjk bsmi00lp.ttf 這樣會分別產生常用的 CID-Keyed:ShanHeiSun-Light-Eten-B5-H 以及 ZenKai-Medium-Eten-B5-H 以供需要列印的軟體使用, 例如 Mozilla KDE 等 35

46 WWW: (http://www.cs.wisc.edu/~ghost/index.html) gs-cjk WWW: (http://www.gyve.org/gs-cjk/) Chapter 6. 中文輸出字型 moefonts-cid - 由 Adobe 轉譯的 MOE CID Font CID-Keyed font 由 CID font 和 CMap 所組成, CMap 可以透過安裝 print/adobe-cmaps 來達成, 而 CID font 則必須另外安裝 中文 CID font(moekai 和 MOESung) 是從教育部而來的, 原本為 48x48 點陣字型, 由 Adobe 製作成 CID font moefonts-cid 的安裝 : # cd /usr/ports/chinese/moefonts-cid # make install 自行安裝的話,CID-Keyed font 可以從 ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/samples/ (ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/samples/) 取得 MOEKai-Regular MOESung-Regular 這兩個 CIDFont, 並在 ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/ (ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/) 取得 ac14.tar.z, 裡面包含了 Adobe-CNS1 的 CMap 檔案 裝完後就有如下的 CID-Keyed font 可以使用 : MOEKai-Regular-ETen-B5-H MOEKai-Regular-ETen-B5-V MOESung-Regular-ETen-B5-H MOESung-Regular-ETen-B5-V 以下是一個測試的範例 : % cat cid.ps /MOEKai-Regular-ETen-B5-H findfont 60 scalefont setfont moveto ( 眾裡尋他千百度 ) show moveto ( 驀然回首 ) show moveto ( 那人卻在燈火欄珊處 ) show showpage quit % gv -antialias cid.ps % ps2ps cid.ps cid2.ps % ps2pdf cid.ps % ps2pdf cid2.ps % xpdf cid.pdf ( 可能不行 ) % xpdf cid2.pdf 36

47 Chapter 6. 中文輸出字型 Figure 6-2. cid-gv snapshot 目前已經可以由 ttfm 搭配 gs-cjk 的方式來取代, 而且效果更好 以下是以 MOESung-Regular 為例子, 來增加粗體 斜體 粗斜體支援, 在安裝時, 由於必須額外安裝 adobe-cmaps 來搭配, 所以會 DEPENDS print/adobe-cmaps 再來是建立粗體, 斜體, 粗斜體等, 在看完 ttfm 的 gs-cjk 模組後, 有個想法就是 gs-cjk 的做法是在 ttf 上面建立粗體, 斜體, 粗斜體等, 這些做法是不是應該也適用於 moefonts-cid? 因此就建立了 MOESung-Regular-Bold %!PS-Adobe-3.0 Resource-CIDFont %%BeginResource: CIDFont (MOESung-Regular-Bold) /MOESung-Regular-Bold /MOESung-Regular /CIDFont findresource 16 dict begin /basecidfont exch def /basefont-h /.basefont-h /Identity-H [ basecidfont ] composefont def /basefont-v /.basefont-v /Identity-V [ basecidfont ] composefont def /CIDFontName dup basecidfont exch get def /CIDFontType 1 def /CIDSystemInfo dup basecidfont exch get def /FontInfo dup basecidfont exch get def /FontMatrix [ ] def /FontBBox [ basecidfont /FontBBox get cvx exec 4 2 roll basecidfont /FontMatrix get transform 4 2 roll basecidfont /FontMatrix get transform ] def /cid 2 string def /BuildGlyph { gsave exch begin dup 256 idiv cid exch 0 exch put 256 mod cid exch 1 exch put rootfont /WMode known { rootfont /WMode get 1 eq } { false } ifelse { basefont-v } { basefont-h } ifelse setfont 37

48 Chapter 6. 中文輸出字型.03 setlinewidth 1 setlinejoin newpath 0 0 moveto cid false charpath stroke 0 0 moveto cid show currentpoint setcharwidth end grestore } bind def currentdict end /CIDFont defineresource pop %%EndResource %%EOF 以及 MOESung-Regular-Bold-ETen-B5-H.gsf /MOESung-Regular-Bold-ETen-B5-H /MOESung-Regular-Bold (MOESung-Regular-Bold) /ETen-B5-H (CMap/ETen-B5-H) 1 index /CMap resourcestatus {pop pop pop} {runlibfile} ifelse /CMap findresource 3 1 roll 1 index /CIDFont resourcestatus {pop pop pop} {runlibfile} ifelse /CIDFont findresource [ exch ] composefont pop 結果發現在測試檔 cid.ps /MOESung-Regular-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOESung-Regular-Bold-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOESung-Regular-Italic-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOESung-Regular-BoldItalic-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOEKai-Regular-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOEKai-Regular-Bold-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOEKai-Regular-Italic-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show /MOEKai-Regular-BoldItalic-ETen-B5-H findfont 30 scalefont setfont moveto (2000 年 5 月 29 日 ) show showpage quit 38

49 Chapter 6. 中文輸出字型 粗體的部分出現了預期的效果, 所以就繼續製作斜體與粗斜體, 這部分可以參考 gs-cjk, 斜體的名稱定為 MOESung-Regular-Italic, 而粗斜體則是 MOESung-Regular-BoldItalic 最後, 記得把這些.gsf 寫入 /usr/local/share/ghostscript/7.05/lib/fontmap.gs 寫法是 : 字型 ( 字型.gsf) ; /MOESung-Regular-ETen-B5-H (MOESung-Regular-ETen-B5-H.gsf) ; /MOESung-Regular-Bold-ETen-B5-H (MOESung-Regular-Bold-ETen-B5-H.gsf) ; /MOESung-Regular-BoldItalic-ETen-B5-H (MOESung-Regular-BoldItalic-ETen-B5-H.gsf) ; /MOESung-Regular-Italic-ETen-B5-H (MOESung-Regular-Italic-ETen-B5-H.gsf) ; 最後修改一下 -H 成 -V 再重複上面的過程即可, 其他的字型也是幾乎一樣的做法就可以完工了, 不過, 真的比不上用 ttf 做出來的呀 如此建立完, 就會有一堆可用的 CID-Keyed 字型 MOESung-Regular-ETen-B5-H MOESung-Regular-Bold-ETen-B5-H MOESung-Regular-BoldItalic-ETen-B5-H MOESung-Regular-Italic-ETen-B5-H 這樣子在配合文書軟體上, 應該會更好, 我想文書軟體慢慢的也會把列印的部分用 gs 所提供的字型來模擬, 像是 editors/abiword 就是個很棒的例子, 而 kde2 則是自己做粗體, 斜體等的模擬, 不過我還沒去測試到粗體和斜體的部分, 等有空閒了再去試試 39

50 Chapter 6. 中文輸出字型 Figure 6-3. moefonts-cid snapshot 以 gs 觀看不不內內嵌的 pdf 檔 gs/gv 有個 dirty hack, 就是看到 name type emb sub uni object ID 國字標準宋體 CID TrueType no no no 22 0 這種類型的不內嵌字, 就自己到 /usr/local/share/ghostscript/7.05/lib/cidfnmap 中加上 alias, 以我而言會加上文鼎上海宋的 alias: / 國字標準宋體 /ShanHeiSun-Light ; 李果正 Edward G.J. Lee 也提出比較正式的解法如下 : 昨天玩了一下 gs 發現可能不必這麼麻煩, 因為 CJK-latex + dvipdfmix 製作出來的不內嵌中文 PDF 檔, 頗合 PDF-spec 雖然,pdffonts 看到的是 : name type emb sub uni object ID

51 Chapter 6. 中文輸出字型 國字標準宋體 CID TrueType no no no 22 0 但其實 PDF 檔裡頭會標記成 Adobe-CNS1, 也就是說會去使用 PDF browser Adobe-CNS1 的預設字型, 例如 : 34 0 obj << /Type/Font /Subtype/CIDFontType2 /BaseFont/#b0#ea#a6r#bc#d0#b7#c7#a7#ba#c5#e9,Italic /FontDescriptor 35 0 R /CIDSystemInfo<< /Registry(Adobe) /Ordering(CNS1) /Supplement 0 >> >> endobj 以此 object 為例 其中 # 是代表 hex notation, 那一堆就是 國字標準宋體, 後面會有 /Registry(Adobe) /Ordering(CNS1), 因此, 只要 gs 的 CIDFnmap 設成 : /Adobe-CNS1 /ShanHeiSun-Light ; 就可以了, 也就是說, 不管 PDF 使用什麼字型, 如果找不到此字型, 就會使用預設的 (Adobe-CNS1)ShanHeiSun-Light 這樣就不必遇到沒有的字型就得去加入 alias 而 acroread 也會去找他的預設字型 MHei-Medium 或 MSung-Light( 視 acroread 如何設定, 設成 sans 則取用黑體, 設成 serif 則取用宋體 ) 為防意外, 建議以下兩行也加入 : /Adobe-CNS1-Big5 /Adobe-CNS1-Unicode /ShanHeiSun-Light /ShanHeiSun-Light ; ; 這樣一來, 列印的問題也解決了 pdf2ps(pswrite device) 時 gs 會去取用 ShanHeiSun-Light 當然, 前提是 /usr/share/ghostscript/resource 要把 ShanHeiSun-Light 預先設定好 6.3. TrueType TrueType 字型格式為美國 Apple ( (http://www.apple.com)) 及 Microsoft ( ) 所共同制定, 最先使用於 Apple 的 Macintosh 系列及 Microsoft Windows 3.1, 而目前 Apple 的 OS 8.0 及 Microsoft Windows 95/NT/2000/XP 也都使用 TrueType 作為字型格式 基本上 TrueType 和 PostScript 一樣, 都是使用貝茲曲線 (Bezier Curve) 來描述的外框字 字型可以作任意尺寸的放大縮小, 或作其他屬性的變化, 不過由於 Apple 及 Microsoft 的作業系統都直接支援此字型格式, 所以並不需要如 PostScript 一樣, 外掛 (Adobe)Type Manager 之類的程式 WWW: Features of TrueType and OpenType (http://www.microsoft.com/typography/users.htm) 41

52 Chapter 6. 中文輸出字型 ttfm - TrueType 字型管理工具 目前有許多程式都會要求使用 TTF 字型, 所以我們最好還是幫 X 加上中文的 TTF 字型支援 目前安裝字型所需的 fonts.dir 已經不需要使用暴力的方法產生, 使用 ttfm 就可以很順利的管理所有的中文字型了 而現在在 ports 中的 TrueType 字型有三套, arphicttf moettf wangttf ttfm 的安裝 : # cd /usr/ports/chinese/ttfm # make install 安裝後包含了 : ttfinfo: 一個可以用來讀取 ttf 字型格式資訊的小程式, 範例如下 : # ttfinfo /usr/local/share/fonts/truetype/bkai00mp.ttf TTFINFO_FONT_FILE="/usr/local/share/fonts/TrueType/bkai00mp.ttf" TTFINFO_FONT_NAME="AR PL KaitiM Big5" TTFINFO_FONT_PSNAME="ZenKai-Medium" TTFINFO_FOUNDRY_NAME="Arphic" TTFINFO_WEIGHT_NAME="medium" TTFINFO_WIDTH="normal" TTFINFO_NUMCMAP="2" TTFINFO_CMAP0="1,0" TTFINFO_CMAPNAME0="Apple,Roman" TTFINFO_CMAP1="3,1" TTFINFO_CMAPNAME1="Windows,Unicode" TTFINFO_MAPNUM="1" TTFINFO_FONTMAP1="-Arphic-AR PL KaitiM Big5-medium-r-normal c-0-big5-0" ttfinst.tk: 圖形介面的 tk script, 可以用來安裝字型, 不建議使用 ttfm.sh:shell script, 預備作為 ttf 字型總管 # ttfm.sh --help True-Type Font Manager Usage: /usr/local/bin/ttfm.sh [option] --add [module] <file>... install ttf font --remove [module] <file>... remove ttf font from the system --list <module>... list all ttf fonts on the system --modules --setdefault list all ttf manager modules on the system <module> <file> set default ming font of module to file --initm --help <module>.. initialize modules show this info 這個程式會去利用位於 /usr/share/fonts/install/ 底下以 ".ttfm" 結尾的可執行檔來安裝 設定字型, 這些.ttfm 檔案我稱為 ttfm module, 由需要使用到 ttf 字型的程式提供, 這些模組必須符合以下要求 : 可獨立使用, 不一定透過 ttfm.sh 呼叫執行 不對系統字型目錄有任何預設, 只管理自己模組字型目錄下的檔案 42

53 Chapter 6. 中文輸出字型 對 ttf 檔案位置需求不同於 ttfm.sh 中的系統字型目錄時, 以 link 方式處理, 不 copy ttf 檔案, 移除字型時不更動系統字型目錄中的檔案 提供至少下面幾個參數供 ttfm.sh 使用 : --name --list 顯示模組名稱列出模組管理的現有字型與對應的名稱 --add <file> 增加字型,file 為一字型檔案名稱, 如 /mnt/windows/fonts/mingliu.ttc --remove <file> 移除字型,file 為字型檔案名稱, 可以是 fullpath 亦可以是單純檔案名, 如 /usr/local/share/fonts/truetype/bkai00mp.ttf or bkai00mp.ttf --setdefault <file> 設定預設字型,file 為字型檔案名稱, 可以是 fullpath 亦可以是單純檔案名, 如 /usr/share/fonts/ttf/bkai00mp.ttf or bkai00mp.ttf ttfm 採用模組化的設計 每一個需要使用到 ttf 字型的程式都可以提供 ttfm 的模組, 然後便可透過 ttfm.sh 來做到字型的安裝, 移除, 列表, 設定預設字型等管理的動作 目前已有的 ttfm 模組有 : abiword 給 AbiWord 或是以上的版本使用 chitex 安裝 ChiTeX 字型 (by cwhuang) gscjk 給 Aladdin Ghostscript 使用 可以管理 TrueType 字型和 CID 字型,Ghostscript 必須修補可以使用 TrueType 字型 ttf2pk 供 freetype-contrib 的 ttf2tfm, ttf2pk 使用 (by cwhuang) xfreetype 給 XFree86 s freetype backend, 在 3.x 是 Xfsft, 在 4.x 是 freetype 模組 xttfm-tcl 給 XFree x X-TrueType server xttfm 安裝給 X window 用的 font.dir, font.alias (by 小虫 ) 一些使用範例 : 1. 加入字型 : # ttfm.sh --add <path>/bsmi00lp.ttf (xttfm 會令 xfs 重新載入字型名稱 如果您不是使用 xfs, 您要自己下 xset fp rehash 令新的字型名稱生效, 或者重新啟動 X Window ) 2. 列出字型 : # ttfm.sh --list xttfm 會列出 xttfm 模組所有安裝的字型 您現在可以用 xlsfonts 看到這些字型名稱 並可用 xfd -fn < 字型名稱 > 試試能否看到字型 3. 移除字型 : # ttfm.sh --remove bsmi00lp.ttf 這不需多做解釋吧? 4. 設定預設字型 : # ttfm.sh --setdefault xttfm bkai00mp.ttf 43

54 Chapter 6. 中文輸出字型 將 xttfm 模組的預設字型更改為 bkai00mp.ttf 這或許是 ttfm 最 powerful 的功能之一了 您可發現 X Window 預設的中文字型通通變成楷體的 注意預設字型是跟 encoding 有關的 您可以對不同的 encoding 分別給定預設字型 ttfm 會自動根據所給定 ttf 自動判斷應設定那種 encoding 的預設字型 例如 ttfm.sh --setdefault xttfm gkai00mp.ttf 會設定 GB 的預設字型為楷體 5. 模組的初始化 : # ttfm.sh --initm <module name>... 這個功能是用來在安裝一模組時, 將系統已有的 ttf 字型通通安裝到該模組中 如果下 : # ttfm.sh --initm all 會令所有已安裝的模組都做初始化的動作 ( 也就是將所有字型安裝到所有的模組中 ) 如果您撰寫了一個 ttfm 的模組, 請記得在安裝時執行 ttfm.sh --initm < 您的模組名稱 > Note: TrueType 字型的設定 還有, 在啟動您的 X 之前, 記得檢查 /etc/xfree86 下面有沒有 FontPath "/usr/x11r6/lib/x11/fonts/truetype" 或是在 ~/.xinitrc 中加上這一行 xset +fp /usr/x11r6/lib/x11/fonts/truetype/ # cvs -d login (Logging in to CVS password: # cvs -d checkout ttfm WWW: (http://cle.linux.org.tw/cgi-bin/cvsweb.cgi/ttfm/) moettf - 台灣教育部標準 TrueType 字型 moettf 台灣教育部標準楷書 宋體 ttf 字形檔, 現在又加了兩個字型 moe_sungext.ttf 和 moe_sungsym.ttf, 雖然字型是 BIG5 編碼, 字元和符號在 CNS 中還是偶而會用到 moettf 的安裝 : # cd /usr/ports/chinese/moettf # make install 以下按照年代說明 國字標準字體楷書母稿 國字標準字體宋體母稿 國字方體母稿 44

55 Chapter 6. 中文輸出字型 這時 Wukai 從教育部的標準字體轉成兩個 ttf, (http://bbs.ee.ntu.edu.tw/boards/linux/7/8/4.html), 也就是第一版的 moe_kai.ttf 與 moe_sung.ttf, moe_sung 的字數是 13865,moe_kai 的字數是 少了幾個特別複雜的字, 這是教育部原始提供的字面母稿的少了的, 不是轉換過程中 lost 掉的 國字隸書母稿 國字標準字體宋體母稿增補編 這兩個就是後來增加的 edustd-15.exe edustds1.exe edustds2.exe, 也就是後來的第二版 教育部楷書字形檔 這個則是最近新增的檔案, 品質比楷書母稿好很多, 有 Big5 和 Unicode 版 當然有機會取代原 moe_kai.ttf, 不過還需要比較字數等可能問題 總結 : 目前在 ports/chinese/moettf 中有五個檔案, 方別是 edustd-15.exe 教育部隸書字形檔 [ 註 1] edustds1.exe 教育部標宋體增補編字形檔 [ 註 2] edustds2.exe 教育部標宋體增補編字形檔 [ 註 2] moe_kai.ttf 國字標準字體楷書母稿 [ 註 3] moe_sung.ttf 國字標準字體宋體母稿 [ 註 3] [ 註 1] [ 註 2] [ 註 3] 但是在教育部楷書字形檔 [ 註 4], 看到三個不同的楷書字型? kai-pc.ttf PC 版 (92.2) Windows 系統適用 kai-linux.ttf Linux 版 (92.2) Linux 作業環境適用 ct.sit MAC 版 (92.2) APPLE 電腦適用 [ 註 4] Figure 6-4. moettf snapshot WWW: 教育部國字標準字體公告 (http://www.edu.tw/mandr/bbs/1-4-2/1-4-2.html) arphicttf - 文鼎科技提供的 TrueType 字型 arphicttf 是由文鼎科技提供, 包含文鼎 PL 細上海宋, 文鼎 PL 中楷 (BIG-5 碼 ) 和文鼎 PL 簡報宋 文鼎 PL 簡中楷 (GB 碼 ) 它可以被用來作為 X Window 系統或是排版軟體例如 CJK 感謝文鼎科技, 您可以在 GPL-base 版權下自由散佈這些高品質的字型 ARPHIC_*.TXT 有更詳細的文件 45

56 Chapter 6. 中文輸出字型 arphicttf 的安裝 : # cd /usr/ports/chinese/arphicttf # make install 以下表格式整理過後的文鼎字體速查表, 會有兩個 Font Family 是因為英文的是 Microsoft,Unicode,English - United States 的資訊, 常用於 gtk2 等字型設定, 中文的則是 Microsoft,Unicode,Chinese - Taiwan 的資訊, 通常是 utf8 編碼, 常用於 openoffice 的字型設定, Font Family, Unique subfamily identification, Full name 的資訊通常都會相同 Table 6-1. 文鼎字體速查表 檔名 PostScript name Font Family Font Family bkai00mp ZenKai-Medium AR PL KaitiM Big5 文鼎 PL 中楷 bsmi00lp ShanHeiSun-Light AR PL Mingti2L Big5 文鼎 PL 細上海宋 gkai00mp GBZenKai-Medium AR PL KaitiM GB 文鼎 PL 簡中楷 gbsn00lp BousungEG-Light-GB AR PL SungtiL GB 文鼎 PL 簡報宋 Figure 6-5. arphicttf snapshot WWW: 文鼎科技 (http://www.arphic.com.tw/) wangttf - Dr. Hann-Tzong Wang 提供的 TrueType 字型 wangttf 由 Dr. Hann-Tzong Wang 提供的字型, 可以看看 wangttf.txt 得到更詳細的資訊, 不過安裝起來有 80MB, 所以請斟酌後再使用 繼文鼎科技捐出四套字形之後, 研發天蠶字庫的中原大學數學系王漢宗教授, 也捐出十套字型, 給 Linux 社群使用 版權採用 GPL 釋出 王漢宗教授捐出了以下十種字型 : 王漢宗新潮體 -- 波浪 王漢宗特明體 -- 標準 王漢宗波卡體 -- 空陰 王漢宗綜藝體 -- 雙空陰 王漢宗標楷體 -- 空心 王漢宗仿宋體 -- 標準 王漢宗粗鋼體 -- 標準 王漢宗粗黑體 -- 實陰 王漢宗粗圓體 -- 雙空 王漢宗海報體 -- 半天水 wangttf 的安裝 : # cd /usr/ports/chinese/wangttf # make install 46

57 Chapter 6. 中文輸出字型 Figure 6-6. wangttf snapshot ntuttf - 台大字型 Date: Thu, 17 Mar 94 14:18:18 CST From: Lin YawJen HISTORY: I had written a program to convert fonts from large bitmap into TrueTypefor MS-Windows. For Mac, see ifcss.org:/software/fonts/mac/ the bitmaps came from DYNAFONT (Hua2 Kang1) and ETen.. This is the critical point of this product. Font styles includes: kai: 楷書 br: 粗圓 fs_m: 仿宋常用 li_m: 隸書常用 mb: 中黑 mm: 中明 mr: 中圓 tw: 極細 COPYRIGHT: These fonts are created by Mr. Lin Yaw-JenAll Right reserved. These fonts must not be used for any commercial activities. Lab of OA Network Home: 4F, No Alley 2 Lane 250 Sec 5 Nanking East Rd. Department of Computer Science and Information Engineering Taipei Taiwan R.O.C National Taiwan University Tel: Taipei Taiwan R.O.C Fax: ntuttf 的安裝 : # cd /usr/ports/outta-port/ntuttf 47

58 Chapter 6. 中文輸出字型 # make install Figure 6-7. ntuttf snapshot WWW: ftp://cle.linux.org.tw/pub/fonts/ttf/source/ntu/ctlg.html (ftp://cle.linux.org.tw/pub/fonts/ttf/source/ntu/ctlg.html) oto - Open Type Organizer 程式 Joe Man post 到 zh-l10n 的文章中節錄部分如下 : Open Type Organizer(oto) 這個小小程式硬是要得! 它可以將原本只有 big5 或 gb 編碼的 TrueType 字再加入一個 unicode 編碼, 但絕對不會攪亂原本的字型 [big5 部份是由我修正的, 請大家幫忙測試 :)] 這個方案還有一個好處... 因 OpenOffice 只認 Unicode 編碼的 TrueType 字, 引至很多 Big5 編碼的字不能用 現在只要將轉變後的字抄到 OpenOffice 下的 share/fonts/truetype/ 就可以用了 好! 我已經測試了幾個王漢宗教授的字型, ( 確係靚 )!--- 廣東話 :) chinese/oto 的安裝 : # cd /usr/ports/chinese/oto # make install wangttf 的字型只有 Big5 編碼, 所以我們幫她加上 Unicode 編碼 # oto wcl-01.ttf wcl-01-unicode.ttf # ttfinfo wcl-01.ttf TTFINFO_FONT_FILE="wcl-01.ttf" TTFINFO_FONT_NAME="unknown" TTFINFO_FONT_PSNAME="unknown" TTFINFO_FOUNDRY_NAME="misc" TTFINFO_WEIGHT_NAME="medium" TTFINFO_WIDTH="normal" TTFINFO_NUMCMAP="1" TTFINFO_CMAP0="3,4" TTFINFO_CMAPNAME0="Windows,Big 5" TTFINFO_MAPNUM="1" TTFINFO_FONTMAP1="-misc-unknown-medium-r-normal c-0-big5-0" # ttfinfo wcl-01-unicode.ttf TTFINFO_FONT_FILE="wcl-01-2.ttf" TTFINFO_FONT_NAME="unknown" TTFINFO_FONT_PSNAME="unknown" 48

59 Chapter 6. 中文輸出字型 TTFINFO_FOUNDRY_NAME="misc" TTFINFO_WEIGHT_NAME="medium" TTFINFO_WIDTH="normal" TTFINFO_NUMCMAP="2" TTFINFO_CMAP0="3,1" TTFINFO_CMAPNAME0="Windows,Unicode" TTFINFO_CMAP1="3,4" TTFINFO_CMAPNAME1="Windows,Big 5" TTFINFO_MAPNUM="1" TTFINFO_FONTMAP1="-misc-unknown-medium-r-normal c-0-big5-0" oto 另外一個好用的功能就是能修改字型的屬性 : % oto NTU_KAI.TTF > test % iconv -f utf-8 -t big5 test > test.big5 % vi test.big5 % iconv -f big5 -t utf-8 test.big5 > test.utf-8 % oto NTU_KAI.TTF ntu-kai-new.ttf --names test.utf-8 編輯 test.big5 把 (Microsoft,Unicode,Chinese - Taiwan)... at...: 改成你想要顯示的字, 使用 iconv 可能要注意並非整個檔都是 utf-8 編碼的, 大概把 Unicode 那些區段自己找出來轉成 big5 編輯後再寫回去, 最後再搭配 --names 來把屬性改掉 以下是 Edward G.J. Lee( 李果正 ) 所貢獻的 Pfaedit 也是可以修改字型的屬性 #!/usr/bin/env pfaedit # Reencoding a font to Unicode TTF. # By Edward G.J. Lee, this code is public domain. # $1: your TTF name. if ($argc!= 2) Print("usage: ", $0, " your.tt[fc]") Quit(1) endif Print("Loading ", $1, "...") Open($1) SetFontNames("myfont","myfont","myfont") Reencode("iso ") ClearHints() Print("Generating fonts...") Generate($1 + ".ttf") Close() Quit(0) chmod +x unifont.pe 就可以執行了 (Unix-like 系統 / 環境 ) 這個 script 會把不是 Unicode 的 TTF 轉成 Unicode TTF 其中 ps name 的部份請自行更改, 我這裡是使用 myfont 49

60 Chapter 6. 中文輸出字型./unifont.pe your.ttf 就可以了, 會產生 your.ttf.ttf, 再自行更改檔名 WWW: (http://sourceforge.net/projects/oto) 50

61 Chapter 7. 中文的顯示示及及輸入 如果您總是從 DOS 的中文系統或是中文 Windows 95 之類的環境下透過 telnet 來利用 FreeBSD 主機的話, 您是不需要看本節的 只有當您直接在一部 FreeBSD 主機螢幕前操作時您才需要在 FreeBSD 上安裝中文系統 7.1. 輸入法 目前在 FreeBSD 底下可以使用的中文輸入平台有 : console 下的 big5con, cce, big5cce, zhcon, kon2 只 有顯示中文的能力, 而 xwindow 下的有 xcin25, chinput, xcim, fcitx 各種各樣的輸入法不斷湧現, 以字形為標準的 以字音為標準 以字義為標準的 還有以字碼為基礎的, 各自擁有各自的特點, 也各有各的優勢, 都在為輸入法的研究盡綿薄之力 目前的中文輸入法有以下主要四類 : 第一, 以字母為基礎 這類型輸入法, 要求使用者只要知道該漢字的讀音, 即可輸入漢字到電腦裡面 但是輸入速度卻非常的慢, 因為漢字裡面有很多的字讀音相同的, 當你輸入該字拼音時, 往往卻要花上一定的時間排除其它同音字, 才能找到你所需的字 因此它只能作為一種輔助輸入法使用 例如, 台灣的注音 忘型 自然 漢音 羅馬拼音 微軟新注音等 ; 大陸的拼音 全拼 雙拼等 ; 香港的漢語拼音 粵語拼音等 第二, 以字形為基礎 進行字根拆解組合漢字 這類型輸入法最大的優點是在於只要經過一段時間的訓練, 輸入中文字的效率會有大大的提高 這類型輸入法也是目前最受歡迎的一類 例如, 台灣的倉頡 大易 行列 嘸蝦米 華象直覺 微軟新倉頡等 ; 大陸的五筆 鄭碼等 ; 香港的縱橫 快碼等 第三, 以字碼基礎 該類輸入法最典型的就是內碼輸入法, 只要你輸入該字的內碼, 即可輸出該字 它最大優點是重碼率幾乎為零, 不用選字, 節約時間, 提高輸入速度 但卻要求使用者能夠記住內碼, 漢字數量驚人之多, 如果不是專業人士, 恐怕很難記住這麼多字的內碼, 因此, 這類型輸入法是最不適用的, 也就很少有人來使用它 第四, 以字義為基礎 此類型輸入法主要針對使用外語的人士, 只要輸入相應字義的單詞, 即可輸入該字, 但速度比較慢, 而且對使用者的英文程度有一定的要求 例如 : 英漢輸入法 但總的來說, 就目前形勢來看以字形為標準的輸入法, 在速度和重碼的問題解決得較好, 輸入速度快, 重碼率低, 較為用戶所廣泛接受, 以字音為標準的輸入法雖然輸入速度較慢, 但最為簡單易學, 作為一種後備輸入法也較為用戶所廣泛接受 WWW: 鍵盤輸入法萬 碼 奔騰 (http://input.foruto.com/introduce/introduce_article001.htm) zh_hex - 內碼輸入法 只要你輸入該字的內碼, 即可輸出該字 它最大優點是重碼率幾乎為零, 不用選字, 節約時間, 提高輸入速度 但卻要求使用者能夠記住內碼, 漢字數量驚人之多, 如果不是專業人士, 恐怕很難記住這麼多字的內碼, 因此, 這類型輸入法是最不適用的, 也就很少有人來使用它 51

62 cj - 倉頡輸入法 Chapter 7. 中文的顯示及輸入 由朱邦復先生所發明, 結合中國象形字的特性, 將所有的筆畫簡化為 24 個字根, 每一個字根有許多不同基本字型的變化, 因此只要熟記這些字根及字型, 就宛如寫字一樣, 依照筆畫及順序鍵入字根就可以表示想要的字 如此的輸入法符合中國字的本質, 不會有注音用久卻忘記字怎樣寫的缺點 WWW: 朱邦復工作室 (http://www.cbflabs.com/) simplex - 簡易輸入法 簡易輸入法是 倉頡首尾碼簡易輸入法 的簡稱, 是將倉頡輸入法的取碼簡化, 對每個中文字而言, 只取其 首 尾 二碼, 其餘的都省略不取 所以只要手中有一張 中文字母表, 並了解中文字是由上而下, 由左而右, 由外而內的取碼方式, 牢記取碼規則 -- 只取 首 尾 二碼, 那麼就可以開始使用簡易輸入法輸入中文了 phone,bimsphone - 注音輸入法 注音輸入法為目前中文輸入的主流, 依據注音符號拼出中文字輸入 另外因為中文字有許多同音字, 因此選字是一項非常麻煩的手續, 因此 bimsphone 提供人工智慧幫您選字, 不過還不會學習使用者常用的字彙 jyutping - 粵語拼音輸入法 早於一九九二年香港華通設計了 粵語拼音輸入法, 後來又將它由 1.0 版發展到 4.0, 直至最新的 2001 各版本 這個輸入法廣泛在香港被應用, 例如, 香港政府市政府圖書館 區域市政局圖書館提供給市民查閱書籍, 聯網電腦上使用的 粵音 輸入法就是香港華通產品 粵語拼音輸入法 是用香港習慣的英文字母廣東拼音的方法輸入中文字 主檔 23,000 碼, 兼容並蓄的輸入碼, 出字率高, 任何一種流行的拼法都能拼出所需之字 實用的特別編碼檔, 為香港常用字型 特殊符號 百家姓 日文字等, 提供了合情合理, 易記實用的輸入碼 主要特點 適用於 Windows 中文平台等多個版本, 以單字或詞組均可輸入中文 輸入一碼 二碼等即出現待選字方便輸入, 不影響全碼輸入的習慣 手動調整待選字優先順序, 即時增添漢字輸入編碼及增添詞組編碼 提供豐富聯想字詞功能, 一次輸入多級聯想, 直到您找到所需之字 一次性顯示所有待選漢字, 能顯示漢字的所有兼容並蓄的粵拼編碼 收錄了十萬個台灣 大陸及香港用詞, 充分體現簡潔和實用的風格 52

63 Chapter 7. 中文的顯示及輸入 bimspinyin - 拼音輸入法 注音 即是傳統的中文音標 一 玻坡摸佛 注音字母, 現今在台灣仍廣為采用 注音法把鍵盤上的字母 數字 及符號重新編排成四十多個注音鍵, 全無 拉丁化 的痕跡, 好處是完整, 一鍵一音素, 輸入速度理論上較快 但因不與拉丁字母掛鉤, 即使熟悉注音字母的用戶, 初學時也要強記注音字母在鍵盤的位置 相反 拼音 比較簡單易學, 在國際上亦較為廣泛接受 chewing - 酷音輸入法 酷音輸入法是一種聰明的注音輸入法 它會根據常見的字詞, 自動將您所輸入的注音轉變為適當的中文 字, 減少同音字的選擇 酷音輸入法還提供了許多好用功能, 如常用符號輸入 手動斷詞功能 中英混雜輸入等 WWW: 酷音網站 (http://chewing.good-man.org/) array30 - 行列 30 輸入法 行列輸入法和其它的輸入法比較起來, 亦是一種易學易用的輸入法, 它以字形為基礎 摒棄某些字形輸入法中一些較為複雜難明的部分, 結合自己的特色設計成 特別是熟練以後, 在中文輸入上會有較大的突破, 比較適合大眾學習 行列輸入法的家, 則提供行列輸入法的相關信息, 包括線上教學 - 教您學會如何使用行列輸入法, 線上指導 - 以 FAQ 形式指導您在學習行列輸入法過程中所遇到任何疑難問題, 以及行列科技公司最新動態 公司簡介 產品櫥窗等等欄目, 向您從多個方面介紹行列輸入法 如果您有興趣的話, 這裡是一個很好的切入點, 幫助您學習並掌握它 WWW: 行列科技 (http://www.array.com.tw/) liu - 嘸蝦米輸入法 簡單易學, 快速, 在各項比賽中常名列前矛 平均取碼數少, 不過內建此輸入法的中文系統不多, 需花錢買 WWW: 行易公司網站 (http://www.liu.com.tw/) WWW: 蝦米族樂園 (http://liu.twbbs.org/) dayi - 大易輸入法 大易輸入法是中文 Windows 內付的輸入法, 新的 大易輸入法 v5.1 詞庫版 最新三碼功能, 每個字 最多 三碼, 較上個版本快 30% 快速輸入常用標點 全英文及全形符號 依照筆劃順序寫碼 提供大易輸入法技術支援您可以從選單中, 來選擇您所要查詢的問題 在 xcin25 底下新增大易輸入法 # cd /usr/x11r6/lib/x11/xcin25/tab/big5 # fetch ftp://xcin.linux.org.tw/pub/xcin/xcin/contrib/dayi3.cin #../../bin/cin2tab dayi3.cin # vi /usr/x11r6/etc/xcinrc 53

64 Chapter 7. 中文的顯示及輸入 --- xcinrc.orig Fri Oct 12 18:07: xcinrc Fri Oct 12 18:08: ,7 +109,7 - + ; (DEFAULT_IM_SINMD (PHRASE (CINPUT (FONTSET (OVERSPOT_FONTSET -138,6 +138,23 + (define ((SETKEY (MODULE +(define + ((SETKEY + (AUTO_COMPOSE + (AUTO_UPCHAR (AUTO_FULLUP (SPACE_AUTOUP (SELKEY_SHIFT (SPACE_IGNORE (SPACE_RESET (AUTO_RESET (WILD_ENABLE (SINMD_IN_LINE1 (END_KEY (BEEP_WRONG (BEEP_DUPCHAR "DEFAULT") "default.phr") (cj chewing simplex phone bimspinyin bimsphone jyutping array30 zh_hex)) array30 zh_hex dayi3)) "-sony-*-24-*-iso8859-1,-*-24-*-big5-0") "-sony-*-16-*-iso8859-1,-*-16-*-big5-0"))) 6) "bimsphone"))) 7) YES) YES) NO) NO) YES) YES) YES) YES) YES) NO) NO) YES) YES))) (define ((SETKEY 8) WWW: 大易公司網站 (http://www.dayi.com/) 7.2. 中文控制台 (Console) 進行中文化的工作, 我們先從最簡單的中文終端機做起, 若要讓 Virtual Console 擁有顯示及輸入中文的能力, 目前有 :big5con zhcon 等中文虛擬終端機軟體可以選擇 在 Console 下, 目前的中文顯示都是靠直接驅動主機的顯示卡進入繪圖模式, 遠端是無法使用的 像是 telnet putty 等純文字的遠端連線軟體, 更是無法處理繪圖模式的輸出, 所以遠端也就沒有辦法使用這些中文控制台 (Console) 54

65 Chapter 7. 中文的顯示及輸入 big5con - 類似倚天的中中文文 Console 一種在主控台 (console) 上提供顯示, 輸入的中文文字顯示程式, 操作介面類似倚天中文 chinese/big5con 的安裝 : # cd /usr/ports/chinese/big5con # make install 在 console(vty or ttyv?) login 後直接打 b5c 會進入 big5con: Ctrl-Alt-9: Ctrl-Alt-3: Ctrl-Alt-6: 嘸蝦米注音詞音 其它按鍵習慣大部分和 et3 同 若要增加其它輸入法, 如倉頡, 可編輯 /usr/local/bin/et /usr/local/bin/b5c -altmeta 1 -in9 Boshiamy.tab -in1 cj.tab 加上 -in1 cj.tab 表示 Ctrl-Alt-1 切換到 cj.tab ( 倉頡 ) /usr/local/lib/xcin/*.tab 有其它輸入法可選用 其它參數的使用法 :/usr/local/lib/xcin/xcin.help 通常 b5c 和 screen 一起搭配使用, 以發揮 buffer & cut-paste &... 的功效, 執行順序為 : b5c 先, screen 後, 也就是 b5c 儘量在 console login 後立即執行, 進入 big5 console 後再跑其它輔助功具 若 b5c 造成 console 失常, 可透過 watch -W v0 遠端回復 -- man watch ftp://freebsd.ntu.edu.tw/freebsd/woju/source/vgalib.txt 若螢幕偏掉或花掉, 通常是 scan freq 的問題, 可利用螢幕硬體微調開關調整顯示區域的位置和大小 若有裝 XFree86, 也可啟動 X 後使用 xvidtune 調整妥當, 將最佳參數記入 /usr/local/etc/big5con.cfg 若使用 telnet 無法輸入中文 ( 出現亂碼 ), 請參考 telnet 一節 如果執行時有問題, 先檢查 /dev/vga 是不是 symlink 到 ttyv0? ls -l /dev/vga, 如果不是的話請執行 ln -sf /dev/ttyv0 /dev/vga Note: 以下提供一個登入就執行 b5c 的方法, 在 ~/.cshrc 最後加入以下程式碼 : if ( tty cut -b 1-9 == "/dev/ttyv" ) then exec b5c endif 55

66 Chapter 7. 中文的顯示及輸入 Figure 7-1. big5con snapshot 更多的資訊 : ftp://www.tw.freebsd.org/pub/taiwan/ntu/woju/binary/b5c.html (ftp://www.tw.freebsd.org/pub/taiwan/ntu/woju/binary/b5c.html) WWW: (http://sourceforge.net/projects/big5con/) zhcon - 基於 FrameBuffer 的控制台多內碼中中文文平台 zhcon 是一個基於 FrameBuffer 的控制台多內碼中文平台 他能夠透過 FrameBuffer 在控制台上顯示簡體中文 繁體中文 日文 韓文 目前版本的 zhcon 擁有以下的特性 : 完全支持 FrameBuffer 設備 ( 從 640x480x8bpp 到 1024x768x32bpp), 支持多種內碼 (GB2312,GBK,BIG5,JIS,KSCM), 並可使用熱鍵在五種內碼間動態切換自動識別 GB2312/BIG5 內碼, 並能在二者間自動切換可正確識別各種制表符號, 不會出現亂碼可用熱鍵瀏覽歷史螢幕, 支持所有基于碼表的 Windows98 輸入法和 UCDOS 輸入法 ( 系統內建 12 種輸入法 ) chinese/zhcon 的安裝 : # cd /usr/ports/chinese/zhcon # make install 功能鍵說明 : CTRL_SPACE: ALT_SPACE: CTRL_,: 打開 / 關閉輸入法顯示 / 隱藏輸入條切換全角 / 半角 56

67 Chapter 7. 中文的顯示及輸入 CTRL_.: CTRL_F1: CTRL_F2: CTRL_F3: CTRL_F4: CTRL_F5: CTRL_F9: CTRL_F10: CTRL_ALT_1 - CTRL_ALT_9: CTRL_ALT_0: 切換中文標點 切換至 GB2312 內碼切換至 GBK 內碼切換至 BIG5 內碼切換至 JIS 內碼切換至 KSCM 內碼切換 GB2312/BIG5 自動識別模式進入選單切換輸入法英文輸入 輸入法選項 : CTRL_ALT_1: CTRL_ALT_2: CTRL_ALT_3: CTRL_ALT_8: CTRL_ALT_9: 無蝦米倉頡注音行列 30 無蝦米 Note: 注音在選字上必須用 ALT_ 數字才能選字, 用 + 或 = 換頁 歷史瀏覽 : SHIFT_PAGEUP: SHIFT_PAGEDOWN: SHIFT_ARROWUP: SHIFT_ARROWDOWN: 上捲半個螢幕下捲半個螢幕上捲一行下捲一行 57

68 Chapter 7. 中文的顯示及輸入 Figure 7-2. zhcon snapshot sourceforge WWW: (http://sourceforge.net/projects/zhcon/) main WWW: (http://zhcon.gnuchina.org/) big5cce - 繁體中中文文 Console 環境 big5cce (BIG5 Console Chinese Environment) 一 前言 CCE (Console Chinese Environment) 為 Rui He, 撰寫的中文控制台系統 ( 改寫自著名的 kon), 但目前僅支援簡體 (GB) 的輸入方式 由於 CCE 支援 Mouse (Copy & Paste) 以及 multiple-terminal, 配合 Frame Buffer 顯示速度相當快速, 蠻希望能讓使用繁體 (Big5) 的 Linux/FreeBSD users 也能使用這套極佳的中文界面, 因此才有 big5cce 的出現 big5cce 主要是增加繁體中文的各項輸入法支援, 目前支援的輸入法計有倉頡 注音 輕鬆 大易 行列 嘸蝦米 內碼等, 而顯示的中文字形採用 FreeBSD 上著名的 big5con 所採用的 kc16.smf ( 轉成 cce 所使用的.bin) 此外, 還增加了半形 / 全形的輸入,Ctrl+Shift 的循環切換輸入法, 對於其它輸入法的增加可利用 big5cce 所提供的 cin2tab 將輸入法的.cin 轉換成 tab 並在 big5cce.cfg 中加入輸入法表格即可 二 安裝 # cd /usr/ports/outta-port/big5cce # make install 2) 依需求修改 /usr/lib/big5cce/big5cce.cfg 3) 執行檔將安裝在 /usr/bin/big5cce, 輸入法 字型及設定檔 (big5cce.cfg) 58

69 Chapter 7. 中文的顯示及輸入 則安裝在 /usr/lib/big5cce 目錄 三 輸入法 : 1) 使用 Ctrl+Shift 可輪流切換輸入法 (Only Linux) 2) Ctrl+Space 可切換中 / 英輸入狀態 3) Shift+Space 可切換半形 / 全形輸入狀態 3) Ctrl+Alt+0 內定為內碼輸入法, 不須載入輸入法表格 (.tab) 4) Ctrl+Alt+3 為預設的注音輸入法 5) Ctrl+Alt+1 ~ 9 會依 big5cce.cfg 中設定載入輸入法表格 (.tab) 的順序切換 6) Ctrl+Alt+9 預設為嘸蝦米輸入法,big5cce 會使用獨立的嘸蝦米輸入處理, 所以若想使用嘸蝦米輸入法請載入至 Ctrl+Alt+9 中 NOTE: big5cce 不提供嘸蝦米輸入法表格, 請使用者自行 download 嘸蝦米所使用的.cin, 利用 big5cce 所提供的 cin2tab 轉換成.tab 並在 big5cce.cfg 中加入輸入法表格即可 四 字形 : 1) big5cce 內定使用 kc16.bin 字型 2) 內附 hku-ch16.bdf 及 hku-ch16.bin 字形, 原先 cce/kon 所附之 bdf2bin 有些問題, 經 cnoize 改良過後才能成功將.bdf 轉成.bin 但仍有些字形會遺漏, 詳細說明請參考 font/bdf2bin.c 的註解 3) 若要增加新的字型 ( 例如 :BIG5+), 請修改 font.c 關於字形 Coding 的部份, 以及使用 grep "hard code" *.c 中找尋相關的程式碼 五 multiple-terminal: 1) Ctrl+Alt+A 開新視窗, 最多可同時開十組視窗 2) Ctrl+Alt+X 關閉所在視窗 3) Ctrl+Alt+N 下一個視窗 4) Ctrl+Alt+P 上一個視窗 六 Mouse support: 1) 滑鼠支援, 請在 big5cce.cfg 中設定使用的滑鼠 ( 內定 PS2) 2) 按住滑鼠左鍵可作文字反白 (Copy) 3) 按下滑鼠右鍵即在游標位址作 Paste 動作 4) 修正原先 cce/kon 在 Paste 文字的 bug (by cnoize) 七 其它功能 : 1) Ctrl+Alt+R Refresh 所在視窗 八 bugs/test: 1) 若欲使用 HardScroll 加速請在 Makefile 加入 -D HardScroll, 但會有一些問題, 請先不要使用 2) FreeBSD 4.0 在 Linux vmware 下 mouse 需設為 MouseSystems 才能 正常使用 Gian-Yan Xu. WWW: (http://linux.ee.tku.edu.tw/~kids/) 59

70 cce - 簡體中中文文控制台環境 Chapter 7. 中文的顯示及輸入 該程序是一個類似 WZCE,yact 和 chdrv 的控制台中文平台 進入該環境可以用 " 空格 +Ctrl" 鍵來切換中文 / 英文的不同輸入方式, "Ctrl+Alt+0~9" 可以用來改變不同的輸入法 "Ctrl+Alt+9" 是內碼輸入法 "Ctrl+Alt+0" 是拼音輸入法 默認情況下,CCE 以全拼輸入法作為默認輸入法, 並將五筆輸入法作為第二輸入法 你可以通過使用工具軟件 cin2tab ( 安裝在 /usr/lib/ccek 中 ) 和 tab2cin 來創建自己的輸入法 cin2tab 會將輸入法的源文件格式 (*.cin) 轉換成二進制格式, 而 tab2cin 完成的是相反的工作 Ctrl+Space Ctrl+Alt+0 Ctrl+Alt+9 Ctrl+Alt+1 Ctrl+Alt+2 Ctrl+Alt+3-Ctrl+Alt+8 切換中文 / 英文輸入法拼音輸入法內碼輸入法全拼輸入法五筆輸入法其它輸入法 WWW: (http://programmer.lib.sjtu.edu.cn/cce/cce.html) kon2 kon2 是ㄧ套支援 CJKV 的 Console 應用程式, 也是目前 big5con 和 cce 的前身, 不過他並不內含輸入法, 所以適合剛裝完找中文資料用, 因為他是目前最穩定的了 # cd /usr/ports/chinese/kon2 # make install kon2 使用 kcfonts 內的 kc15f 中文繁體字型, 這個字型包含了倚天外字等, 也包含了 fcitx 內的 gbkst16 中文簡體字型, 在切換的部份比較麻煩, 目前預設是使用 BIG5-0, 如果要使用簡體環境, 必須輸入 kon -Coding GBK-0, 繁體相對應的就是 kon -Coding BIG5-0, 而該程式目前也不管使用簡體或是繁體環境, 都會同時載入兩種字型, 所以會有一點點慢, 可以用 fld -i 來觀察目前載入的字型 % fld -i No. ShmId Font Name Size MemSize JISX x GBK-0 16x BIG5-0 16x X Window 下的中中文文輸入平平台台 若是打算使用 X Window 的中文環境, 則必須安裝一套中文 XIM Server, xcin25 在輸入的部分支援 locale 與 XIM 協定, 在 X Window 下的中文輸入是遵循的 X11R6 的標準, 也就是說, 只要應用軟體只要有 XIM 的標準, 都可以正常的輸入中文, 未來的 X window 應用軟體應該漸漸會朝向 XIM 的標準, 這樣才可以真正做到 xcin anywhere 目前已知支援 XIM 的軟體如 bluefish rxvt mozilla pydict gnomeicu 60

71 Chapter 7. 中文的顯示及輸入 xcin25 - 繁體中中文文 XIM Server 如果您常使用 X Window, 我們十分建議您採用 xcin25 與 rxvt 組合的方式, 來解決中文輸入的問題 xcin25 是 Xwindow Chinese INput 的縮寫, 是一個在 X Window 模式下執行的中文輸入系統, 因為 xcin25 是利用 X Window 的 Server/Client 方式執行的, 所以您只要啟動一個 xcin25 輸入視窗, 便可以對應許多的 rxvt 顯示虛擬終端機, 佔用系統資源比較小 也提供類似 DOS 環境下的忘形或自然輸入法的智慧型輸入選字環境 xcin25 的安裝 : # cd /usr/ports/chinese/xcin25 # make install 安裝完成後, 在 ~/.cshrc 中增加下列的設定 export 並在 XF86Config 中的 Section "Files" 區段增加 FontPath "/usr/x11r6/lib/x11/fonts/local/" 目前的 port 還包進了酷音輸入法 (chewing), 一種聰明的注音輸入法 它會根據常見的字詞, 自動將您所輸入的注音轉變為適當的中文字, 使您幾乎不需要在輸入時一直選取同音字 Figure 7-3. xcin25 snapshot WWW: (http://xcin.linux.org.tw/) chinput - 簡體中中文文 XIM Server 從 Chinput-2.1 在 Linux 平台上移植過來的軟體 目前有 chinput 與 chinput2 兩種套件 中文 GB BIG5 日文碼輸入伺服器 chinput 的安裝 : # cd /usr/ports/chinese/chinput # make install # cp work/chinput/fonts/*.pcf.gz /usr/x11r6/lib/x11/fonts/local/ # mkfontdir /usr/x11r6/lib/x11/fonts/local/ # xset fp rehash chinput3 的安裝 : # cd /usr/ports/chinese/chinput3 # make install 安裝好 chinput 後, 記得要修改.xinitrc 的 XMODIFIERS, 如果沒有的話就自行加上 export 61

72 Chapter 7. 中文的顯示及輸入 然後只要用 chinput & 就可以開啟, 不過預設開啟的時候是隱藏的, 必須再用 ctrl+space 叫出來 熱鍵 : Control-space: Control-LeftButton: Alt-space: Control-Alt-Space: F1: (Shift)Fn: 隱藏 / 彈出輸入窗口隱藏輸入窗口 ( 適用于在不支持 XIM 的軟件中工作時想把輸入條隱藏的場合 ) 切換輸入條的顯示模式 ( 根窗口模式和光標跟隨模式 ) 切換自動隱藏和非自動隱藏模式. 激活 / 禁止中文輸入切換輸入方法 接著開啟一個簡體終端機 :rxvt -fm "-aliasdefault-ming-medium-r-normal c-160-gb " -im Chinput & Author WWW: Yu Mingjian s Homepage (http://www.opencjk.org/~yumj/) xsim - 簡體中中文文 XIM Server xsim 的安裝 : # cd /usr/ports/chinese/xsim # make install 確認存在 /usr/x11r6/lib/x11/locale/zh_cn/xi18n_objs, 如果沒有, 可以拷貝這個 /usr/x11r6/lib/x11/locale/zh/xi18n_objs 並修改注釋 XlcEucLoader 的一行 修改 ~/.xinitrc 文件加入 export WWW: (http://sourceforge.net/projects/xsim) fcitx - 簡體中中文文 XIM Server fcitx 的安裝 : # cd /usr/ports/chinese/fcitx # make install 修改 ~/.xinitrc 文件加入 export 測試 : % setenv LANG zh_cn.euc % setenv LC_CTYPE zh_cn.euc % setenv % rxvt -fm "-*-gbk-*" -km gb & 如果是 KDE3 的使用者可能會發現無法使用的問題, 可能是因為預設 Root 而 fcitx 並不支援, 可以透過執行 qtconfig, 選擇 Interface -> XIM Input Style: Over The Spot, File -> Save, 然後重開要輸入的軟體即可 WWW: (www.fcitx.org/) 62

73 Chapter 7. 中文的顯示及輸入 7.4. X Window 下支援 XIM 的中中文文終端機 目前筆者知道支援中文顯示和中文輸入的終端機並不多, 如 aterm rxvt Eterm mlterm gnome-terminal konsole 等 aterm aterm 是一套彩色 vt102 終端機軟體, 支援透明和 XIM aterm 的安裝 : # cd /usr/ports/chinese/aterm # make install 筆者目前使用的設定 ~/.Xdefaults! Begin ports/chinese/aterm configuration aterm.bordercolor: aterm.background: aterm.backspacekey: aterm.cursorcolor: aterm.foreground: aterm.geometry: aterm.inputmethod: aterm.multichar_encoding: aterm.preedittype: aterm.scrollttykeypress: aterm.scrollttyoutput: aterm.scrollbar_right: aterm.shading: aterm.termname: aterm.transparent: True aterm.transpscrollbar: True aterm.troughcolor:! 您可選擇想要的字體大小! 國喬 16pt, 國喬 16pt aterm.font: aterm.mfont:! End ports/chinese/aterm configuartion black black "^H" IndianRed gray98 80x24 xcin big5 OverTheSpot True False True 30 xterm-color black 8x16 kc15f 63

74 Chapter 7. 中文的顯示及輸入 Figure 7-4. aterm snapshot WWW: (http://aterm.sourceforge.net/) rxvt rxvt 是 our extended Virtual Terminal 的縮寫, 一開始是與舊版本的 xcin 配合才有一個可以輸入中文的 Terminal, 不過現在逐漸有其他的 Terminal 出現, 以及 XIM 架構的確立, 和 X Window 的盛行,Terminal 逐漸顯得渺小 目前 rxvt 有兩個版本, rxvt rxvt-devel 等, 都支援 XIM, 建議使用 rxvt-devel, 原因是 rxvt 無法使用 TrueType 的中文字型來顯示 rxvt-devel 的安裝 : # cd /usr/ports/x11/rxvt-devel # make install 另外再編輯 ~/.Xdefaults 來完成中文設定, 以下是筆者目前的設定 :! Begin ports/x11/rxvt-devel configuration rxvt.bordercolor: rxvt.background: rxvt.backspacekey: rxvt.cursorcolor: rxvt.foreground: rxvt.geometry: rxvt.inputmethod: rxvt.multibyte_cursor: rxvt.multichar_encoding: rxvt.preedittype: rxvt.scrollttykeypress: rxvt.scrollttyoutput: rxvt.scrollbar_right: rxvt.termname: black black "^H" IndianRed gray98 80x24 xcin yes big5 OverTheSpot True False True xterm-color 64

75 Chapter 7. 中文的顯示及輸入 rxvt.troughcolor:! 您可選擇想要的字體大小! 國喬 16pt, 國喬 16pt rxvt.font: rxvt.mfont:! End ports/x11/rxvt-devel configuartion black 8x16 kc15f 不過 rxvt 無法使用拷貝與貼上到其他的應用軟體, 所以我通常都會改用 Eterm 來替代 不過黑底白字還是會有點醜, 通常筆者都會找 XPM 來當底圖, -pixmap xpmfile, 或是找比較深色的桌布, 用 -tr 來把桌布當底圖 另外, 現在還支援 Multibyte Character Cursor movement 參數是 -mcc, 可以一次移動一個漢字 一次漢字 所有原先一次半個漢字的東東 ( 如在 joe pine 等 ) 現在都可以方便的使用了!login 到別台電腦上也可以這樣子 不過原先用 vim 會變成一次移動兩個漢字, 要 set fileencoding=ansi 才會正常 Figure 7-5. rxvt snapshot WWW: (http://www.rxvt.org/) Eterm 除了 rxvt 以外的另一個選擇, 支援 XIM, 功能少但是比 rxvt 穩定 tinting+transparency+scrollbar 則是另一個賣點 Eterm 的安裝 : # cd /usr/ports/chinese/eterm # make install 如果習慣了 backspace 送出 ^H, 可以將 eterm.backspacekey: "^H" 設定寫在 ~/.Xdefaults 但是 Eterm 並不支援在 ~.Xdefaults 中的其他資訊, 所以通常都會另外寫一個 script 來啟動 Eterm, 例如寫在 /usr/x11r6/bin/eterm Eterm --font "-*-medium-r-normal-*-*-160-*-*-c-*-iso8859-1" \ --mfont kc15f --mencoding big5 --input-method xcin \ 65

76 Chapter 7. 中文的顯示及輸入 --preedit-type OverTheSpot -8 -g 80x24 -B next -O \ --cmod 200 & 比較好玩的參數如 :-P -P -P -P 等漂亮的底圖 所以筆者通常都會把圖加到 /usr/x11r6/share/eterm/pix/, 並修改 /usr/x11r6/share/eterm/pix/pixmaps.list 只留自己喜歡的圖 底圖以深色系為主, 因為預設的字是白色 或是用自己喜歡的圖 -P Figure 7-6. Eterm snapshot WWW: (http://www.eterm.org/) mlterm - 多國語言終端機 x11/mlterm 的安裝 : # cd /usr/ports/x11/mlterm # make install 並安裝 chinese/kcfonts, 接著開始設定環境 在家目錄下建立.mlterm 資料夾, 並且增加兩個檔案, 一個檔案是 ~/.mlterm/main, 增加如下的內容 : bg_color=black fg_color=white geometry=80x24 若是 XFree 之前則另外加上 big5_buggy=true 來解決複製貼上的問題 並增加另一個檔案 ~/.mlterm/font 如下的內容 : BIG5=16,kc15f;20,-*-medium-r-normal--20-*-big5-0;24,kc24f; 若是要使用 anti-alias 的功能則要修改 ~/.mlterm/aafont 來增加以下的內容 : ISO8859_1=AR PL Mingti2l Big5-ISO8859-1; 66

77 Chapter 7. 中文的顯示及輸入 BIG5=AR PL Kaitim Big5-ISO ; JISX0208_1983=AR PL Kaitim Big5-BIG5-0; 並在 ~/.mlterm/main 增加 use_anti_alias=true Figure 7-7. mlterm snapshot WWW: (http://mlterm.sourceforge.net/) 7.5. X Window 下的內建輸入法中中文文終端機 cxterm 在 X Window 模式下執行的中文虛擬終端機, 為最古老的中文顯示 / 輸入環境, 提供各種中文內碼模式, 包含 BIG5,HZ,GB 等等 每一個 cxterm 虛擬終端機都必須載入中文資料, 耗用的系統資源相當大, 故現在都以 rxvt 來取代之 cxterm 的安裝 : # cd /usr/ports/chinese/cxterm # make install 然後用 CXterm -bg black -fg white -big5 & 啟動就可以看到中文的介面了 以下是輸入法的切換方式 : SHIFT_F1 - 英文輸入 (ASCII input) SHIFT_F2 - 漢字輸入 :: 內碼 :: SHIFT_F3 - CXTERM input configuration SHIFT_F4 - 漢字輸入 :: 拼音 :: SHIFT_F5 - 漢字輸入 :: 標點符號 :: SHIFT_F6 - 漢字輸入 :: 零壹注音 :: 67

78 Chapter 7. 中文的顯示及輸入 SHIFT_F7 - 漢字輸入 :: 倉頡 :: SHIFT_F8 - 漢字輸入 :: 英漢 :: SHIFT_F9 - 漢字輸入 :: 許式注音 :: SHIFT_F10 - 漢字輸入 :: 無蝦米 :: CTRL_ 滑鼠中鍵 - POPUP CONFIGURATION PANEL Figure 7-8. cxterm snapshot WWW: (http://cxterm.sourceforge.net/) 7.6. 新增輸入法 目前常見的輸入法表格有兩種格式 :tit 及 cin 這兩種都是純文字格式 ( 換句話說您可以直接用文書編輯 器來觀看 ) 但各個中文系統為了加快搜尋速度, 多半提供工具程式將純文字格式轉為特殊的二進位檔 如果您要安裝某種輸入法, 必須取得它的 tit 或 cin 表格, 或是轉換後的格式 以下嘸蝦米輸入法為例, 分別說明如何在各中文系統中加入嘸蝦米輸入法 : 行易公司已經不在允許嘸蝦米.cin 檔的自由傳播, 所以就沒有了嘸蝦米的輸入法表格 請自己利用檔案搜索引擎尋找 例如在以下的搜尋引擎輸入 liu55 (http://gais.cs.ccu.edu.tw/gaisftp/) 利用 xcin25 的工具程式 cin2tab 將.cin 表格轉換為.tab 檔 : # /usr/x11r6/lib/x11/xcin25/bin/cin2tab liu55.cin CIN2TAB 版本 (xcin ) 字集編碼名稱 =big5 cin2tab: cin 表格檔 : liu55.cin, 使用模組 : gencin 版本 cin2tab: 定義鍵的數目 : 31 cin2tab: 字鍵的最大長度 : 5 cin2tab: 編碼的字元總數 : cin2tab: 定義的字元數目 :

79 Chapter 7. 中文的顯示及輸入 cin2tab: 已定義的字鍵編碼數目 : cin2tab: 忽略的已定義字元數目 : 0 cin2tab: 記憶體模式 : 1 它會產生 liu55.tab 這個檔案 將它放到 /usr/x11r6/lib/x11/xcin25/tab/big5/ 的目錄中 接下來請修改您的 xcinrc 的設定檔, 其中每行開頭的 - 和 + 分別代表刪除這一行和新增這一行, 內容如下 : ; ; This is the global configuration of the zh_tw.big5 locale ; (define zh_tw.big5 ((DEFAULT_IM (DEFAULT_IM_MODULE "cj") "gen_inp") - + (DEFAULT_IM_SINMD (PHRASE (CINPUT (FONTSET (OVERSPOT_FONTSET "DEFAULT") "default.phr") (cj simplex phone bimspinyin bimsphone jyutping array30 zh_hex)) array30 zh_hex liu55)) "-sony-*-16-*-iso8859-1,-*-16-*-big5-0") "-sony-*-16-*-iso8859-1,-*-16-*-big5-0"))) ; ; Here are detailed configuration of each IM (for zh_tw.big5 locale). ; + (define + ((SETKEY 9))) 啟動 xcin25: # xcin2.5 & 然後用 CTRL-ALT-9 即可叫出嘸蝦米輸入法 WWW: (http://xcin.linux.org.tw/xcin/2.5.2/cin.html) 以下是如何在 big5con 底下新增嘸蝦米輸入法 到檔案搜索引擎找 boshiamy, 就可以發現有 boshiamy.tgz, 下載之後, 解壓縮到 /usr/local/lib # fetch ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/ntu/woju/binary/boshiamy.tgz # tar zxvf boshiamy.tgz -C /usr/local/lib 然後編輯 /usr/local/bin/et 加入 -in9 Boshiamy.tab, 然後直接打 et 來啟動 big5con 7.7. 在 Shell 底下的中中文文輸入 在我們完成中文系統建立的工作, 您已經可以在您的 FreeBSD 機器上面顯示中文了 但如果您使用 Shell, 您會發現, 您的 FreeBSD 只能顯示中文, 卻無法接受中文的輸入工作 如果您想要改進這個問題, 您必須自己修改一些設定, 使 FreeBSD 系統可以接受中文的輸出與輸入工作 您必須要在您使用的 Shell 起始檔增加 locale 的設定 ( 如果您的家目錄中並未有這樣的檔案, 請自行建立 ) Bash Shell: 69

80 Chapter 7. 中文的顯示及輸入 在 ~/.profile 或 ~/.bashrc 增加下面的內容 : #stty cs8 -istrip #stty pass8 export LANG=zh_TW.Big5 export LC_CTYPE=zh_TW.Big5 另外在 ~/.inputrc 檔增加設定如下 : # inputrc - global inputrc for libreadline # See readline(3readline) and info rluserman for more information. # Be 8 bit clean. set meta-flag on set input-meta on set output-meta on # To allow the use of 8bit-characters like the german umlauts, comment out # the line below. However this makes the meta key not work as a meta key, # which is annoying to those which don t need to type in 8-bit characters. set convert-meta off Tcsh Shell: 在 ~/.login 或 ~/.cshrc 增加設定如下 : #stty cs8 -istrip #stty pass8 setenv LANG zh_tw.big5 setenv LC_CTYPE zh_tw.big5 set dspmbyte=" " 請將 dspmbyte 在 "" 中的字串接起來 關於 dspmtype 設定的原因是因為在 tcsh 的 man page 中, 對照 Big5 的使用字碼表 [\x81-\xfe][\x40-\x7e\x80-\xfe] 而設定的 tcsh-6.11 內建了中文 big5 支援 dspmbyte (+) If set to euc, it enables display and editing EUC-kanji(Japanese) code. If set to sjis, it enables display and editing Shift-JIS(Japanese) code. If set to big5, it enables display and editing Big5(Chinese) code. If set to the follow ing format, it enables display and editing of original multi-byte code format: 所以以後 dspmbyte 設定成 big5, 不用設定一大串 ; 或者乾脆不要設定 dspmbyte, 只要 LANG 為 zh_tw.big5 就可以了 :) 70

81 Chapter 7. 中文的顯示及輸入 2001/09/05 -CURRENT 匯入 tcsh /10/08 -STABLE 匯入 tcsh 最後, 請您自己準備一個已經包含中文字的檔案, 利用 grep 工具程式來搜尋其中的文字 如果可以找得到, 表示您的 FreeBSD 系統已經可以處理中文字了 Figure 7-9. tcsh snapshot 7.8. big5fs - Joliet, VFAT 和 NTFS 檔案系統的中中文文顯示 如果您的電腦是 FreeBSD 與 VFAT (Windows95/98) 或是 NTFS (Windows NT/2000) 並存, 而且又須要存取 DOS 檔案系統或是 NTFS 檔案系統的中文檔名, 或是需要讀取 Joliet (CDROM) 內的中文, 請依照以下的步驟進行 它會安裝三個 kernel 模組, cd9660.ko, msdos.ko(msdosfs.ko) 和 ntfs.ko, 將可以讓使用者讀取在 Joliet, VFAT 和 NTFS 檔案系統上的中文檔名 必須把 kernel 中的 options MSDOSFS 與 options CD9660 comment 掉, 並重新 make kernel 後, 並且重新開機 後, 才能安裝 big5fs 因為上面的 kernel 選項會和這個 port 所安裝的 kernel 模組有衝突, 而 kernel 選項會比 kernel 模組優先, 也沒辦法關閉這些選項來讓 kernel 使用 kernel 模組, 所以就一定得重編 kernel 不然當安裝完後, 執行 big5fs.sh 就會出現 kldload: can t load cd9660: File exists 或是 module_register: module cd9660 already exists! linker_file_sysinit "cd9660.ko" failed to register! 17 之類的錯誤訊息, 代表著模組有衝突, 可能是已經設定為 kernel 選項, 或是已經用 kldload 載入了 --- GENERIC.orig Fri May 16 17:39: GENERIC Wed May 28 03:37: ,8 +38,8 options MD_ROOT #MD is a potential root device options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, NFS required -options MSDOSFS #MSDOS Filesystem -options CD9660 #ISO 9660 Filesystem +#options MSDOSFS #MSDOS Filesystem +#options CD9660 #ISO 9660 Filesystem options CD9660_ROOT #CD-ROM usable as root, CD9660 required options PROCFS #Process filesystem options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] 在安裝前先檢查 /usr/src/sys 目錄要已有了, 若沒可用 /stand/sysinstall 和安裝光碟安裝 由於 kernel 模組和系統有相依性, 必須取得你當時安裝時的 kernel 版本才行 chinese/big5fs 的安裝 : # cd /usr/ports/chinese/big5fs # make install 安裝好後, 執行 /usr/local/etc/rc.d/big5fs.sh 就會載入上述的模組, 好讓 mount 指令能使用這些模組, 通常也會在開機時自動執行, 以防 mount 指令直接讀取了 /modules 底下的 kernel 模組 71

82 Chapter 7. 中文的顯示及輸入 如果不確定那些分割區可以 mount, 可以用 /stand/sysinstall 的 Configure -> Label 取得 以筆者為例, 筆者有個 ad0s3 的分割區, 所以先 mkdir -p /mnt/ad0s3, 然後用 /mnt/ad0s3 將該分割區 mount 起來測試看看, 如果確定可以的話, 寫入 /etc/fstab: /dev/ad0s3 /mnt/ad0s3 msdos ro,noauto 0 0 mount -t msdos /dev/ad0s3 然後加個 /usr/local/etc/rc.d/big5mount.sh, 裡面按照 rc.d 的規則在 start 的地方執行 mount /mnt/ad0s3 就可以了, 也可以在 stop 時候加上相對應的指令來 umount 注意 rc.d 裡的 *.sh 會依字母順序執行, 所以新的 xx.sh 一定要在 big5fs.sh 後面, 才能確定已經載入 kernel 模組 本來考慮使用 mount_msdos 的方式並修改該 table, 不過因為 table 太小, 沒辦法容納如此多的中文字元所以沒辦法實行 The following example fstab(5) entry enables support for Russian filenames in mounted MS-DOS filesystems: /dev/ad0s2 /dos/c msdos rw,-w=koi2dos,-l=ru_ru.koi8-r 0 0 See mount_msdos(8) for a detailed description of the -W and -L options. Figure ntfs snapshot 7.9. gnuls - 特殊中中文文檔名和目錄的顯示 使用 gnuls 取代 ls 的原因是沒有 -N " 四分衛 " 就變成 " 分衛 " -N, --literal print raw entry names (don t treat e.g. control characters specially) gnuls 的安裝 : 72

83 Chapter 7. 中文的顯示及輸入 # cd /usr/ports/misc/gnuls # make install 並設定 alias 為 alias ls gnuls --color=auto --show-control-chars 這樣 gnuls 顯示才會正常 ls 無法顯示中文通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 中加上下面的 alias 即可 : alias ls env LC_CTYPE=en_US.ISO_ ls 或是進行以下的步驟來修補 /usr/src/bin/ls, 如果沒有此目錄請自行安裝 # cd /usr/ports/outta-port/ls # make install 然後用 env TERM=xterm-color zh-ls -G 就有彩色顯示的目錄與檔案了 以下的設定可以讓 /bin/ls 還有 tcsh 內建的 ls-f (or Ctrl-D) 的彩色顯示一致, 它是 tcsh builtin command, 不過有時候會有問題 LSCOLORS 是給 ls 用的環境變數, 而 LS_COLORS 則是給 gnuls, 兩者的格式並不相同 # setenv CLICOLOR # set color # setenv LS_COLORS di=0;34:ln=0;35:so=0;32:pi=0;33:ex=0;31:bd=0;34;46:cd=0;34;43 Figure gnuls snapshot xpdf - 中文 PDF 的顯示 xpdf 是用來瀏覽 Portable Document Format (PDF) 檔案的好工具 ( 通常也會稱這些檔案為 Acrobat 檔, 因為 Adobe 的 PDF 軟體 ) # cd /usr/ports/graphics/xpdf # make install 安裝完後, 只要在 ~/.Xdefaults 中設定中文字型, 就可以很正常的看非內嵌中文的檔案 xpdf.chinesecnsfont: -*-*-medium-r-normal-*-%s-*-*-*-*-*-big5-0 xpdf.chinesegbfont: -*-*-medium-r-normal-*-%s-*-*-*-*-*-gb 現在 xpdf 已經將 xpdf 中的 CMap 與主程式分開了, 如果要看到中文還必須安裝 xpdf 的 CMap 檔 當您看到這樣子的錯誤訊息 : 73

84 Chapter 7. 中文的顯示及輸入 Error: Couldn t find cidtounicode file for the Adobe-CNS1 collection Error: Unknown character collection Adobe-CNS1 Error: Couldn t find ETen-B5-H CMap file for Adobe-CNS1 collection Error: Unknown CMap ETen-B5-H for character collection Adobe-CNS1 則表示沒安裝 xpdf CMap, 所以要安裝並設定好字型 : # cd /usr/ports/chinese/xpdf # make install 如果裝好還看到以下的訊息 : Error: Couldn t find ETenms-B5-H CMap file for Adobe-CNS1 collection Error: Unknown CMap ETenms-B5-H for character collection Adobe-CNS1 這是因為 ETenms-B5-H 已經不在 Adobe 的現存標準內, 你可以手動把 /usr/local/share/ghostscript/resource/cmap/ 底下的 ETen-B5-H 拷貝成 ETenms-B5-H xpdf 中也包含一個 PDF 轉純文字檔的程式, 可以用 pdftotext -enc Big5 file.pdf 轉出文字檔 file.txt, 但是有個缺點就是英文會變成全形字, 這個問題可能要修改原始碼才能解決 Figure xpdf snapshot WWW: (http://www.foolabs.com/xpdf/) WWW: (http://www.cs.cmu.edu/~dst/adobe/gallery/) 74

85 Chapter 8. 中文視視窗窗管理程式 8.1. GNOME 程式的中中文文支援 GNOME 並不是一個軟體, 而是由 GNU Project 的另一項軟體計劃, 而它的目標就是創造出一個完整而友善的桌面環境 為了達成這個目標, 在 GNOME 收集的工具中, 包含了發展工具, 網路工具, 數學工具, 還有系統管理和桌面管理的工具, 甚至連娛樂用軟體和多媒體處理的工具都包含在它的收集之列, 讓您的 X Window 使用起來, 簡直有如虎添翼一般 但 GNOME 的好處不僅僅如此而己, 現在我們在 X Windows 底下, 當您要開啟某個檔案, 您只要在 GNOME 的檔案總管按二下就可以檢視它了 這原本只能在 Mac OS 或 MS Windows 看的到的能力, 現在在 GNOME 之下, 在 X Windows 下也能看到 GNOME 程式是基於 GTK+ 這個函式庫開發出來的, GTK+ 的國際化一直做的不錯, 所以在我們的環境底下, 大部分的 GNOME 程式都可以正常使用中文了 訊息翻譯也由 (http://i18n.linux.org.tw) 正在進行著, 有空請多多給他們鼓勵吧 WWW: (http://www.gnome.org/) gtk2 在 gnome2.2 之後採用 xft2 & fontconfig 來設定字型, gtk2 的設定方式是用 ~/.gtkrc-2.0, 設定的格式與 ~/.gtkrc 相同, 但是取用字型的寫法不ㄧ樣 style "gtk-default-zh-tw" { font_name = "Sans 16" } class "GtkWidget" style "gtk-default-zh-tw" 如果要更改預設字型大小直接修改 ~/.gtkrc-2.0 就可以了, 而如果是要改顯示的字型則是可以選擇 ~/.gtkrc-2.0 或是 fonts.conf, 而字型名稱可以從 fc-list 這個指令得到 Note: 中文字在小字的時候, 某些字型使用 anti-alias 反而會變得模糊, gtk2 使用 Xft2, 設定檔則是 /usr/x11r6/etc/fonts/fonts.conf, 以下的範例是關閉小於 13 點字型時的 anti-aliasing <match target="pattern"> <test qual="any" name="size" compare="less"> <int>13</int> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> 另外 gtk2 不支援 OverTheSpot, 只支援 Root 及 OnTheSpot, 可以用 gconftool-2 更改設定 如果還是不行, 在輸入區按下右鍵, 選取輸入模組 XIM 75

86 Chapter 8. 中文視窗管理程式 gtk1 以下是 gtk1 的設定方式, 設定檔的內容如下 : ( 應該會在 /usr/x11r6/share/themes/default/gtk/gtkrc.zh_tw.big5 ) # $(gtkconfigdir)/gtkrc.zh_tw # # This file defines the fontsets for Chinese language (ch) using # the traditional chinese Big5 encoding as used in Taiwan (TW) # # 1999, Pablo Saratxaga <pablo mandrakesoft.com> # # IMPORTANT NOTE: The name of this file *MUST* be "gtkrc.zh_tw.big5" # the lowercasing of "big5" is done on purpose, if you change it it won t work style "gtk-default-zh-tw" { fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\ -taipei-*-medium-r-normal--*-*-*-*-*-*-big5-0,\ -*-*-medium-r-normal--16-*-*-*-*-*-big5-0,*-r-*" } class "GtkWidget" style "gtk-default-zh-tw" 這個檔案裡面設定了 zh_tw.big5 環境要用到的字型集, 上面的設定表示在使用 zh_tw.big5 環境的時候會需要用到兩種字體, 一個是 iso8859-* 的字體, 用來顯示英文字, 一種是 big5-0 的字體, 用來顯示 BIG5 中文 讀者可以把這個設定檔複製一份到 ~/.gtkrc, 更改裡面的設定, 就可以在 GNOME 環境底下使用自己喜歡的字體了 # cp /usr/x11r6/share/themes/default/gtk/gtkrc.zh_tw.big5 ~/.gtkrc 或是將 gtkrc.zh_tw.big5 拷貝成 gtkrc.zh_tw.big5 也是可以的 這是筆者偷懶的 ~/.gtkrc 範例 style "default" { fontset = "8x16,kc15f,-*-16-*-big5-0" } widget_class "*" style "default" GNOME 中文使用手冊 (http://www.linpus.com.tw/manual/gnome/index.html) 8.2. Enlightenment 的中中文文化 Enlightenment 的中文化雖然不是利用 po 檔翻譯, 不過中文選單只要經過如下的 patch 後就應該沒問題了, 不過在 Vanilla I. Shu 的大力幫忙下, 預設的 themes 已經都中文化好了, 只是如果下載新的 themes, 就必須自行做 patch 的部分 Enlightenment 的安裝 : 76

87 Chapter 8. 中文視窗管理程式 # cd /usr/ports/x11-wm/enlightenment # make install 選單的設定檔在 /usr/x11r6/share/enlightenment/config, 如果想中文化選單可以自己試試看 要 Enlightenment 的中文化, 只要 theme 裡面的字型設定正確就可以了 大部分下載的 theme 都只有設定 iso 的字型, 還要在後面加上 big5-0 的字型, E 的程式本體 " 基本上 " 不做任何字型設定, 任何字型都是從 theme 裡面定義的 在 theme 的 NORMAL 部分都是字型設定, 但這些字型設定是散在各個設定檔裡面 所幸,textclasses.cfg 就是讓您覆蓋用的, 現在的做法就是改成 fontset 的樣子就可以用了 例如原本的字串是 : NORMAL "-*-helvetica-bold-r-normal-*-*-120-*-*-*-*-*-*" 要改成如下 : NORMAL "-*-helvetica-bold-r-normal-*-*-120-*-*-*-*-*-*,-*-bold-r-*-12-*" 只要記得前面是 -bold-r- 就改成 -*-bold-r-*-12-*, -medium-r- 就改成 -*-medium-r-*-12-*, 這樣子出來的字型才會比較相近 上述的方法有一個特例, 就是 E 有個特異功能 不用 Xtt server 就可以 show ttf 字型 而它的 NORMAL 可以吃的字型有兩種 一種是 X 裡面設定好的字型 另一種是放在 theme 裡面的 *.ttf ([theme name]/ttfonts 裡面 ) E 目前還不能夠把 " 跟著 theme 來的 ttf" 和 "X 環境的任何字型 " 混在一起寫成 fontset 的型式 WWW: (http://www.enlightenment.org/) 8.3. KDE 的中中文文化 KDE, The K Desktop Environment 這套使用環境, 包含了三個工作區域 位於螢幕下方的 panel, 是用來開啟應用程式以及切換不同的虛擬桌面的 它有一個類似 MS-Windows 中的開始按鈕 (Application Starter), 是一個大 K 的圖案, 按下它就會顯示可以執行的應用程式 螢幕左上角的 taskbar, 是用來切換跟管理目前正在跑的應用程式的 而 desktop 本身, 可以用來放置檔案或是資料夾, KDE 提供數個虛擬桌面, 按下在 panel 的按鈕可以切換他們 KDE 有著很大的彈性, 可以讓我們很容易地設定成習慣的使用方式, 就拿 KDE Control Center 來說吧, 我們可以調整有關於 Applications( 桌面管理以及 panel 的各項設定 ) Desktop( 背景圖 顏色 螢幕保護 字形和語言 ) Information( 記憶體和 CPU 的使用率 ) Input Device( 鍵盤和滑鼠 ) Network( 網路相關 ) Sound( 事件音效 ) 以及 Windows 的各類模組 (modules) 的設定 KDE2 在中文化的方面做的很不錯了, 在 KDE2 中大部分的軟體都支援 XIM, 一下子多了很多好用且可以輸入中文的軟體, 而且畫面的美觀是這次改變的重點之一, 巫師好像也成為 KDE2 象徵, 真的建議有空試試看這一套軟體, 就算您對 KDE11 用過的感覺不好, 但是這次使用 KDE2 將會有完全不同的觀感, 訊息翻譯也由 (http://i18n.linux.org.tw) 正在進行著, 有空請多多給他們鼓勵吧 KDE WWW: (http://www.kde.org/) 這是 Taiwan KDE Users Group 77

88 Chapter 8. 中文視窗管理程式 KDE1 last update: 2003 年 1 月 19 日周日 08 時 18 分 25 秒 CST 這邊有個進入 KDE 會比較快的小秘訣 修改 ~/.qti18nrc: Ariel -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Andale -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Georgia -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Times -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Trebuc -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Verdana -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Courier -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 Helvetica -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 kai -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 ming -*-ming-medium-r-normal--*-*-*-*-c-*-big5-0 * -*-ming-medium-r-normal--*-*-*-*-c-*-big KDE2 last update: 2003 年 1 月 19 日周日 08 時 18 分 25 秒 CST KDE2 的安裝 : # cd /usr/ports/x11/kde2 # make install KDE2 區域化訊息的安裝 : # cd /usr/ports/chinese/kde2-i18n # make install Note: 記得安裝 chinese/arphicttf, 要不然設定出來的字還都會是問號 如果沒有辦法輸入中文的話, 用命令列模式試試加上 -im xcin, 例如 kword -im xcin 簡單的中文化設定 : 先開啟 控制中心 (Control Center), 個人化 (Personalization), 國家及語言 (Country & Language), 設定成 台灣 (tw), 繁體中文 (zh_tw.big5), big5-0 經過這樣的設定之後, 原則上,KDE2 就有完整的中文支援了 筆者的 KDE + Anti-Alias 安裝過程 : 1. 安裝 x11/xfree86-4,chinese/arphicttf,x11/kde2, chinese/kde2-i18n 2. 編輯 /etc/x11/xf86config, 將 load "freetype" 註解, 加入 load "xtt", 並在 FontPath 區段最前面加入 /usr/x11r6/lib/x11/fonts/truetype 3. 編輯 ~/.xftconfig, 加入 : 78

89 Chapter 8. 中文視窗管理程式 dir "/usr/x11r6/lib/x11/fonts/truetype" # Danny: # set the AA for different fonts # # most TT fonts do not need to be aliased between # 8 and 15 points, although this might be a matter of taste. match edit any size > 8 any size < 15 antialias = false; 4. 編輯 ~/.xinitrc, 在 startkde 前加入 export QT_XFT=true 5. 在控制中心 (Control Center) 改外表 & 感覺 (Look & Feel) 中的字型 (Fonts), 將在字型與圖示上使用反鋸齒的平滑潤飾 (Use Anti-Alising for fonts and icons) 勾選 ; 或是編輯 ~/.kde/share/config/kdeglobals 在 [KDE] 區段, 修改 AntiAliasing=true 6. 在控制中心 (Control Center) 的個人化 (Personalization) 的國家及語言 (Country & Language) 設定成台灣 (tw), 繁體中文 (zh_tw.big5),big5-0; 或是編輯 ~/.kde/share/config/kdeglobals 在 [Locale] 區段, 修改 Charset=big5-0,Country=tw, Language=zh_TW.Big5 7. 重新進入 KDE WWW: XFree86 Font De-uglification HOWTO (http://www.linuxdoc.org/howto/mini/fdu/index.html) KDE2 的替代字型 (fontguess): 在 KDE2 中修改 ~/.fontguess, 使 qt lib 在選擇替代字型時能正確無誤 [big5-0][gb ][ksc ] helvetica times courier utopia clean ming kai ming ming ming ming ming ming ming ming ming ming gulim batang dotum gulim gulim helvetica helvetica helvetica helvetica helvetica helvetica WWW: To support multibyte in KDE 2.0 applications. (http://www.mizi.com/kde/doc/fontguess/) KDE3 KDE3 的安裝 : # cd /usr/ports/x11/kde3 # make install clean KDE3 區域化訊息的安裝 : # cd /usr/ports/chinese/kde3-zh_tw # make install 79

90 Chapter 8. 中文視窗管理程式 by OfO last update: 2003 年 1 月 19 日周日 08 時 18 分 25 秒 CST KDE3 的替代字型 (qtconfig): 用 qtconfig -> Fonts -> Font Substitution 選一個英文字型, 例如 Times New Roman [Xft]... Xft 代表是 Xft 的 render, 如果與 /usr/x11r6/lib/x11/xftconfig 或 ~/.xftconfig 沒有相左的話就會有 AA 接著 Select substitute Family 選 PMingliu [Xft],Add 高興的話可以選擇 SimSun 或是 SimHei, 再加選一個 Bitstream Cyberbit 做 fallback SimSun 和 SimHei 的特性是只有半形字有做 hinting, 全形字沒有 在很多情況下這樣反而比較好看, 缺點是半形字是 Fixed width, 字距太大有點醜 這樣設好之後到 Konqueror 的 Appearance -> Font 地方把 Serif 字型調成剛剛設的 Times New Roman [Xft], 至於其他的 Sans Serif 可以調成 Verdana, 效果很好, 自然也要在 qtconfig 中設定 Font Substitution Sans Serif 是沒有襯線的字型, 我以為中文的 equivalent 是黑體一類的字型, 所以可以加入 SimHei 當作中文的 Sans Serif 字型, Serif 的襯線字型就要用 PMingLiU 一類的字 這樣做的意思是說, 當使用 Qt3 的程式被設定為使用 Times New Roman [Xft] 來畫字的時候, 一旦遇到了 Times New Roman 沒有 cover 到的字元時 ( 如中文字 ) 就會去找第一個 Substituion Font 來看看有沒有, 如果沒有再往下找, 一直到找到為止 所以可以對各種不同語系分別設定不同的 Substitution Font, 來達到各取所長的效果 Figure 8-1. konq_3_1 snapshot 注意標題列我是用 Verdana/SimHei, 內文的字則是被設定為 Times New Roman/MingLiu 80

91 Chapter 8. 中文視窗管理程式 Figure 8-2. konq_3_2 snapshot Font Substitution: 用 PMingLiU 畫日文漢字, 再用 Cyberbit 畫假名, 英文仍是用 Times New Roman 但好像是因為 PMingLiU 的先天 coverage 不夠大, 導致有些日本寫法的漢字沒有出來 設成其他的應該不錯 MS 的 Fonts 都花了很多心思在 Hinting 上面, 所以小字的 AA 或 ~AA 顯示效果都很棒 用 Times New Roman 看英文文章 ( 有人統計過是最易閱讀的字體 ) 很舒服啊! 但如果是斜體還有大量鋸齒就看得很累了 Figure 8-3. konq_3_3 snapshot QT_XFT 是給 QT 2.x 用的,Qt3.x 這個選項就不再有用了 arphic 的字型有另一個問題是, 有些字的寫法不是正確的 " 正體中文 " 寫法 81

92 Chapter 8. 中文視窗管理程式 像是 角 的裡面是穿出來的 所以叫做文鼎細 上海 宋 SimSun 以及 SimHei 也是同樣的道理 ( 大陸做的 ), 像是錯誤的誤右邊是口天吳, 但是其餘的字因為沒有不當的 hinting, 所以整體還是很好看 小字的時候有 Anti-Aliasing 不如沒有 Anti-Aliasing 的問題, 那應該是不當的 hinting 所致 像是 Verdana 一類小字的 AA 就非常好看啊 Figure 8-4. kfont_3_1 snapshot Fixed 的 Font 我喜歡用 MSung Light TC, 因為不但是 Unicode 而且半形很好看 Figure 8-5. konq_3_4 snapshot 另外,Keith Packard 的 FontConfig 也出來了, 但還沒空研究怎麼用就是了 82

93 Chapter 8. 中文視窗管理程式 8.4. WindowMaker 的中中文文化 WindowMaker 在中文化的方面做的很不錯了, 目前已經有 I18N 的套件了, 介面大部分已經中文化了 這 都是仰賴 I18N 的成果 WindowMaker 的安裝 : # cd /usr/ports/x11-wm/windowmaker # make install 中文標題列的問題可以檢查以下的設定, 不過筆者在 _1 版本時, 完全不需要修改就已經可以在選單與標題看到中文 : 1. 檢查 ~/GNUStep/Defaults/WMGLOBAL 檔, 如果沒有就自己建立一個內容如下 : { MultiByteText = YES; } 2. 確認中文字型, 編輯 ~/GNUStep/Defaults/WindowMaker, 修改以下選項 : MultiByteText = YES; WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*, -*-ming-bold-r-normal--12-*-*-*-*-*-big5-0"; MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*, -*-ming-bold-r-normal--12-*-*-*-*-*-big5-0"; IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*, -*-ming-medium-r-normal--8-*-*-*-*-*-big5-0"; ClipTitleFont = "-*-helvetica-medium-r-normal-*-10-*-*-*-*-*-*-*, -*-ming-medium-r-normal--10-*-*-*-*-*-big5-0"; 以上只是個例子, 當然必須確認有無相對字型 重新啟動 WindowMaker, 用 rxvt -T " 中文顯示 " & 測試一下 83

94 Chapter 8. 中文視窗管理程式 Figure 8-6. windowmaker snapshot WWW: (http://www.windowmaker.org/) 8.5. Sawfish 的中中文文化 Sawfish 在中文化的方面做的很不錯了, 目前已經有 I18N 的套件了, 介面大部分已經中文化了 這都是仰賴 I18N 的成果 sawfish 的安裝 : # cd /usr/ports/x11-wm/sawfish # make install WWW: (http://sawmill.sourceforge.net/) 84

95 Chapter 9. 中文的列列印印 PostScript 是印表機控制語言的標準,GhostScript 是 PostScript 解譯器, 可以用來模擬實際的印表機支援 所以選購印表機時, 必須選擇印表機支援 PostScript 的, 或是 GhostScript 所支援的印表機 GhostScript 的首頁 (http://www.cs.wisc.edu/~ghost/) 中有支援的印表機清單, LinuxPrinting.org (http://www.linuxprinting.org/) 也有許多關於印表機支援的狀況 WWW: 自由軟體簡介 - 中文輸出 (http://www.softwareliberty.org.tw/project/software-map/v1.01/node111.html) WWW: Japanese Printing and Text Processing With Linux (http://www.twics.com/~craig/writings/linux-nihongo/node68.html) 首先您必須設定好您的 /etc/printcap 以及其他部份, 此部份請參考 zh-handbook (http://freebsd.sinica.edu.tw/handbook/printing.html) 或是英文版 FreeBSD handbook (http://www.freebsd.org/handbook/index.html) 以下是一台 PostScript2 USB 印表機的設定 :( 如果您沒有 Postscript 印表機, 請安裝 ports/chinese/ghostscript6 來模擬 PostScript) 但是如果您的印表機只支援 Windows 或是 MacOS, 那麼請用 ps2pdf12/ ps2pdf13 將下面各方式做出的 output.ps 轉成 pdf 檔案到 windows 下去列印 只要打 : ps2pdf1x output.ps output.pdf 即可 ( 其實若是有此情況, 我們建議您直接將原本需要列印的檔案直接傳至印表機所在的機器列印即可 ) lp local line printer:\ :sh:\ :mx=0:\ # 設定無最大檔案大小 :lp=/dev/ulpt0:\ # 此項請依照您印表機所在的 port 改成 lpt0 或是其他 port sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: 下來請安裝 ( 請記得使用 make WANT_GS6=yes install) 1. ports/chinese/arphicttf 2. ports/chinese/bg5ps ( 請記得 cp /usr/local/etc/bg5ps.conf.samle /usr/local/etc/bg5ps.conf) 3. ports/chinese/enscript 4. ports/chinese/ghostscript6 5. ports/moefonts-cid 接下來很簡單, 我們來看列印各種不同文件的方法 Netscape( 包括所有需要列印 HTML 的地方 ): 請以 Ports 內的中文 Netscape 列印至檔案然後輸入這個指令 : ps2ps netscape.ps output.ps ;lpr output.ps 普通文字檔 : bg5ps < print.txt > print.ps; lpr output.ps 特殊文字檔 : enscript -X big5 -f -o print.ps print.txt ; ps2ps print.ps output.ps ; lpr output.ps 其他類型檔案目前無簡單方法列印 以下是一個小 script, 幫您自動將文字檔分頁 85

96 Chapter 9. 中文的列印 #!/usr/bin/perl -w # # This tiny script converts ^L to empty lines # to fit a2ps # Currently it only eats from STDIN and output to STDOUT. # Fine enough. # Customize the $expbl (Expected blank lines) to meet your needs. my $expbl=40; # Customize THIS!!! meow my $lc=0, $restlc=0 ; foreach (<>) { } if (/^L/) { } $restlc = $expbl - (($lc % $expbl)) ; for ($i=1; $i < $restlc; $i++) { } s/^l// ; $lc++ ; # print "$lc ". "\n" ; # You could comment out above line to see the line number. print "\n" ; if (/\n/) { $lc++ ;} # print "$lc ".$_ ; # You could comment out above line to see the line print $_ ; number 現在的中中文文列列印印 在看現在的中文列印前, 請先參考過 PostScript 一節, 簡單的來說 CID-Keyed font 創造出來, 就是要解決 cjk 這些方塊字型的國家 目前的中文顯示已經算是完備, 我們平常需求的粗體與斜體都能正常顯示, 利用 -medium-r 對應普通字型,-bold-r 對應粗體,-medium-i 對應斜體, -bold-i 對應粗斜體 由於 print/ghostscript-gnu 從 6.53 升級到 7.05, 相對應的 chinese/ghostscript6 與 print/ghostscript-gnu-cjk(gs-cjk) 也都 BROKEN, 中文列印就成了一個問題, 不過, 原來 gs-cjk 已經融入 7.05, 而且增加的方式更是簡單, 以下用 mozilla 的中文列印來說明只要修改 /usr/local/share/ghostscript/7.05/lib/cidfnmap 最後增加 : % Chinese Big5 Truetype Fonts (Arphic) /ZenKai-Medium /ShanHeiSun-Light % (/usr/local/share/fonts/truetype/bkai00mp.ttf) 1 ; (/usr/local/share/fonts/truetype/bsmi00lp.ttf) 1 ; % Convenient aliases for PS files on Chinese PostScript printer % /B5-H /ETen-B5-H /B5-H /ZenKai-Medium /ZenKai-Medium /ShanHeiSun-Light ; ; ; 86

97 Chapter 9. 中文的列印 /ETen-B5-H % /ShanHeiSun-Light ; % CID fontmap for chinese-big5 encoding CIDFontName % /Adobe-CNS1 /MSung-Light /MHei-Medium /MOESung-Regular /MOEKai-Regular % Chinese GB TrueType Fonts (Arphic) /BousungEG-Light-GB /GBZenKai-Medium % /ShanHeiSun-Light ; /ShanHeiSun-Light /ZenKai-Medium /ShanHeiSun-Light /ZenKai-Medium % CID fontmap for chinese-big5 encoding CIDFontName % /Adobe-GB1 /STSong-Light ; ; ; ; (/usr/local/share/fonts/truetype/gbsn00lp.ttf) 1 ; (/usr/local/share/fonts/truetype/gkai00mp.ttf) 1 ; /BousungEG-Light-GB ; /BousungEG-Light-GB ; 要完成以下的動作, 請先確認是否安裝 ghostscript-gnu, 並且版本大於 7.05, 或是安裝 6.53 版本加上 gscjk, 並且安裝好 arphicttf, 也把 CIDFnmap 設定成功, 若要測試請參考修改 CIDFnmap 的測試一節 WWW: gs-cjk project (http://www.gyve.org/gs-cjk/index-t.html) WWW: Slackware 8.1 上的中文列印 (http://zope.slat.org/members/keanu/slack_cprint/slack_cprint.stx/view) mozilla 僅有普普通通字體 接著修改 /usr/x11r6/lib/mozilla/defaults/pref/unix.js 最後增加 pref("print.postscript.nativecode.zh-tw", "big5"); pref("print.postscript.nativefont.zh-tw", "MSung-Light-B5-H"); 用 mozilla 開網頁, 選取列印, 然後用 /usr/ports/print/gv 來觀看, 這樣子就會看到中文的 ps 囉 不過可以看到, 並沒有粗體與斜體的相關設定, 筆者在 CIDFnmap 並沒有找到粗體與斜體的相關設定, 不過這對 mozilla 而言是足夠的 why MSung-Light? MSung-Light 與 MHei-Medium 則是許多軟體預設的 CID fontmap, 都把他連到 ShanHeiSun-Light 與 ZenKai-Medium, 而 STSong-Light 則是預設的簡體 CID fontmap, 日文用 HeiseiMin-W3 與 HeiseiKakuGo-W5, 韓文則是 HyGoThic-Medium 與 HYSMyeongJo-Medium ShanHeiSun-Light 的來源是 ttfinfo /usr/local/share/fonts/truetype/bsmi00lp.ttf 的 TTFINFO_FONT_PSNAME="ShanHeiSun-Light" TTFINFO_FONT_FILE="/usr/local/share/fonts/TrueType/bsmi00lp.ttf" TTFINFO_FONT_NAME="AR PL Mingti2L Big5" TTFINFO_FONT_PSNAME="ShanHeiSun-Light" TTFINFO_FOUNDRY_NAME="Arphic" TTFINFO_WEIGHT_NAME="medium" TTFINFO_WIDTH="normal" 87

98 Chapter 9. 中文的列印 TTFINFO_NUMCMAP="2" TTFINFO_CMAP0="1,0" TTFINFO_CMAPNAME0="Apple,Roman" TTFINFO_CMAP1="3,1" TTFINFO_CMAPNAME1="Windows,Unicode" TTFINFO_MAPNUM="1" TTFINFO_FONTMAP1="-Arphic-AR PL Mingti2L Big5-medium-r-normal c-0-big5-0" 目前已經有類似的 ports,/usr/ports/japanese/ghostscript-gnu-jpnfont/ 剛我也 send-pr 去修改 /usr/ports/print/ghostscript-gnu-commfont 了 修改 CIDFnmap 的測試 % cat cid.ps /MSung-Light-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show /MHei-Medium-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show /MOESung-Regular-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show /MOEKai-Regular-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show showpage quit % gv -antialias cid.ps % ps2pdf cid.ps % xpdf cid.pdf 88

99 Chapter 9. 中文的列印 Figure snapshot 以下是 mozilla.ps 的 zh_tw 區段,mozilla 的列印正常 /Unicode2NativeDictzh-TW 0 dict def /zh-tw_ls { /NativeFont /MSung-Light-B5-H def /UCS2Font /Courier def /Unicode2NativeDict Unicode2NativeDictzh-TW def /unicodeshow1 { real_unicodeshow } bind def /unicodeshow2 { real_unicodeshow_native } bind def } bind def KDE3 的 kword 仍然有問題 以下是 kword.ps 的 zh_tw 區段,kde3 的 kword 列印仍然有問題 %%BeginSetup % Fonts and encodings used /MSung-Light-B5-HList [ [ /MSung-Light-B5-H 1 0 ] [ /MOESung-Regular-B5-H 1 0 ] [ /Helvetica ] ] d % Asian postscript font requested. Using MSung-Light-B5-H /MSung-Light-B5-HList [ [ /MSung-Light-B5-H ] 89

100 Chapter 9. 中文的列印 [ /MOESung-Regular-B5-H ] [ /Helvetica-Oblique ] ] d % Asian postscript font requested. Using MSung-Light-B5-H /MSung-Light-B5-HList [ [ /MSung-Light-B5-H 1 0 ] [ /MOESung-Regular-B5-H 1 0 ] [ /Helvetica-Bold ] ] d % Asian postscript font requested. Using MSung-Light-B5-H /F /MSung-Light-B5-H-Uni DF /F /MSung-Light-B5-H-Uni DF /F /MSung-Light-B5-H-Uni DF %%EndSetup 但是用 gs 來看就會有如下的錯誤訊息 GNU Ghostscript 7.05 ( ) Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Can t find (or can t open) font file /usr/local/share/ghostscript/resource/font/msung-light-b5-h-uni. Can t find (or can t open) font file MSung-Light-B5-H-Uni. Substituting font Courier for MSung-Light-B5-H-Uni. Can t find (or can t open) font file /usr/local/share/ghostscript/resource/font/msung-light-b5-h-uni. Can t find (or can t open) font file MSung-Light-B5-H-Uni. Substituting font Courier for MSung-Light-B5-H-Uni. Can t find (or can t open) font file /usr/local/share/ghostscript/resource/font/msung-light-b5-h-uni. Can t find (or can t open) font file MSung-Light-B5-H-Uni. Substituting font Courier for MSung-Light-B5-H-Uni. >>showpage, press to continue<< fonts.dir 的粗體與斜體 回過頭來看 fonts.dir 的設定方式 bsmi00lp.ttf ai=0.3:bsmi00lp.ttf ds=y:bsmi00lp.ttf -Arphic-AR PL Mingti2L Big5- 以下略 -Arphic-AR PL Mingti2L Big5- 以下略 -Arphic-AR PL Mingti2L Big5- 以下略 ds=y:ai=0.3:bsmi00lp.ttf -Arphic-AR PL Mingti2L Big5- 以下略 第一個是正常的字體 ai 代表 Automatic Italic 會造成斜體 後面的數字是傾斜比例 ds 代表 Double Strike 會造成偽粗體 y 代表 yes, 表示要粗體 兩個一起用就變成粗斜體了 當然, 以上在 ttfm 的模組應該都會自動產生, 但也可以自己去手動調整 也可以利用 fs=p 來調整成調合字 (proportional font) 另外, 要使用 MS 的新細明, 可以加上 eb=y 來強迫 FreeType 去使用內嵌於字型內的點陣字 ( 會比 AA 好看, 不過這個功能不是很穩定 ) 90

101 Chapter 9. 中文的列印 gscjk 的粗體與斜體 以文鼎宋體為例,PSNAME 是 ShanHeiSun-Light, 而我們常用的 CMap 是 ETen-B5-H, 所以 gscjk 的字型就會有 ShanHeiSun-Light-ETen-B5-H ShanHeiSun-Light-Bold-ETen-B5-H ShanHeiSun-Light-Italic-ETen-B5-H ShanHeiSun-Light-BoldItalic-ETen-B5-H,Bold 是粗體,Italic 是斜體, BoldItalic 是粗斜體, 這樣就有了我們常用的字體了 接著,gscjk 就會在 /usr/local/share/ghostscript/resource/cidfont/ 底下產生 ShanHeiSun-Light ShanHeiSun-Light-Bold ShanHeiSun-Light-BoldItalic ShanHeiSun-Light-Italic, 並在 /usr/local/share/ghostscript/resource/font/ 底下產生與繁體中文 CMap 相結合的字型 在此的產生方式是透過 ttfm.sh 的 gscjk module, 可以直接使用 ports 中的版本, 檢察 /usr/local/share/ttfm 底下是否有 gscjk.ttfm 即可,ttfm 的使用方式則自己參考 manual 或是網頁 /ShanHeiSun-Light-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show /ShanHeiSun-Light-Bold-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show /ShanHeiSun-Light-Italic-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show /ShanHeiSun-Light-BoldItalic-B5-H findfont 60 scalefont setfont moveto (2002 年 5 月 29 日 ) show showpage quit 91

102 Chapter 9. 中文的列印 Figure snapshot AbiWord 的粗體與斜體 以下只適用於 editors/abiword, 如果是使用 editors/abiword2 請參考 gtk2 的設定方式 AbiWord 也同樣的可以列印粗體與斜體 AbiWord 的字型目錄在 /usr/x11r6/share/abisuite/fonts, 在其內先建立 zh-tw 目錄接著只要利用 ttf 來建立 fonts.dir 就可以了 格式如下 : PSFONT, TTFFONT, 880, 120, 1000 所以就建立如下的 fonts.dir 4 ShanHeiSun-Light-ETen-B5-H, -Arphic-AR PL Mingti2L Big5-medium-r-normal c-0-big5-0, 880, 120, 1000 ShanHeiSun-Light-Bold-ETen-B5-H, -Arphic-AR PL Mingti2L Big5-bold-r-normal c-0-big5-0, 880, 120, 1000 ShanHeiSun-Light-Italic-ETen-B5-H, -Arphic-AR PL Mingti2L Big5-medium-i-normal c-0-big5-0, 880, 120, 1000 利用 -medium-r 對應普通字型,-bold-r 對應 -Bold,-medium-i 對應 -Italic, -bold-i 對應 -BoldItalic 不過我都還必須在 zh-tw 底下 touch.already-in-fp,abiword 才不會說 92

103 Chapter 9. 中文的列印 Abiword could not load the following font or fontset from the X Window System display server: [-*-Times New Roman-regular-r-*-*-*-0-*-*-*-*-*-*] kde2 的中中文文列列印印 kde2.2.2 中文列印所需要的 PSNAME 是 MSung-Light 和 MHei-Medium, 所以在 ttfm.sh 搭配 gscjk.ttfm 後可以在 /usr/local/share/ghostscript/7.05/lib/cidfnmap 的最後加上兩行來 alias /MSung-Light /MHei-Medium /ShanHeiSun-Light /ZenKai-Medium ; ; 還是要在 gscjk.ttfm 中作 -setdefault 時 alias 一個成 MSung-Light? 另外遇到一個問題,kde2 用 print to pdf 中文, 內建的 viewer 可以看的見但是 xpdf 則會有問題,xpdf-1.01 而 print to ps 內建的 viewer 看不見, 但是 gs gv 都看的見 以下是 xpdf 的 error msg Error: Unknown font tag R14 Error (1850): No font in show Figure 9-3. kde-print snapshot 93

104 Chapter 9. 中文的列印 9.2. bg5pdf - 轉換中中文文 Big5 編碼文件件成成為不不內內嵌的 PDF 這是由 Chen-Shan Chin 使用 python 及 PDFLib 所寫的軟體, 直接由中文 big5 txt 轉成中文 pdf 檔, 使用不內 嵌的 Acrobat Reader 的中文 CIDKeyed font, 可以使檔案變得非常的小 ( 只是註冊了中文字型的名稱而已 ), 只是目前只有固定大小的字體可用, 無法做出標題之類的變化 好處是, 可以做 copy & paste 及有 search 的功能 bg5pdf 的安裝 : # cd /usr/ports/chinese/bg5pdf # make install 測試 : % echo " 中文測試 " > test.txt % bg5pdf test.txt Output File is test.txt.pdf % pdffonts test.txt.pdf name type emb sub uni object ID MSung-Light-ETen-B5-H CID Type 0 no no no 7 0 Helvetica-Oblique Type 1 no no no 8 0 Figure 9-4. bg5pdf snapshot WWW: (http://students.washington.edu/cschin/) 94

105 Chapter 9. 中文的列印 9.3. bg5ps - 使用 TTF 字型轉換中中文文 Big5/GB 編碼文件件成成為 Portscript bg5ps 是一個使用巨蟒描述語言 (Python Scrpting Language) 寫的一個小程式, 能夠利用幾套免費的 Truetype 中文字型將一般用 BIG5 編碼的文字檔轉換成能夠在沒有中文字型的 postscript 印表機或是只有 ghostscript 的系統上印列的 postscript 檔案 bg5ps 也可以拿來當做過濾器 (filter), 用來過濾在 FreeBSD 上的 Netscape 或是 mpage 產生的 postscript 檔案來印列其中所包含的 BIG5 中文字元 因為 bg5ps 使用的是 Truetype 字型而非矩陣字型, 當在雷射印表機上或是字型較大時, 可以獲得比較好的印列品質 bg5ps 的安裝 : # cd /usr/ports/chinese/bg5ps # make install 目前 bg5ps 是採用 moettf 為列印的字型 您必須設定 TTF 字型路徑, 在安裝完之後, 您必須參考 /usr/local/etc/bg5ps/bg5ps.conf.sample, 並將您的設定檔置於 ~/.bg5ps.conf 或 /usr/local/etc/bg5ps/bg5ps.conf 用它所附的範例來測試, 並用 ghostview 或 gv 觀看結果 : % cd /usr/local/share/doc/bg5ps % bg5ps -if bg5ps.txt -of bg5ps.ps % ghostview bg5ps.ps bg5ps -h 來看有那些參數可以使用 使用方法 bg5ps 可以以獨立 (stand along) 或是當成過濾器 (filter) 來使用 以獨立方式執行 如果您的設定檔沒有問題, 在大多數的時候您只須下達 % bg5ps -if yourfile.big5 -of yourfile.ps 就可以將 big5 編碼的檔案轉成可以印列的 postscript 檔案 在大部份的類 UNIX 的系統裡, 使用 % lpr yourfile.ps 就可將 postscript 檔案印出 需要注意的是您必須要有 postscript 印表機或是用 ghostscript 模擬 postscript 的印表機及印表過濾器 此外您還需要確定您是否正確的指定印表機 如果您想要將 mpage 及 netscape 所產生的 postscript 中的 big5 碼做處理, 使其成為可以印列 big5 中文的 postscript 檔 那您需要加上 "-nps y" 這個選項如下 % bg5ps -nps y -if netscape.ps -of cnetscape.ps 因為在 netscape 產生的 postscript 檔中的英文是可變寬度的字型, 所以有時會有和中文對不齊的狀況發生 如用 mpage 則沒有這方面的問題 用 mpage+bg5ps 是用來預覽大的中文檔案節省紙張的好方案 當成過濾器使用 bg5ps 也可以利用 UNIX 中的管道 (pipe) 當成過濾器使用 方法如下 % cat yourfile.big5 bg5ps > yourfile.ps 95

106 Chapter 9. 中文的列印 % cat yourfile.big5 bg5ps lpr 或 % cat netscape.ps bg5ps -nps y > yourfile.ps % cat netscape.ps bg5ps lpr 選項 bg5ps 有下列的選項可以使用 * -fp ChineseFontPath: 指定中文字型的路徑 ( 預設值 : 與 bg5ps 同 ) * -fn ChineseFontName: 指定中文字型的檔案名稱 ( 預設值 : ntu_kai) * -o [0 1]: 0 不輸出奇數頁,1 輸出奇數頁 ( 預設值 : 1) * -e [0 1]: 0 不輸出偶數頁,1 輸出偶數頁 ( 預設值 : 1) * -s num: 指定輸出字型的大小 ( 預設值 : 12) * -ls num: 指定行距 ( 預設值 : 6.0) * -cs num: 指定字距 ( 預設值 : 2.0) * -lm num: 指定左邊界 ( 預設值 : 72.0) * -rm num: 指定右邊界 ( 預設值 : 72.0) * -tm num: 指定上邊界 ( 預設值 : 72.0) * -bm num: 指定下邊界 ( 預設值 : 72.0) * -if filename: 指定輸入檔檔名 * -of filename: 指定輸出檔檔名 * -cf filename: 指定設定檔 ( 預設值 : /.bg5ps.conf) * -nps [y n]: y 使用 nps 模式,n 不使用 nps 模式 ( 預設值 : n) 範例 % bg5ps -fn ntu_kai -e 0 -o 1 -s 18 -cs 3 -if mybig5.txt -of myps.ps 設定檔 (Configuration file) bg5ps 的設定檔其實每一行都是 python script 語言的一行指令, 由 bg5ps 主程式去呼叫執行, 所以可能有安全性上的問題 請記得要將設定檔改成唯讀 因為設定檔也是 python script, 所以每一行的開始是不能有空格的 bg5ps 範例 : 設定檔有下列參數可以改變 * chinesefontpath: 指定中文字型的路徑 ( 預設值 : 與 bg5ps 同 ) * fontname: 指定中文字型的檔案名稱 ( 預設值 : ntu_kai) * oddpages: 0 不輸出奇數頁,1 輸出奇數頁 ( 預設值 : 1) * evenpages: 0 不輸出偶數頁,1 輸出偶數頁 ( 預設值 : 1) * size: 指定輸出字型的大小 ( 預設值 : 12) * linespace: 指定行距 ( 預設值 : 6.0) * chrspace: 指定字距 ( 預設值 : 2.0) * leftmargin: 指定左邊界 ( 預設值 : 72.0) * rightmargin: 指定右邊界 ( 預設值 : 72.0) * topmargin: 指定上邊界 ( 預設值 : 72.0) * bottommargin: 指定下邊界 ( 預設值 : 72.0) chinesefontpath="/home/cschin/lib/cfonts" fontname="ntu_kai" 96

107 Chapter 9. 中文的列印 oddpages=1 evenpages=1 Note: 如果在 netscape 的列印指令裡面把 "lpr" 換成 "bg5ps -nps y lpr", 就可以列印中文網頁了 Figure 9-5. bg5ps snapshot WWW: (http://students.washington.edu/cschin/) Author: Chen-Shan Chin 9.4. enscript - 直接使用 CID-font 來列列印印 這一版的 ensctipt 是由 Chen-Shan Chin 的補丁來支援 Big5 和 UniCNS-UTF8 編碼的純文字檔 兩個新的編碼名稱, "big5" 和 "UniCNS-UTF8" 是新增的 Since there is no easy way to get AFM for CJK CID-font, I simply assign the width for the same for all character. You need to have a CID-font for these encoding to use this function. enscript 的安裝 : # cd /usr/ports/chinese/enscript # make install 使用 enscript For BIG5 users, use commands like this to generate PS documents: enscript -X big5 -f -o [output.ps] [file] Make sure to use those fonts having "B5pc" in their names. 97

108 Chapter 9. 中文的列印 Author WWW: (http://students.washington.edu/cschin/bg5ps/enscript-tw-support/) WWW: (http://www.gnu.org/software/enscript/enscript.html) 9.5. gb2ps - 轉換中中文文 GB 編碼文件件成成為 PostScript gb2ps 是另一種可以列印 GB 與 HZ 編碼的工具程式 gb2ps 的安裝 : # cd /usr/ports/chinese/gb2ps # make install 字型 : csong24.ccf cfang24.ccf ckai24.ccf chei24.ccf ftp://ftp.ifcss.org/pub/software/fonts/gb/misc/ 將字型放在某個目錄下, 例如 /usr/local/lib/chinese/cfont 9.6. gbscript - 轉換中中文文 GB 編碼文件件成成為 PostScript 轉換簡體字 (GB) 成 PostScript 檔一個可將中文字轉成 PS 格式的程式 gbscript 的安裝 : # cd /usr/ports/chinese/gbscript # make install 9.7. tocps - 轉換中中文文編編碼碼文件件成成為 PostScript 解譯 Netscape 另存新檔的 PostScript 檔案, 成為可列印的中文 (GB) PostScript 檔案 tocps 的安裝 : # cd /usr/ports/chinese/tocps # make install 9.8. vflib - 使用自由向量字型的向量字型函式庫, 支援 BIG5 和 GB TurboLinux 採用的 VFlib + gs 5.5 來做中文列印, 將 VFlib patch 加到 gs 5.5 上去, 因為 gs 5.5 不像 gs6 本身 已經支援中文字, 因此要透過 VFlib 來處理中文字, 效果不錯, 而且又能夠印出斜體等變化字體 98

109 Chapter 9. 中文的列印 在日本, 比較常用的解決方法, 就是利用 "VFlib patch" 讓 ghostscript 能夠使用一些商用的日文外框字型, 點陣字型和 TrueType 字型, 同時 PostScript 程式透過這些 VFlib 修補, 也能夠將這些字型當作 OCF(original composite font) 的字型來使用 WWW: (http://typehack.aial.hiroshima-u.ac.jp/vflib/) 9.9. cnprint cnprint 是一個將中文文章轉換為 PostScript 檔案以供列印的工具 使用上就和標準的列印指令一樣 它同 時支援 GB, HZ 與 BIG5 編碼 cnprint 可以處理 Chinese/Japanese/Korean 文件轉換,DOS VMS UNIX 系統下, 都能使用 支援 GB, Hz, zw, BIG5, CNS, JIS, EUC, Shift-JIS, KSC, UTF8, UTF7, UTF16 等等格式 同時也支援 HBF Hanzi Bitmap Format TTF TrueType Format 字型 chinese/cnprint 的安裝 : # cd /usr/ports/chinese/cnprint # make install WWW: CAI s Software Page - ncprint (http://www.neurophys.wisc.edu/%7ecai/software/) WWW: Japanese Printing and Text Processing With Linux (http://www.twics.com/%7ecraig/writings/linux-nihongo/node68.html) wprint last update: 2003 年 1 月 29 日周三 06 時 24 分 36 秒 CST Contributed by 陳漢儀 ( ) Wprint is a filter for Mozilla (Galeon, etc.), Htmldoc, and Netscape PostScript output that uses TrueType fonts to allow the printing of pages written in Unicode, Big5, KOI8, SJIS, the ISO-8859* charsets, and others. wprint 的安裝 : # cd /usr/ports/print/wprint # make install 若要直接列印, 修改 /usr/local/etc/wprint.conf, 加入底下兩行 : fontpath:/usr/local/share/fonts/truetype/ default:euc-tw:bkai00mp.ttf=zh_tw.big5: lpr -P lp fontpath 的實際位置請依照您系統的目錄架構, 另外 ttf 字型請依照自己需求修改, 本例子採用文鼎中楷體 ( bkai00mp ) 若要列印成 ps 檔案, 修改 /usr/local/etc/wprint.conf, 加入底下兩行 : fontpath:/usr/local/share/fonts/truetype/ default:euc-tw:bkai00mp.ttf=zh_tw.big5:mybig5.ps 設定最後一行的最後一欄中文 ps 檔案名稱可自訂, 這裡隨意以 mybig5.ps 為例, 當在 mozilla 中選擇列印到檔案時, 您的 $HOME 會出現 mozilla.ps ( mozilla 預設產生 ) 與 mybig5.ps ( wprint 轉換成中文後的 ps 檔 ) 99

110 Chapter 9. 中文的列印 以更改 mozilla 印表機選項為例, 原來的列印流程 : mozilla -> print -> lpr 現在我們要改成 : mozilla -> print -> wprint -> lpr 設定步驟如下 : 請選擇下拉選單的 列印 -> 點選 印表機 右側的 屬性 鍵 -> 將 印命令 由原來的 lpr ${MOZ_PRINTER_NAME:+ -P }${MOZ_PRINTER_NAME} 改為 wprint WWW: (http://ttt.esperanto.org.uy/programoj/angle/wprint.html) 100

111 II. 中文應用軟體

112 Chapter 10. 中文排版軟體 X Window 下的排版軟體 OpenOffice - 整合性性的的辦公室軟體 用 ports 或是 package 安裝好 OpenOffice 1.0 後, 預設是在 /usr/local/openoffice.org1.0/ 任何使用者執行 /usr/local/openoffice.org1.0/program/soffice 都會出現是否要 repair 畫面 (in X), 選擇 Yes, 並選擇 Complete 會把一些東西裝到 ~/OpenOffice.org1.0/, 並跳出 setup 再次執行 /usr/local/openoffice.org1.0/program/soffice 就可以看到 soffice 的 doc 文書處理畫面了 Q1: 如何加入中文字型? A1: GUI 的加入方式 : 執行 /usr/local/openoffice.org1.0/program/spadmin 列印管理程式, Fonts -> Add -> Source directory: /usr/local/share/fonts/truetype/ -> ˇCreate soft links only -> 文鼎 PL 細上海宋 (bsmi00lp.ttf) -> Ok CLI 的加入方式 : cd /usr/local/openoffice.org1.0/share/fonts/truetype ln -s /usr/local/share/fonts/truetype//bsmi00lp.ttf bsmi00lp.ttf 在加入完字型後,OpenOffice 在每次進入軟體前都會自動建立 fonts.dir Q2: 畫面很醜, 英文字很寬? A2: 修改分成兩個部份, 一個是將 Interface User 改成文鼎 PL 細上海宋, 另一個則是調整字型大小, 字型稍微大一點就會有 AntiAlias 的效果, 建議值是 >= 120% GUI 的修改方式 : 啟動 soffice 後修改 Interface User Tools -> Options -> OpenOffice.org -> Font Replacement -> ˇApply replacement table -> Font: Interface User Replace with: 文鼎 PL 細上海宋 -> ˇ -> ˇalways -> Ok 修改字型大小 Tools -> Options -> OpenOffice.org -> View -> Scale: 120% -> Ok CLI 的修改方式 : cd ~/ mkdir -p OpenOffice.org1.0/user/config/registry/instance/org/openoffice/Office cd ~/OpenOffice.org1.0/user/config/registry/instance/org/openoffice/Office fetch ftp://freebsd.sinica.edu.tw/pub/statue/openoffice/common.xml Q3: 輸入中文變成方塊? A3: 因為預設的 Thorndale 並不能顯示中文, 筆者會讓預設成文鼎 PL 細上海宋 102

113 Chapter 10. 中文排版軟體 GUI 的修改方式 : 啟動 soffice 後修改 Basic Fonts(Western) Tools -> Options -> OpenOffice.org -> Text Document -> Basic Fonts(Western) -> Default: 文鼎 PL 細上海宋 -> Heading: 文鼎 PL 細上海宋 -> Ok CLI 的修改方式 : cd ~/ mkdir -p OpenOffice.org1.0/user/config/registry/instance/org/openoffice/Office cd OpenOffice.org1.0/user/config/registry/instance/org/openoffice/Office fetch ftp://freebsd.sinica.edu.tw/put/statue/openoffice/writer.xml Q4: 如何開啟中文的 HTML 及純文字檔? A4: 如果您要開純文字檔, 在開啟檔案的對話框中, FileType 記得選 :Text Encoded, 當選完您要開的檔案 後, 會再出現一個對話框, 最重要的是 Fonts 那兒要選 :Chinese traditional ( Windows-950 ), 剩下的照您的要求選, 之後中文就出來囉 <65374> 還是看不到? 試試看改一下字形, 也許您選到了英文字型 如果是 HTML 呢? 更是簡單, 請在檔案一開頭加上 : <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=big5"> </HEAD> Figure openoffice snapshot WWW: (http://www.openoffice.org/) 103

114 Chapter 10. 中文排版軟體 AbiWord - 開放原始碼 跨平平台台 所見即所得的文字編輯輯器器 AbiWord 可以說是 Word 的翻版, 只是換了個作業系統, 容易上手 介面友善的優點仍在 但因他仍是發展中的軟體, 許多的功能, 並不能與微軟的 Word 相比, 整體上有一點點缺憾 可是他仍是 FreeBSD 上的重要指標, 代表著未來 FreeBSD 將有不輸於 Word 的軟體出現, 也說明著,FreeBSD 將從伺服器走向個人使用者 建議採用 editors/abiword2, 只要有設定好 gtk2 就可以正常使用, 原本的 chinese/abiword 搭配 editors/abiword 已經無法正常使用, 所以以下的文章可以忽略, 只要安裝完 AbiWord2, 輸入中文前選擇中文字體, 就可以正常的輸入中文 AbiWord 已經可以在 zh_tw.big5 的 locale 底下工作並輸入, 選單也已經部份中文化, 中文的列印也可以透過 moecid-fonts chinese/abiword 的安裝 : # cd /usr/ports/chinese/abiword # make install 在 AbiWord 中新增字型 : 要在 AbiWord 中安裝中文字型才能輸入中文字, 安裝的方式必須透過 ttfm 這套好用的軟體 在此套件中已經預設安裝了文鼎繁體與簡體字型 如果想自行安裝新字型, 以下是文鼎繁體的安裝, 可以參考看看 : # ttfm.sh --add abiword /usr/local/share/fonts/truetype/bkai00lp.ttf # ttfm.sh --add abiword /usr/local/share/fonts/truetype/bsmi00lp.ttf 並在 XF86Config 加入 FontPath "/usr/x11r6/share/abisuite/fonts/zh-tw" 關於中文列印的部分, 請參考 abiword 的粗體與斜體一節 Figure abiword snapshot 104

115 Chapter 10. 中文排版軟體 WWW: (http://www.abisource.com/) WWW: (http://www.gnome.org/gnome-office/abiword.shtml) XEmacs - 支援 XIM 且 Big5 設定定的的 XEmacs 文字編輯輯器器 當您問一些使用 Unix 多年的老玩家, 他們認為最具代表性的文書處理軟體是什麼呢? 他們幾乎都會回答 -Emacs, 而在 X Window 的風行之下, Emacs 也推出了 XWindows 版 -XEmacs XEmacs 一項著名的能力是它能夠處理多國語文, 能夠處理各種不同文字的軟體己經令人十分驚異, 但要 在一個文件中同時處理好幾種不同語文, XEmacs 還是可以做到, 它在這方面的能力, 幾乎沒有同類形的軟體能望其項背 除此之外,XEmacs 為了能處理各種文件, 它將瀏覽 HTML 文件, 還有收發 的功能全部整合進來, 讓您能夠用 XEmacs 來編寫 HTML 或是寫信的工作 它甚至還整合了 C 和 Lisp 語言的編譯器, 讓您在 XEmacs 上寫程式, 並且也可以在其中編譯程式, 使寫程式時減少面對繁瑣的事務 像拼字檢查這種工作, 一般都只有商業軟體提供, 但是 XEmacs 也提供了, 連字典也可以自己指定,Unix 的目錄結構, XEmacs 也可以編輯 其它還有許許多多的功能, 很多人用了一段時間, 都只有使用了一小部分, 可見其功能之廣 XEmacs 是一個不可多得的文書處理軟體, 試試看, 或許可以讓您有更方便處理文件的方法 chinese/xemacs 的安裝 : # cd /usr/ports/chinese/xemacs21 # make install 還有,emacs 和 xemacs 是不一樣的, 初學 *emacs 還是從 xemacs 學比較好 至少 Jing-Tang Keith Jang 大大把一切都打點好了 ~/Emacs 則是設 fontset Emacs.Font: fontset-18 Emacs.Fontset-0: -*-*-medium-r-normal-*-18-*-*-*-*-*-fontset-18,\ ascii:-*-lucidatypewriter-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,\ chinese-big5-1:-*-fixed-medium-r-normal-*-*-160-*-*-c-*-big5-0,\ chinese-big5-2:-*-fixed-medium-r-normal-*-*-160-*-*-c-*-big wvware - 可以轉換微軟 Word 檔案的工具 last update: 2003 年 1 月 26 日周日 03 時 34 分 02 秒 CST wv 是一套可以轉換微軟 Word 檔案的工具, 能夠讀取並且解析 Word 6-9 格式 (Word 6, 95, 97, 2000) 並且提供許多轉換工具, 通稱為 wvware wvhtml, wvlatex, wvcleanlatex, wvdvi, wvps, wvpdf, wvtext, wvabw, wvwml, wvmime textproc/wv 的安裝 : # cd /usr/ports/textproc/wv 105

116 Chapter 10. 中文排版軟體 # make install clean 接著以最常用的 wvhtml 為例, 要轉 Word 成 HTML, 只要下 wvhtml --charset=big5 input.doc ouput.html WWW: (http://www.wvware.com/) Console 下的排版軟體 Emacs Emacs 的安裝 : # cd /usr/ports/chinese/emacs20 # make install emacs 不是完整的 XIM support, 請看 (http://www.freebsd.org/cgi/query-pr.cgi?pr=21160) ~/.emacs 是設 mule ;; Set environment to Chinese-Big5 (set-language-environment chinese-big5) (set-keyboard-coding-system chinese-big5) (set-terminal-coding-system chinese-big5) (set-buffer-file-coding-system chinese-big5) (set-selection-coding-system chinese-big5) (modify-coding-system-alist process "*" chinese-big5) 至於 ~/.emacs 還有很多好玩的, 可以到 參考參考 celvis - 類似 vi/ex 且中文顯示的文字編輯輯器器 Celvis 是一個很像 UNIX 上標準編輯器 vi/ex 的東西, 幾乎支援所有 vi/ ex 的指令 Celvis 可編輯同時含有中英文的文章 它也同時支援 GB 和 BIG5 編碼 celvis 的安裝 : # cd /usr/ports/chinese/celvis # make install joe - 簡易且且功功能不錯的編輯程式 joe 是一個 UNIX 上免費專業的 ASCII 文字編輯器 它用起來就像大部份 IBM PC 上的文字編輯器 它是一套操作相當方便的文書編輯程式 106

117 Chapter 10. 中文排版軟體 joe 的安裝 : # cd /usr/ports/chinese/joe # make install 要在 joe 上使用中文, 必須修改 /usr/local/lib/joerc 和 /usr/local/lib/rjoerc 的設定 -asis Characters shown as-is quote Enter Ctrl chars 將以上的自傳修改成以下的字串 -asis Characters shown as-is quote.k; Enter Ctrl chars -asis 是要能顯示中文字, 而 quote 是要輸入特殊的控制字元時使用的按鍵, 而預設值是, 就會遇到有些中文字的內碼, 然後只要加參數 -asia 就可以看中文, 如 : joe -asis filename 就可以了, 但是 quote 則必須改檔案, 或是兩個都改檔案吧 Figure joe snapshot nvi - 類似 vi/ex, 有有多多種語言修補, 預設為 big5 有 nvi-big5 nvi-enc-cn nvi-enc-tw 等不同的套件 BIG5 或 GB 相容的 vi 操作介面編輯器 vi 是 UNIX 的標準編輯器, 此程式和中文繁體 enc-cn euc-tw 相容 nvi 的安裝 : # cd /usr/ports/chinese/nvi-big5 # make install 編輯 ~/.nexrc set noskipdisplay set displayencoding=big5 set inputencoding=big5 107

118 Chapter 10. 中文排版軟體 set fileencoding=big5 set autodetect=tw WWW: (http://www.itojun.org/) qe - qe 是一個模仿 PE2 的編輯程式 qe 是一個模仿 PE2 的編輯程式, 叫 qe 的原因只是因為字母 Q 是排在 P 之後 和 DOS 不同的是,UNIX 沒有那麼多鍵可用, 而且不同的 Terminal 的鍵碼也略有不同 因此一些常用的 function 最好定義到 Control Key 或 Meta Key 上, 以免不堪使用 qe 的安裝 : # cd /usr/ports/chinese/qe # make install Figure qe snapshot WWW: (http://www.cc.ncu.edu.tw/~center5/product/qe/) ve - NTHU-CS Maple BBS 發展的 BBS-like 文字編輯輯器器 一套由 NTHU-CS Maple BBS 2.36 發展的 BBS-like 文字編輯器 ve 的安裝 : # cd /usr/ports/chinese/ve # make install 108

119 Chapter 10. 中文排版軟體 Figure ve snapshot TeX/LaTeX 下的排版軟體 ChiTex - 中文 Lex/LaTex ChiTeX 是一套中文 LeX /LaTeX, 只要會英文 TeX/LaTeX 就幾乎立刻可使用 ChiTeX, 本版可適用於 Big5 及 GB 內碼之中文 此一 Unix 版可用於裝有 tetex 的 Linux,FreeBSD,Solaris, 與 SunOS 系統 chitex 的安裝 : # cd /usr/ports/chinese/chitex # make install ChiTeX 一系列的改進, 以及下載位置請參考 : ftp://dongpo.math.ncu.edu.tw/tex-archive/local/chitex/chitex/unix (ftp://dongpo.math.ncu.edu.tw/tex-archive/local/chitex/chitex/unix) ChiTex 的特點 : 用法簡單, 不用特別學習, 會用英文 TeX /LaTeX 就幾乎立刻可使用 ChiTeX ( 若要進一步使用較多功能, 只要學習幾個簡單的特殊指令就可 ) 與英文 TeX/ LaTeX 相容性高 功能完備而多樣化 提供 cbibtex,cmakeindex 可用以引用內含中文的外在參考文獻資料及自動編輯含中文之索引 提供中文化的 chilatex2html 可將含中文的 LaTeX 文件轉換為 HTML 格式檔 支援由 TeX/LaTeX 文件產生 pdf 檔 同時支援 Big5 碼中文 ( 台灣, 香港 ) 及 GB 碼中文 ( 新加坡與大陸 ) 109

120 Chapter 10. 中文排版軟體 現在您可以拿 ChiTeX 附的範例來測試 : # cd /usr/local/share/texmf/tex/chinese # chilatex math2.tex ( 編譯 ) # xdvi math2.dvi ( 預視 ) # dvips math2.dvi -o math2.ps ( 轉換成 PostScript 檔 ) # gv math2.ps ( 用 gv 觀看 ) WWW: (http://www.math.ncu.edu.tw/~yih/) Kile: LaTeX source editor (http://xm1.net.free.fr/kile/index.html) CJK - 可以使用 CJK scripts 的 LaTeX2e 巨集套件 TeX/LaTeX 是一套的幕後排版軟體 其優秀的輸出品質早已為廣大的學術界朋友所喜愛及採用 CJK 是一個 LaTeX2e 的巨集套件 (macro package), 能讓您在 TeX 文件中使用 CJK (Chinese/Japanese/Korean) 的文字編碼 您的系統必須先安裝好 tetex/ LaTeX 如果沒有的話, 您也可以自己裝 請參考 /usr/ports/print/tetex 的說明 CJK 的安裝 : # cd /usr/ports/chinese/cjk # make install 在 CJK 套件中有一份中文文件, 由李君宇先生所寫的介紹, 專門介紹 CJK 處理中文的語法, 在 /usr/local/share/doc/cjk/chinese/readmeb5.tex, 在此提供 READMEb5.pdf 的下載 # cd /usr/local/share/doc/cjk/chinese/ # bg5latex READMEb5.tex ( 看看有沒有產生 READMEb5.dvi) # xdvi READMEb5.dvi ( 是否能看到中中文文? 當然您要先進 X Window) # dvips READMEb5.dvi -o READMEb5.ps ( 轉換成 PostScript 格式 )) # gv READMEb5.ps ( 用 gv 觀看 ) % 測試文件 \documentclass{article} \usepackage{cjk} \begin{document} \begin{cjk*}{bg5}{song} 宋體 \end{cjk*} \begin{cjk*}{bg5}{kai} 楷體 \end{cjk*} \end{document} 110

121 Chapter 10. 中文排版軟體 Figure CJK snapshot WWW: 我的 CJK - by Edward (http://info.sayya.org/~edt1023/tex/mycjk.html) WWW: (http://cjk.ffii.org) CJK-LyX - 有 LaTeX 使用用介介面的文件編輯輯器器 ( 所見即所得 ) LyX 是一個有 LaTeX 介面文件編輯器, 是一個容易使用的文字編輯器, 也是一個有彈性且強大的 LaTeX 有著所見即所得的介面, 和許多 LaTeX 風格和自動產生的設計 加速學習 LaTeX 並使複雜的設計簡單化和直覺化 新的特色包含拼字檢查, 國際化, 字元提供, 所見即所得的圖形 表格 方程式 LyX 是一個進可攻 TeX/LaTeX, 退可守 ( 把 LyX 當成文書處理軟體 ) 的一個功能強大, 可以處理圖文的文書處理軟體 CJK-LyX 的安裝 : # cd /usr/ports/print/cjk-lyx # make install 必要的設定 請編輯一個 ~/.lyx/preferences ( 沒有這個檔, 請自行建立 ), 內容如下 : \screen_dpi 100 \screen_font_roman "-*-times new roman" \screen_font_sans "-*-arial" \screen_font_typewriter "-*-courier new" \screen_font_i18n1_encoding "big5-0" 111

122 Chapter 10. 中文排版軟體 \screen_font_i18n1_normal "-*-ar pl mingti2l big5" \screen_font_i18n1_gothic "-*-ar pl mingti2l big5" \screen_font_i18n2_encoding "big5-0" \screen_font_i18n2_normal "-*-ar pl kaitim big5" \screen_font_i18n2_gothic "-*-ar pl kaitim big5" 另外針對 CJK 還會設定如下的東西 : \language_package "\usepackage{cjk}" \language_command_begin "\begin{cjk*}{bg5}{aming}" \language_command_end "\end{cjk*}" \language_auto_begin false \language_auto_end false \mark_foreign_language false \converter latex dvi "bg5latex $$i" "latex" #\converter dvi pdf "dvipdfm $$i" "" #\font_encoding default 如果您 TeX/LaTeX 是使用中文 Type1 字型的話, 請將最後二行的 mark 拿掉 測試 : 請進入 LyX 後隨便編輯一個中文檔, 然後按 View => DVI 及 View => Postscript 看運作是不是正常 另外 File => Export => Postscript 看是不是可以正確輸出文稿的 *.ps 檔 * 在此建議使用中文 Type1 字型, 以免多花時間等待系統製造 pk 字型 請參考六月份的舊信, 標題是 : [FYI] CJK/LaTeX enviroment 中文 Type1 及 TTF 的使用 要變換字型或做更複雜的變化,LyX 本身並沒有 CJK enviroment 的特殊功能, 得自行加入 tags 例如要換字型, 可按功能表那個大的向下的黑箭頭選 LaTeX, 以便輸入 CJK enviroment 的 tag: \CJKfamily{akai} 這樣以下的文字就會改用楷體字, 注意, 這裡指的是所輸出的 *.ps 檔的字型, 而不一定是您螢幕上看到的字型 ( 依我的設定, 螢幕上是明體 ) 其他的中文 TeX/LaTeX 系統, 如 cwtex/chitex 請參考以上設定, 自行更改 Copyright (c) 2001 李果正 (Edward G.J. Lee 本文為自由文件 (FDL 可自由複製 / 修改 / 散佈 但請保留版權聲明的部份 112

123 Chapter 10. 中文排版軟體 Figure CJK-LyX snapshot WWW: CJK-LyX 中使用中文 (http://www.study-area.org/tips/latex/cjk-lyx.html) LyX WWW: (http://www.lyx.org/) CJK-LyX WWW: (http://cellular.phys.pusan.ac.kr/cjk.html) 在 ConTeXt 使用 Big-5 中文 Contributed by Edward G.J. Lee last update: 2003 年 4 月 30 日周三 03 時 25 分 52 秒 CST 在讓 ConTeXt 使用 Big-5 中文前, 至少要能在英文環境運作 # cd ${TEXMF}/web2c # texexec --make en metafun 為了和 CJK 和 dvipdfmx 配合, 請先安裝 chinese/cjk 和 print/dvipdfmx, 採用 CJK standard encoding vector, 這樣一來, 字型方面的資料就可以共用了 修改檔案 : 1. ${TEXMF}/tex/context/config/cont-usr.tex 如果沒有這個檔, 請將../base/cont-usr.ori 拷貝一份成 cont-usr.tex 在 \protect \endinput 之前加入下列資料 : % 將 Poorman 的對應, 轉成 CJK 的對應 \defineucharmapping{big5}#1#2% {\unicodeposition=#1 \advance\unicodeposition -161 \multiply\unicodeposition 157 \advance\unicodeposition #2 113

124 Chapter 10. 中文排版軟體 \advance\unicodeposition-\ifnum#2>160 98\else64\fi \dorepositionunicode} % for Big-5 CJK standard encoding vector \def\currentucharmapping{big5} % font alias 這樣就不必更動原來的字型設定了 \definefontsynonym [b5song] [arb5sung] [encoding=big5] \definefontsynonym [b5songsl] [arb5sungs] [encoding=big5] \definefontsynonym [b5kai] [arb5kai] [encoding=big5] \definefontsynonym [b5kaisl] [arb5kais] [encoding=big5] 2. ${TEXMF}/tex/context/base/font-chi.tex 將某行只有 \SimChi 改成 \TraChi 改好後重新執行 : # cd ${TEXMF}/web2c/ # texec --make en 前置處理 script 由於 許 功 的問題, 我們必須前置處理, 以下是改自王佑中先生的 clatex 的 perl script #!/usr/bin/env perl # # Process Big-5 Traditional Chinese ConTeXt file. # Usage: chcont.pl tex file(no tex extension) # By Edward G.J. Lee # Inspire heavily from wycc clatex. # $one = 161; $two = 254; open(cont,">$argv[0].cont"); if ($ARGV[0] =~/(.*)\.tex$/) { -r $ARGV[0] die " file $ARGV[0] not found\n"; open(infile,"<$argv[0]"); } else { -r "$ARGV[0].tex" die "file $ARGV[0].tex not found\n"; open(infile,"<$argv[0].tex"); } while(<infile>) { &trans_print($_); } close(cont); system "texexec ${ARGV[0]}.cont"; 114

125 Chapter 10. 中文排版軟體 sub trans_print { local($s) local($i,$c,$nc,$ordc,$ordc1); for($i=0;$i<length($s);$i++) { $c = substr($s,$i,1); $ordc = ord($c); if (($ordc>=$one)&&($ordc<=$two)) { $nc = substr($s,$i+1,1); if ($nc =~/[\\{}\^_]/) { $ordc1 = ord($nc); print CONT "\\uc{$ordc}{$ordc1}"; } else { print CONT $c,$nc; } $i++; } else { print CONT $c; } } } 測試 : \usemodule[chinese] \starttext \completecontent %\setupindenting[medium] \setupwhitespace[10pt] \chapter{ 桃花源記 } \ConTeXt\ 中文測試 \section{ 桃花源記前段 } 晉太元中, 武陵人, 捕魚為業, 緣溪行, 忘路之遠近 ; 忽逢桃花林, 夾岸數百步, 中無雜樹, 芳草鮮美, 落英繽紛, 漁人甚異之 復前行, 欲窮其林 林盡水源, 便得一山 山有小口, 彷彿若有光, 便捨船, 從口入 初極狹, 纔通人 ; 復行數十步, 豁然開朗 土地平曠, 屋舍儼然 有良田 美池 桑 竹之屬, 阡陌交通, 雞犬相聞 其中往來種作, 男女衣著, 悉如外人 ; 黃髮 垂髫, 並怡然自樂 見漁人, 乃大驚, 問所從來 ; 具答之, 便要還家, 設酒 殺雞 作食 村中聞有此人, 咸來問訊 自云 : 先世避秦時亂, 率妻子邑人來此絕境, 115

126 Chapter 10. 中文排版軟體 不復出焉 ; 遂與外人閒隔 問今是何世 ; 乃不知有漢, 無論魏 晉 此人一一 為具言所聞, 皆歎惋 餘人各復延至其家, 皆出酒食 停數日, 辭去 此中人語云 : 不足為外人道也 既出, 得其船, 便扶向路, 處處誌之 及郡下, 詣太守, 說如此, 太守即遣人隨 其往, 尋向所誌, 遂迷不復得路 南陽劉子驥, 高尚士也, 聞之, 欣然規往, 未果, 尋病終 後遂無問津者 \chapter{ 將進酒 } 君不見, 黃河之水天上來, 奔流到海不復回 君不見, 高堂明鏡悲白髮, 朝如青絲暮成雪 人生得意須盡歡, 莫使金樽空對月 天生我材必有用, 千金散盡還復來 烹羊宰牛且為樂, 會須一飲三百杯 岑夫子, 丹丘生, 將進酒, 君莫停 與君歌一曲, 請君為我側耳聽 鐘鼓饌玉不足貴, 但願長醉不願醒 古來聖賢皆寂寞, 惟有飲者留其名 陳王昔時宴平樂, 斗酒十千恣讙謔 主人何為言少錢, 徑須沽取對君酌 五花馬千金裘, 呼兒將出換美酒 與爾同消萬古愁 \chapter{ 許功開的問題 } 許功開 這些有問題的字元要避開 也就是說, 要前置處理這些字元 \stoptext # chcont.pl cont-b5 ==> 千萬不要加副檔名, 切記! 這樣會產生 cont-b5.dvi # dvipdfmx cont-b5 ==> 產生不內嵌字型且可 copy&paste 的 pdf 檔 這裡沒有用到 pdftex 嵌入 TTF 的功能, 原因是他不僅嵌入整個 subfont 檔案會變得很大, 而且又沒有 copy&paste&search 的功能 WWW: (http://www.pragma-ade.com/) WWW: (http://www.pragma-ade.com/general/manuals/mchinese.pdf) cwtex cwtex 排版系統由吳聰敏與吳聰慧共同發展, 它延伸 TeX/LaTeX 之功能, 使之可以排版中文 116

127 Chapter 10. 中文排版軟體 當初吳老師設計 cwtex 字型時, 對字型的編排是仔細設計的 他將最常用的字型依先後順序編排, 越是常用的, 就越放在前面 所以, 這和 windows 上的字型順序不相同 當初之所以如此設計, 是為了讓編譯的速度能夠變得比較快 不過, 隨著電腦的速度越來越快, 硬碟越來越便宜, 他對這樣的設計似乎覺得也可以改變 就和 Windows 的自行編排方式一致他覺得或許亦不失為一個 user friendly 的方法 因為像 PuTeX 可以使用眾多中文字字型的優點的確很吸引人, 不過呢, 這可能還需要 民意 請老師來傷腦筋吧 內附字形為 : 明體 (m) 黑體 (bb) 楷書 (k) 圓體 (r) 仿宋體 (f), 若需要垂直字體則在前面加上 v cwtex 的安裝 : # cd /usr/ports/chinese/cwtex # make install clean cwtex 的使用 : % vi file.ctx % cwtex file % latex file.tex % dvips -o file.ps file.dvi % gv -antialias file.ps 這裡有吳老師 cwtex 排版系統二版手冊 cxbook.pdf (ftp:// /cwtex/windows/miktex/cwtex/cxbook.pdf) WWW: (http://ceiba.cc.ntu.edu.tw/tmwu/) dvipdfmx - 轉換 *.dvi 成為不不內內嵌中中文文字型的 *.pdf 檔 Copyright (c) 李果正 (Edward G.J. Lee 這是 Jin-Hwan Cho( 韓 ) Shunsaku Hirata( 日 ) 修改自 Mark A. Wicks 的 dvipdfm 而來的 主要的功能是轉換 *.dvi 成為不內嵌中文字型的 *.pdf 檔 一般的英文檔也是可以照常使用 ( 含原有 dvipdfm 的功能 ) 不管是可處理 double-byte code 的 Omega 或只能處理 single-byte 使用 subfont 的 CJK package 都可以使用 最大的好處是可以利用 TeX/LaTeX 來製作中文 pdf 檔, 而且又不內嵌中文字型, 可以使檔案小很多 ( 是真的 很多!:) 可直接使用 TTF, 但會被標記為 use font of acroread 所預設使用的字型 (MHei-Medium 及 MSung-Light), 這樣雖然不內嵌字型, 但在 acroread/xpdf 都可以正常閱覽, 非常方便網路上的流通 又不必再去花銀子買軟體來製作, 更重要的是 TeX/LaTeX 的特殊功能還是可以繼續沿用 如果和 pslatex 配合使用的話, 那連英文字型及少數特殊符號也會不內嵌, 使檔案更小, 當然 mathtime 的一些數學符號並沒有 free 的, 這會內嵌 CM 字型 # cd /usr/ports/print/dvipdfmx # make install 以 bsmi00lp.ttf 為例, 安裝好後 $TEXMF/dvipdfm/base/cid-x.map 設為 : ETen-B5-H :0:!arb5_sung.ttf ETen-B5-H :0:!arb5_sung.ttf,Italic ETen-B5-H :0:!arb5_sung.ttf,Bold ETen-B5-H :0:!arb5_sung.ttf,BoldItalic 117

128 Chapter 10. 中文排版軟體 ETen-B5-H :0:!arb5_kai.ttf ETen-B5-H :0:!arb5_kai.ttf,Italic ETen-B5-H :0:!arb5_kai.ttf,Bold ETen-B5-H :0:!arb5_kai.ttf,BoldItalic % 但不含 postscript name 的字型則無法使用 去掉! 會嵌入 TTF( % CIDFontType2, 或 Type11), 不需 *.enc 檔 另外也有人建議將,Italic 改成有逗點的問題 -s.167,,bolditalic 改成,Bold -s.167 以避免斜體字顯示不正常, 沒 Note: 裝完後記得執行 mktexlsr 即可 當然, 原先的系統 CJK package 要能夠正常運作 ( 不管是使用 Type1 或 pk 字型 ), 因為需要正確的 *.tfm 字型描述檔 然後, 依照一般正常程序編譯 CJK 文稿即可 由於並沒有去變造 嵌入字型本身, 所以只要是合法買來的字型應該都可以放心去使用了 % 我不是律師, 可不負擔保責任 :) 讓英文字型也不內嵌 : 由 *.tex 文稿中, 加入 : \usepackage{pslatex} 測試 : % cat cjk.tex \documentclass{article} \usepackage{cjk} \begin{document} Hello World \begin{cjk*}{bg5}{song} 您好 \end{cjk*} \end{document} % bg5latex cjk.tex % dvips -o ps2pdf-cjk.ps cjk.dvi % ps2pdf ps2pdf-cjk.ps % dvipdfmx -o dvipdfmx-cjk.pdf cjk.dvi % cat bg5pslatex #!/bin/sh f= echo $1 sed -e s \(.*\)\.[^/]*$ \1 bg5conv < $1 > $f.cjk && pslatex $f.cjk %./bg5pslatex cjk.tex % dvipdfmx -o pslatex-cjk.pdf cjk.dvi % pdffonts ps2pdf-cjk.pdf name type emb sub uni object ID [none] % pdffonts dvipdfmx-cjk.pdf Type 3 no no no 9 0 name type emb sub uni object ID TGRGZY+CMR10 Type 1 yes yes no 10 0 ZenKai-Medium CID TrueType no no no

129 Chapter 10. 中文排版軟體 % pdffonts pslatex-cjk.pdf name type emb sub uni object ID Times-Roman Type 1 no no no 8 0 ZenKai-Medium CID TrueType no no no 11 0 % ls -l *.pdf -rw-r--r-- 1 root wheel :17 dvipdfmx-cjk.pdf -rw-r--r-- 1 root wheel :17 ps2pdf-cjk.pdf -rw-r--r-- 1 root wheel :17 pslatex-cjk.pdf 問題 : 無法由 pdf2ps/pdftops 來轉成 ps 也就是說一般表機會印不出來 對策 : 可經由 acroread 利用裡頭的 CIDKeyed font 來轉成 ps 檔 品質相當精良, 只是檔案很大就是了 終究解決方法 : 要和 gs 整合在一起 Figure dvipdfmx snapshot WWW: 我的 CJK - by Edward (http://info.sayya.org/~edt1023/tex/mycjk.html) WWW: (http://project.ktug.or.kr/dvipdfmx/) ttf2pt1 - TTF 轉中中文文 Type1 字型 Copyright (c) 2001 李果正 (Edward G.J. Lee 119

130 Chapter 10. 中文排版軟體 本文為自由文件 (FDL 可自由複製 / 修改 / 散佈 但請保留版權聲明的部份 ttf2pt1 的安裝 : # cd /usr/ports/chinese/ttf2pt1 # make install chinese 套件只是 map 表, 有倚天字集可用 寫一個 sh script(mkfont) 內容如下 : === mkfont begin === #!/bin/sh # # By Edward G.J. Lee # This code is Public Domain. # if [ $# -ne 1 ] then echo "Usage: basename $0 your.ttf" exit 1 fi echo echo "Now create *.t1a and *.enc and *.afm files. Wait... " echo FONTNAME=$1 MAPFILE=/usr/local/share/ttf2pt1/maps/cubig5.map n=1 while [ $n -lt 10 ] do done m=0$n ttf2pt1 -GE -pft -Ohub -W0 -L $MAPFILE+$m $FONTNAME ${FONTNAME%.ttf}$m n= expr $n + 1 m=10 while [ $m -lt 56 ] do done ttf2pt1 -GE -pft -Ohub -W0 -L $MAPFILE+$m $FONTNAME ${FONTNAME%.ttf}$m m= expr $m + 1 # avoid dvips(k)(before v5.86) t1part module bug. # perl -pi -e s/_/z/g *.t1a *.afm echo echo "Now create *.pfb, wait... " echo for ps in *.t1a do t1asm -b $ps > ${ps%.t1a}.pfb 120

131 Chapter 10. 中文排版軟體 done echo echo "Now create *.tfm, wait... " echo for afm in *.afm do done afm2tfm $afm AFM=${FONTNAME%.ttf}-afm TFM=${FONTNAME%.ttf}-tfm PFB=${FONTNAME%.ttf}-pfb ENC=${FONTNAME%.ttf}-enc rm -f *.t1a mkdir -p $AFM $TFM $PFB $ENC mv -f *.enc $ENC mv -f *.afm $AFM mv -f *.tfm $TFM mv -f *.pfb $PFB echo echo "OK, all done. :-)" echo === mkfotn end === 在一個獨立目錄放 mkfont( 要先 chmod +x mkfont), 再把字型置於同一目錄 * 一些路徑有不一樣的話, 請自行修改 這裡以文鼎細上海宋和文鼎中楷為例 :./mkfont bsmi00lp.ttf;./mkfont bkai00mp.ttf 即可 完成後會產生 afm, euc, tfm, pfb 等四個目錄, 裡面都是字型資料 將資料搬移到所屬的地方 (arphic 目錄請自行建立 ) afm copy 至 /usr/local/share/texmf/fonts/afm/arphic tfm copy 至 /usr/local/share/texmf/fonts/tfm/arphic pfb copy 至 /usr/local/share/texmf/fonts/type1/arphic euc copy 至 /usr/local/share/texmf/dvips/arphic 新增 /usr/local/share/texmf/dvips/config/aming.map 內容如下 : bsmi00lp01 ShanHeiSun-Light-01 <bsmi00lp01.pfb bsmi00lp02 ShanHeiSun-Light-02 <bsmi00lp02.pfb... bsmi00lp55 ShanHeiSun-Light-55 <bsmi00lp55.pfb 新增 /usr/local/share/texmf/dvips/config/akai.map 內容如下 : bkai00mp01 ZenKai-Medium-01 <bkai00mp01.pfb bkai00mp02 ZenKai-Medium-02 <bkai00mp02.pfb... bkai00mp55 ZenKai-Medium-55 <bkai00mp55.pfb 121

132 Chapter 10. 中文排版軟體 在 /usr/local/share/texmf/dvips/config/config.ps 加入 : p +aming.map p +akai.map 新增 /usr/local/share/texmf/dvips/config/bsmi00lp.map 內容如下 : bsmi00lp01 <bsmi00lp01.enc <bsmi00lp.ttf bsmi00lp02 <bsmi00lp02.enc <bsmi00lp.ttf... bsmi00lp55 <bsmi00lp55.enc <bsmi00lp.ttf 新增 /usr/local/share/texmf/dvips/config/bkai00lp.map 內容如下 : bkai00mp01 <bkai00mp01.enc <bkai00mp.ttf bkai00mp02 <bkai00mp02.enc <bkai00mp.ttf... bkai00mp55 <bkai00mp55.enc <bkai00mp.ttf * bsmi00lp.ttf,bkai00mp.ttf 要置於 kpathsea 找得到的地方, 如 /usr/local/share/texmf/fonts/truetype ( 目錄可自行建立 ) 修改 /usr/local/share/texmf/pdftex/config/pdftex.cfg, 加入 : map +bsmi00lp.map map +bkai00mp.map 新增 /usr/local/share/texmf/tex/latex/cjk/bg5/c00aming.fd 內容如下 : \def\fileversion{4.2.0} \def\filedate{2001/09/28} \ProvidesFile{c00aming.fd}[\filedate\space\fileversion] \DeclareFontFamily{C00}{aming}{} \DeclareFontShape{C00}{aming}{m}{n}{<-> \DeclareFontShape{C00}{aming}{bx}{n}{<-> CJK * bsmi00lp}{} CJK * bkai00mp}{} \endinput 新增 /usr/local/share/texmf/tex/latex/cjk/bg5/c00bsmi00lp.fd 內容如下 : \def\fileversion{4.2.0} \def\filedate{2001/09/28} \ProvidesFile{c00bsmi00lp.fd}[\filedate\space\fileversion] \DeclareFontFamily{C00}{bsmi00lp}{} \DeclareFontShape{C00}{bsmi00lp}{m}{n}{<-> \DeclareFontShape{C00}{bsmi00lp}{bx}{n}{<-> CJK * bsmi00lp}{} CJK * bkai00mp}{} \endinput 這樣粗體字會去選用文鼎楷書體 ( 個人不喜歡模擬出來的粗體字 ) 當然楷書體也要自行按上述方法製作出來 執行 texhash(or mktexlsr) 這樣就可以了, 要使用明體就使用 aming 的字型名稱, 要使用楷體就使用 akai( 依上述方法做一個 c00akai.fd) 當然,CJK 的使用方法, 請參考 CJK 所附文件, 一定要指定 aming 才會去使用所定義出來的字型, 否則會去抓 CJK 預設字型, 那當然一般系統上是沒有的 122

133 Chapter 10. 中文排版軟體為了配合中文 Type1 字型, 執行 dvips 時請加上 -Ppdf 或 -Pcmz 參數, 這樣英文字型才會去使用 Type1 最後記得執行 texhash 測試例子 === begin ex.tex === \def\fn{\char} \font\aa=bsmi00lp01 scaled 1000 \font\ccc=bsmi00lp55 scaled 3000 \font\ccc=bsmi00lp55 scaled 2000 \font\ccc=bsmi00lp55 scaled 1000 \font\jjj=bsmi00lp24 scaled 3000 \font\jjj=bsmi00lp24 scaled 2000 \font\jjj=bsmi00lp24 scaled 1000 {\CCC\Fn108} {\CCC\Fn109} {\CCc\Fn110} {\CCc\Fn111} {\Ccc\Fn112} {\Ccc\Fn113} {\Ccc\Fn114} {\JJJ\Fn55} {\JJj\Fn95} {\Jjj\Fn84} {\CCC\Fn101} {\CCC\Fn102} {\CCc\Fn103} {\CCc\Fn104} {\Ccc\Fn106} {\Ccc\Fn107} \bye === end ex.tex === pdftex ex.tex 即可產生內嵌中文 TTF 的 ex.pdf 如果有製作中文 Type1 字型, 則 tex ex.tex ; dvipdf ex 則是會內嵌中文 Type1, 各位可比較看看兩者有何不同 寫個 cjk-latex 稿試看看吧! 字型名稱要使用 bsmi00lp 我寫的 sh script 只是個半成品, 可能得多試幾次才會成功 have fun! :) * LaTeX 稿請用 pdflatex 要編譯 CJK-latex 文稿, 可有兩種方式 : 1. bg5latex test.tex ; pdflatex test.cjk 2. 寫一個 sh script(bg5pdflatex) 內容如下 : === bg5pdflatex begin === #!/bin/sh FILE= echo $1 sed -e s \(.*\)\.[^/]*$ \1 bg5conv < $1 > $FILE.cjk pdflatex $FILE.cjk === bg5pdflatex end === chmod +x bg5pdflatex 後置於 PATH 可及之處 123

134 Chapter 10. 中文排版軟體 bg5pdflatex test.tex 即可 其實這個 script 的內容和 bg5latex 是一樣的, 只不過是把 latex 換成 pdflatex 而已 ps. 內容如有錯誤, 請不吝指正 Figure ttf2pt1 snapshot WWW: 使用 pdftex/pdflatex 讓 pdf 檔內嵌中文 TTF/TTC (http://www.study-area.org/tips/latex/pdftex.html) WWW: 由 TeX/LaTeX 製作中文 PDF 檔 (http://www.study-area.org/tips/latex/chpdf.html) WWW: CJK/LaTeX environment 中文 Type1 及 TTF 的使用 (http://www.study-area.org/tips/latex/cjk-ttf.html) WWW: (http://ttf2pt1.sourceforge.net/) 124

135 Chapter 11. 中文轉碼軟體 iconv iconv 的安裝 : # cd /usr/ports/converters/iconv # make install 基本的用法有 : % iconv -f gb2312 -t big5 file.gb > file.big5 以下是寫 C 程式的小範例 : #include <stdio.h> #include "iconv.h" void my_iconv(char *fromcode, char *tocode, char *inbuf, char *outbuf) { iconv_t cd; size_t status; char *inbufp, *outbufp; size_t inbytesleft, outbytesleft; inbytesleft = strlen(inbuf); outbytesleft = inbytesleft * 5; cd = iconv_open(tocode, fromcode); if ((iconv_t) (-1) == cd) { perror ("Error at iconv_open"); exit(1); } inbufp = inbuf; outbufp = outbuf; status = iconv (cd, &inbufp, &inbytesleft, &outbufp, &outbytesleft); if (status == (size_t) -1) { perror ("Error at my_iconv"); } status = iconv_close(cd); if (status == (int) -1) { perror ("Error at iconv_close"); } return; 125

136 Chapter 11. 中文轉碼軟體 } int main(int argc, char* argv[]) { char *inbuf = " 加上 "; char *outbuf = (char *) malloc(sizeof (char) * strlen(inbuf)*5); my_iconv("big5", "GBK", inbuf, outbuf); } printf("%s -> %s\n", inbuf, outbuf); free(outbuf); 以下是編譯的方式 : gcc -I/usr/local/include -L/usr/local/lib -liconv -o my_iconv my_iconv.c WWW: (http://www.dante.net/staff/konstantin/freebsd/iconv/) cn2jp - 在中中文文和日日文文間的編編碼碼轉移函式庫 一個可以中文 {GB,Big5,HZ} 和日文 (EUC-Jis/Shift-Jis/Jis) 之間互相轉換的程式 cn2jp 的安裝 : # cd /usr/ports/converters/cn2jp # make install 基本的用法有 : % b2j < file.big5 > file.jis % g2j < file.gb > file.jis % j2b < file.jis > file.big5 % g2b < file.gb > file.big5 % j2g < file.jis > file.gb % b2g < file.big5 > file.gb 另外還有幾個可以使用的 Library: char *lang_big5_to_eucjis(istr) ;translate Big5 in istr to EUC-Jis in allocated buffer ;the allocated buffer is returned and valid until next call ;refer to subdirectory big2jis char *lang_gb_to_eucjis(); ;translate GB in istr to EUC-Jis in allocated buffer ;the allocated buffer is returned and valid until next call ;refer to subdirectory gb2jis char *lang_eucjis_to_big5(istr) ;translate EUC-Jis in istr to Big5 in allocated buffer 126

137 Chapter 11. 中文轉碼軟體 ;the allocated buffer is returned and valid until next call ;refer to subdirectory jis2big char *lang_gb_to_big5(istr) ;translate GB in istr to Big5 in allocated buffer ;the allocated buffer is returned and valid until next call ;refer to subdirectory gb2big char *lang_eucjis_to_gb(istr) ;translate EUC-Jis in istr to GB in allocated buffer ;the allocated buffer is returned and valid until next call ;refer to subdirectory jis2gb char *lang_big5_to_gb(istr) ;translate Big5 in istr to GB in allocated buffer ;the allocated buffer is returned and valid until next call ;refer to subdirectory big2gb int int lang_uzpj ;uses the uzpj system for unmappable words lang_debug ;turns on the debug info in translation autoconvert - 智慧的中中文文編編碼碼轉換 autoconverter 的特色是有自動判斷轉碼功能, 適合用在 GB <=> Big5 <=> HZ 互轉 autoconvert 的安裝 : # cd /usr/ports/chinese/autoconvert # make install 如果您使用 procmail, 在 /usr/local/share/autoconvert/procmailrc.example 底下有一個將 autoconvert 當作 procmail 過濾器的範例 autoconvert 使用方法 : % autob5 -i utf8 -o big5 < shed.utf8 > shed.utf8.big5-ac WWW: (http://banyan.dlut.edu.cn/~ygh/) c2t - 轉譯 GB/Big5 編碼成拼音 GB( 大陸 )/Big5( 台灣 ) 中文轉成拼音中文字轉成英文字母拼音 c2t 的安裝 : # cd /usr/ports/chinese/c2t 127

138 Chapter 11. 中文轉碼軟體 # make install % echo " 您好 " b2g c2t nin2 hao hc - 漢字轉換器, 在 GB 和 Big5 編碼間轉換 漢字轉換器, 這是一個 BIG5 及 GB 編碼的轉換程式 GB 與 Big5 屬於兩個不同組織各自制定的標準, 對應漢字編碼的轉換都是通過表格來轉換, 它們之間不存在任何內在的邏輯關係或函數 hc 的安裝 : # cd /usr/ports/chinese/hc # make install GB 轉為 BIG5 用 : % hc -m g2b -t /usr/local/share/chinese/hc.tab < INPUT_FILE > OUTPUT_FILE BIG5 轉為 GB 用 : % hc -m b2g -t /usr/local/share/chinese/hc.tab < INPUT_FILE > OUTPUT_FILE 您可以自己寫一個 shell script 來簡化上面的指令 或是直接使用已經寫好的 shell script g2b 和 b2g gb2jis - GB 漢字轉換 JIS 漢字 # cd /usr/ports/chinese/gb2jis # make install 可輸入以下編碼 : GB GB GB 中國語 EUC (8-bit GuoBiao) HZ-encoding 可輸出以下編碼 : JISX JISX JISX JISX UZPJ JISX JISX UZPJ 日本語 EUC 日本語 EUC + UZPJ Shift-JIS 128

139 Chapter 11. 中文轉碼軟體 Shift-JIS + UZPJ UZPJ( 雙拼 ) 規則等詳細說明請參閱 man 1 gb2jis 的操作指南 hztty - 在 GB Big5 和 HZ tty 中轉換 Hztty 可在不同中文編碼格式做轉換 可轉換國標 (GB)/ 繁體 (Big5)/ 漢字 (HZ) 標 (GB) 就是大陸用的簡體字, 繁體 (Big5) 是台灣用的, 漢字 (HZ) 是其它地區用的, 各地區有不同的中文編碼, 有了此程式讓不同地區間的中文溝通更順暢 hztty 的安裝 : # cd /usr/ports/chinese/hztty # make install 用法很簡單, 如果您要在 Big5 的環境底下連上 GB 的 BBS, 只要依照以下的步驟 : % hztty -I big2gb -O gb2big [hztty started] % telnet bbs.tsinghua.edu.cn % exit exit [using /dev/ttyp3] [hztty exited] 這樣子就可以輸出自動將簡體轉為繁體, 並將輸入自動由繁體轉為簡體, 就可以很方便的與使用簡體的人溝通了 bbs.tsinghua.edu.cn( 水木清華 ) 有 FreeBSD 的討論版 Figure hztty snapshot 129

140 Chapter 11. 中文轉碼軟體 jis2gb - JIS 漢字轉換 GB 漢字 # cd /usr/ports/chinese/jis2gb # make install 可輸入以下編碼 : JISX (JISC ) JISX 日本語 EUC Shift-JIS 可輸出以下編碼 : GB GB GB 中國語 EUC (8-bit GuoBiao) HZ-encoding 詳細說明請參閱 man 1 jis2gb 的操作指南 pycodec - 中文碼 / 萬國碼轉換程式 這個套件支援 Python 和 C 兩種介面, 可轉換中文碼和萬國碼 (Unicode) 如果您只用 Python 寫程式, 請採用 Python 介面 然而, 如果您喜歡 C, 可以試著使用 C 介面 C 介面是用 Python/C API 寫出來的, 目的是為了得到較佳的效能 就目前而言,Python 介面適用 Linux 和 Windows 系統, 但是, 這一版的 C 介面只能用於 Linux 系統 # cd /usr/ports/chinese/pycodec # make install 在 demo/ 子目錄下, 您可以找到 test_*.py; 這是用來示範如何把中文碼轉換成 Unicode, 或者從 Unicode 轉換成中文碼 在 chinesetw/ 子目錄下, 有四個對照表檔案, 如下所示 : o big52utf1.py o big52utf2.py o utf2big51.py o utf2big52.py 主檔名中最後一個數字是指 BIG5 碼的層級, 如 big52utf1.py 指的就是第一層 BIG5 碼, 而 big52utf2.py 指的就是第二層 BIG5 碼 由於第一層 BIG5 碼定義的都是最常用的中文字, 因此, 把第一層和第二層分開, 多少有助於加快辭典的搜尋速度 此外, 倚天版的 Big5 或是 Big5 Plus 並不保證能正常運作 C 介面 : 每個共享模組中只有兩個方函 :decode() 和 encode() 您可以把 BIG5 字串轉成萬國碼字串, 也可以直接轉成 UTF-8 或 UTF-16 最原始的用法, 請參見範例 #!/usr/local/bin/python twstring = " 這是一個測試, 英文是 \"This is a test.\"\n" + \ 130

141 Chapter 11. 中文轉碼軟體 " 先把 BIG5 碼轉換成 Unicode, 再把 Unicode 轉 \n" + \ " 回 BIG5 碼. 效果還不錯, 但效能差一點." uni = unicode(twstring, "big5_tw") bstring = uni.encode("big5_tw") print "Original BGI5 encoded string:" print twstring print "Transcode to Unicode encoding:" print repr(uni) print "Print as a BIG5 encoded string:" print bstring WWW: (http://sourceforge.net/projects/python-codecs/) fzzdxfw - 方正中等線繁體 Contribute by 逸晨 last update: 2003 年 4 月 6 日周日 15 時 43 分 29 秒 CST 把簡體網站直接變繁體的方式目前有不少種, 使用南極星的軟體, 使用中介型網站例如番薯藤的簡體網頁 繁體化 (http://chinagate.yam.com/), 另ㄧ種就是直接從字型下手 在這邊提供從字型下手的方式 fzzdxfw 字型的安裝 : # cd /usr/ports/outta-port/fzzdxfw # make install clean 安裝完後, 可以用 ttfm.sh --list xttfm 來查看是否有裝好 FZZDXFW.TTF -misc-fzzhongdengxian_z07t-medium-r-normal c-0-gb FZZDXFW.TTF -misc-fzzhongdengxian_z07t-medium-r-normal p-0-iso FZZDXFW.TTF -misc-fzzhongdengxian_z07t-medium-r-normal c-0-iso 確認後, 設定 Mozilla 的字型配置, 繁體字型與歐美字型的部分保持原設定, 只需要修改簡體字型的部分 如果是 IE 的使用者可以將字型安裝到 C:/WINDOWS/Fonts 之下, 然後開啟 IE, 工具 -> 網際網路選項 -> ㄧ 般 -> 字型 -> 字集 : 簡體中文 -> 網頁字型 : FZZhongDengXian-Z07T -> 並且修改工具 -> 網際網路選項 -> ㄧ般 -> 存取設定 -> 略過 Wab 網頁上指定字型樣式勾起來, 可以防止網頁直接寫死字型 純文字字型 : FZZhongDengXian-Z07T, 131

142 Chapter 11. 中文轉碼軟體 Figure fzzdxfw snapshot DL: 方正中等線繁體下載位址 (http://dl1.51soft.com:8080/51fonts/cnfont/fangzheng/fzzdxfw.zip) 132

143 Chapter 12. 中文郵件用用戶戶端 sylpheed - 建構在 GTK+ 上, 輕量級且快速的電子郵件軟體 GPL base client,base on GTK+ 它是日本人寫的, 已經支援 I18N 和 XIM 在顯示和輸入中文都沒問題, 和 xcin2.5 也搭配良好 mail/sylpheed 的安裝 : # cd /usr/ports/mail/sylpheed # make install 安裝完後, 必須修改字型設定, 修改 $HOME/.sylpheed/sylpheedrc 檔, 將 message_font 改成下面的樣子 message_font=8x16,kc15f,-*-16-*-big5-0 Figure sylpheed snapshot WWW: (http://sylpheed.good-day.net/) mutt - 功能能強強大的電子郵件軟體 console 模式下的中文電子郵件軟體 Mutt -- "The Mongrel of Mail User Agents" 包含了很多其他如 Elm Pine mh slrn 的特點, 特性是包含顏色支援, 訊息串流,MIME 解碼 ( 包含 RFC1522 支援得標頭編 133

144 Chapter 12. 中文郵件用戶端 碼 ), 個人化金鑰的保存,POP3, 支援 DSN 和 PGP/MIME chinese/mutt 的安裝 : # cd /usr/ports/chinese/mutt # make install 設定.muttrc set charset=big5 set locale="zh_tw.big5" set send_charset="big5:gb2312:us-ascii:iso :utf-8:x-unknown" charset-hook us-ascii big5 charset-hook iso big5 如果寄信給 bbs 的朋友, 有亂碼問題的話 echo "set bbsislame=yes" >> ~/.muttrc mutt 1.3.x 讀 utf8 及簡體中文的信件都沒有問題 Figure mutt snapshot WWW: (http://www.mutt.org/) Mutt 使用者資訊 : (http://www.math.fu-berlin.de/~guckes/mutt/) pine4 - 操作便利的電子郵件軟體 console 模式下的中文電子郵件軟體 大部份的訊息 選單都已經中文化了也可以正確無誤的處理中文信件, 是個很方便的讀信軟體 pine4 的功能包含了支援 MINE 通訊錄, 還支援 IMAP mail 與 MH 格式的資料 chinese/pine4 的安裝 : 134

145 Chapter 12. 中文郵件用戶端 # cd /usr/ports/chinese/pine4 # make install 若是顯示仍有問題的話, 進入 pine4 之後選 SETUP/Config 在 feature list 中勾選 ( 按 X): [X] enable-8bit-esmtp-negotiation [X] enable-8bit-nntp-posting 然後在 character-set 上按 C, 將其值改為 big5 或 gb2312 按 E 脫離儲存即可 WWW: (http://www.washington.edu/pine/) 郵件亂碼? 由於歷史原因,Internet 上有些郵件系統只支援 7Bit 的字元傳輸, 而漢字的內碼是 8Bit 的, 當在電子郵件中發送中文時, 如果經過這些只支援 7Bit 字元的郵件系統, 便會將漢字內碼的第八位元的 1 全部變成 0 以 " 中文 " 兩字為例,HEX 為 A4A4A4E5, 當最高位元被清掉時就會變成 , 也就是 "$$$e" telnet 也存在這樣子的問題 除了中文郵件外, 使用電子郵件傳送圖片 程式 壓縮文件等也會發生這個問題 所以在電子郵件中一般 採用各種郵件編碼方式來解決這個問題, 將 8Bit 按照一定的規則進行編碼, 便可以完好地通過只支持 7Bit 字元的郵件系統 常見的郵件編碼有 UU 與 MIME, 而 MIME (Multipurpose Internet Mail Extentions) 一般翻譯成 多媒體傳送模式, 顧名思義, 它標榜的就是可以傳送多媒體型式的檔案, 可以在一封 mail 中附加各種型式檔案一起送出 MIME 定義兩種編碼方法 :Base64 與 QP(Quote-Printable), 兩者使用時機不同,QP 的規則是對於資料中的 7bits 無須重複 encode, 僅 8bits 資料轉成 7bits QP 編碼適用於非 US-ASCII 的文字內容, 例如我們的中文檔案, 而 Base64 的編碼規則, 是將整個檔案重新編碼, 編成 7bits, 它是用於傳送 binary 檔案時使用 由於編碼的方式不同, 會影響編碼之後的檔案大小 有些較懶惰的軟體便都一律採用 Base64 編碼了 含有 MIME 編碼的文件, 您查看它的源始碼, 一般都含有 : "This is a multi-part message in MIME format." 這樣的句子 以下我們以 mmencode ( 又稱為 mimencode) 作為 QP 與 BASE64 的範例, mmencode 的安裝 : # cd /usr/ports/converters/mmencode # make install clean RFC Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies RFC Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types RFC MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text UU 編碼 (uuencode 與 uudecode) UU 是指 Unix 之間傳送二進制文件, 就是 Unix to Unix 使用 uuencode 將檔案編成 7 位元 ASCII 檔案, 把它寄出, 收信人收到後, 可以用 uudecode 將這份資料還原為原來的檔案 135

146 Chapter 12. 中文郵件用戶端 uuencode 的第一個參數是要加碼的檔案, 也就是您信件的內容 第二個參數是希望收信人解開後檔案叫什麼名字 % echo " 中文 " > infile % uuencode infile remotefile begin 644 remotefile %I*2DY0KQ end % uuencode infile remotefile mail statue % mail Mail version 8.1 6/6/93. Type? for help. "/var/mail/statue": 1 message 1 new >N 1 statue & Fri Dec 21 13:12 16/390 Message 1: From statue Fri Dec 21 13:12: Date: Fri, 21 Dec :12: (CST) From: statue <statuei> To: statue begin 644 remotefile %I*2DY0KQ end & s mail1 "mail1" [New file] & q % uudecode mail1 % cat remotefile 中文 QP - Quote-Printable Content-Transfer-Encoding: quoted-printable QP 編碼的方式, 是將一個字元用二個 16 進位法的數值表示, 然後前面再加個 = 字元 ( 等號 ): % echo " 中文 " mmencode -q =A4=A4=A4=E5 % echo "=A4=A4=A4=E5" mmencode -q -u 中文 或是用 perl 來將 QP 解碼 : while(defined($line = <STDIN>)) { $line =~ s/=([0-9a-fa-f][0-9a-fa-f])/chr hex $1/ge; $line =~ s/[\n\r]+$//; print STDOUT $line; } 用 perl 來將文字編成 QP 碼 : 136

147 Chapter 12. 中文郵件用戶端 while(defined($line = <STDIN>)) { $line =~ s/([=\x00-\x1f\x80-\xff])/sprintf("=%02x",ord($1))/ge; print STDOUT $line; } BASE64 Content-Transfer-Encoding: BASE64 BASE64 的算法很簡單, 它將字符流順序放入一個 24 位的緩衝區, 缺字符的地方補零 然後將緩衝區截斷成 4 個部分, 高位在先, 每個部分 6 位, 用下面的 64 個字符重新表示 : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz /" 如果輸入只有一個或兩個字節, 那麼輸出將用等號 "=" 補足 還可以隔斷附加的信息造成編碼的混亂 這就是 BASE64 % echo " 中文 " mmencode pksk5qo= % echo "pksk5qo=" mmencode -u 中文 其他亂碼? 以 " 中文 " 兩字為例, 整理一下以上的編碼會出現的狀況 : uuencode:%i*2dy0kq QP:=A4=A4=A4=E5 BASE64:pKSk5Qo= 以及其他語言性的轉碼可能出現的狀況 : GB2312: 笢恅 (iconv -t GB2312) Unicode:U+4E2D U+6587 UCS-2:N-e(iconv -t UCS-2) UTF-7:+Ti1lhw(iconv -t UTF-7) UTF-8: 銝剜??(iconv -t UTF-8) UTF-16:??N-e?(iconv -t UTF16) UTF-32:??N-e?(iconv -t UTF32) CNS11643: CCCII: 另外一些有的沒的程式會出現的狀況 : hexdump: a4a4 e5a4 000a (hexdump) 137

148 Chapter 13. 中文網際網路軟體 bind8 chinese bind8 is just for 8-bit Domain Name, nothing need to document. bind8 的安裝 : # cd /usr/ports/chinese/bind8 # make install samba - 網路芳鄰, 資源分享程式 last update: 2003 年 1 月 25 日周六 12 時 24 分 45 秒 CST samba 是一個能把您的 Unix 電腦和其他 MS Windows 電腦相互共享資源的軟體 samba 提供有關於資源分享的三個功能 包括 smbd, 執行了它, 就可以使這台 Unix 能夠共享資源給其他的電腦, 而 smbclient 就是讓這台 Unix 去存取其他電腦的資源了, 最後一個 smbmount, 則是類似 MS Windwos 下 網路磁碟機 的功能, 可以讓您把其他電腦的資源掛在自己的檔案系統下 samba 的安裝 : # cd /usr/ports/net/samba # make install 設定檔修改 /usr/local/etc/smb.conf, 才算完整支援中文, 在 [global] 中找到 for Traditional Chinese Users 的設定區, 將 client code page=950 前面的 ; 拿掉, 不要動 coding system=cap, 並在後面加上 valid chars = 0xb9 [global] # for Traditional Chinese Users client code page=950 ; coding system=cap valid chars = 0xb9 關於 valid chars = 0xb9, 這個好像是很久前遇過的一個小問題, 如果您在 smb.conf 中設定 "workgroup = 電腦 ", 這時候用網芳去瀏覽會發現出現的是 " 鄒腦 ", 電 =0xb971 鄒 =0xb951 q=0x71 Q=0x51, samba 在遇到 0xb9 後, 自動把下一個字元轉成大寫了, 如果設定 valid chars = 0xb9 就會正常 而這邊會出現 coding system=cap 則是天大的錯誤, 十分容易誤導使用者, 以下摘錄 smb.conf.5: coding system (G) This parameter is used to determine how incoming Shift-JIS Japanese characters are mapped from the incoming client code page used by the client, into file names in the UNIX filesystem. Only useful if client code page is set to 932 (Japanese Shift-JIS). The options are : 138

149 Chapter 13. 中文網際網路軟體 * CAP - Convert an incoming Shift-JIS character to the 3 byte hex representation used by the Columbia AppleTalk Program (CAP), i.e. :AB. This is used for compatibility between Samba and CAP. Default: coding system = <empty value> 在網芳上的名稱通常都要自己加上 netbios name = Elf, 其中的 Elf 就是網芳上的名稱 另一個 samba 的中文問題是 smb.conf 不能設定某些字為 Section, 例如 : ;[ 設計與科技 ] [ 計與科技 ] comment= 設計與科技 browseable = yes path = /home/design read only = yes guest ok = yes 因為 " 設 " 的第二個字元是 "]" 與 samba 的 Section 字元衝突, 所以解決的方法就是去修改 source/param/param.c: --- params.c.orig Mon May 12 19:46: params.c Mon May 12 20:37: ,6 +297,15 i = end + 1; c = EatWhitespace( InFile ); } else if ( c > 0x80 ) { bufr[i++] = c; end = i; c = mygetc( InFile ); bufr[i++] = c; end = i; c = mygetc( InFile ); } else { bufr[i++] = c; /* All others copy verbatim. */ samba 大部分的程式都有中文問題, 需要更多人去 patch Note: samba 是用 TCP/IP 通訊協定, 所以在 MS Windows 端的電腦也要裝上 TCP/IP 協定, 不然就不能用囉 WWW: (http://www.samba.org/) Online Book - Using Samba: (http://www.oreilly.com/catalog/samba/) 139

150 smbfs Chapter 13. 中文網際網路軟體 如果要方便的使用網芳上的東西, 就要裝 smbfs 這個軟體, 在 net/smbfs 底下, 裝好後還需要重編 kernel, 將 options LIBMCHAIN 和 options LIBICONV 編進去才行 4.5-RELEASE 之後已經不需要重新編譯 kernel 了 然後只要用 mount_smbfs -I host /smb/node 就可以方便的使用囉 HTML 網頁瀏覽 Konqueror - KDE 內建的瀏覽器 Konqueror 是 KDE 內建的瀏覽器, 在各方面的支持都都十分完善 Figure konqueror snapshot mozilla-tclp - Mozilla 繁體中中文文語言包 Mozilla 是一個開放原始碼的網頁瀏覽器, 設計方向是順從標準 高性能和可移植性 Mozilla 繁體中文語言包 (Traditional Chinese Language Pack) 提供一個 L10N 的環境給 Big5 的使用者 在安裝完後, 選擇 View -> Languages and Web Content -> Tradition Chinese (zh-tw), 然後關閉後從開就有中文的介面了 Mozilla 在中文輸入及顯示方面並沒有什麼問題, 但在列印部份, 請修改一下 /usr/x11r6/lib/mozilla/defaults/pref/unix.js 加入中文的 ps font : 140

151 Chapter 13. 中文網際網路軟體 pref("print.psnativecode.zh-tw", "big5"); pref("print.psnativefont.zh-tw", "ShanHeiSun-Light-ETen-B5-H"); 並安裝 print/adobe-cmaps 與 print/ghostscript-gnu-commfont 取得 ETen-B5-H 的 CMap name, 以及將 bsmi00lp.ttf 用 ttfm.sh --add bsmi00lp.ttf 取得 ShanHeiSun-Light 的 CIDFont name, 這是 CID-Keyed Font 的兩個組成要素 也可以用 ttfm.sh --list grep ETen-B5-H 來看看有那些可以用的字型 如果直接用編輯器去看.ps 則會發現有一段 : /Unicode2NativeDictzh-TW 0 dict def /zh-tw_ls { /NativeFont /ShanHeiSun-Light-ETen-B5-H def /UCS2Font /Courier def /Unicode2NativeDict Unicode2NativeDictzh-TW def /unicodeshow1 { real_unicodeshow } bind def /unicodeshow2 { real_unicodeshow_native } bind def } bind def 並且原來的 default_ls 會變成 zh-tw_ls 在 時所用的是 print.psnativecode.zh-tw 和 print.psnativefont.zh-tw, 到了 分得更細,ps 單獨當一 層, 變成 print.postscript.nativecode.zh-tw 和 print.postscript.nativefont.zh-tw 另外解釋一下 ports 中 files/ 底下的東西 Mozilla 把它的 resource 用一種很特殊的機制管理 當我們安裝東西時, 它會記錄到 installed-chrome.txt ( 所以 files 底下的這個檔偶爾會變, 因為 language pack 內容若有新增 / 刪改它也會跟著變 ) 然後, all-locales.rdf 及 user-locales.rdf ( 存在於以前 keith 的 tclp) 是 Mozilla 參考 installed-chrome.txt 而做出來的檔案 所以這兩個檔理論上是不應該擺在 ports 的 files 的 ( 應該讓 Mozilla 產生 ), 以前 keith 是在自己的電腦上先跑過, 然後抓產生出來的 rdf... 這就好像 FreeBSD 的 package, 會有 dependency 的問題 所以我把這兩個檔案拿掉, 改成在 Makefile 裡讓 mozilla 產生 ( 這樣才像 ports 嘛 :P) 不過直接使用 CIDKeyed-font 可能沒辦法直接送印表機列印, 要解決此問題可利用 ps2ps 指令, 將原 PostScript 文件轉成內嵌的 PostScript 文件 這樣子需要兩道步驟, 沒辦法直接取代原列印指令欄的 lpr ${MOZ_PRINTER_NAME:+ -P }${MOZ_PRINTER_NAME}, 所以就必須改成比較複雜的方式 : gs -q -sdevice=pswrite "-soutputfile=/tmp/out.ps" \ "-dnopause -dbatch -dsafer" && \ lpr ${MOZ_PRINTER_NAME:+ -P }${MOZ_PRINTER_NAME} \ /tmp/out.ps && rm -f "/tmp/out.ps" 如果選擇了 mozilla 當作您的瀏覽器, 那麼一定要裝一下 x11-fonts/mozilla-fonts 或是 x11-fonts/webfonts, 前者是專門為 mozilla 所打造出來的 pcf fonts, 後者則是 ms 的 truetype fonts 如果要看 flash 的話也可以裝 www/flashplugin-mozilla 另一個 Mozilla 的中文問題是當使用 Mozilla 的網址列中文使用 Google 搜尋變問號字串, 可以透過以下的修正方式 : # cd /usr/x11r6/lib/mozilla/searchplugins # fetch 或是安裝 chinese/mozilla-tclp, 這個 port 也會修正這些問題, 不過方式不ㄧ樣 現在的 mozilla 已經使用 XFT, 所以一開始使用可能會找不到字體, 可以經由 env GDK_USE_XFT=0 mozilla & 的方式來執行 mozilla 讓他不採用 XFT, 或是利用 fc-cache -f -v 來設定 XFT 而中文馬賽克的問題可以加裝 x11-fonts/webfonts 來修復, 或是在字型選擇的地方將 Allow documents to use other fonts 關閉 141

152 Chapter 13. 中文網際網路軟體 Figure mozilla snapshot L10N WWW: (http://www.csie.ntu.edu.tw/~b /mozilla/) WWW: (http://www.mozilla.org/) lynx - console 網頁瀏覽器 lynx 的安裝 : # cd /usr/ports/www/lynx # make install lynx (http://lynx.browser.org/) v2.7 之後已經可直接接觀看中文的網頁了 由於設定檔常常防寫, 所以先開啟寫的權限 chmod u+w /usr/local/etc/lynx.cfg 執行 lynx, 按 O)ption,Display character set character set, 按上下鍵選 big5, 再存檔即可 或是修改 /usr/local/etc/lynx.cfg, 按上下鍵選 Taipei(Big5), 再選 Assumed document CHARACTER_SET:big5 ASSUME_CHARSET:big5 PREFERRED_LANGUAGE:zh-TW 抑或是 lynx -assume_charset=big5 -assume_local_charset=big5 142

153 Chapter 13. 中文網際網路軟體 Figure lynx snapshot lynx WWW: (http://lynx.isc.org/current/) w3m - console 網頁瀏覽器 目前比較常用, 且支援中文的 console 瀏覽器有 lynx 和 w3m 兩套, 雖然 lynx 在處理網頁上並不是很漂亮, 不過使用的人口不少, 所以還是介紹一下關於中文方面的設定 不過建議您使用 w3m, w3m 在排版的部份比 lynx 好很多 w3m 的安裝 : # cd /usr/ports/www/w3m # make install w3m WWW: (http://w3m.sourceforge.net/) links - 現在的預設 console 瀏覽器 links 的安裝 : # cd /usr/ports/chinese/links # make install 在 -g 的模式下無法正確的看到中文 netscape netscape47-* linux-netscape47-* 完整中文支援, 感謝許多先進的幫忙, 選單 / 設定 / 訊息全都是中文, 沒有用到任何 hack 來修正亂碼的問題, 自然就不會出現一堆狀況 143

154 Chapter 13. 中文網際網路軟體 分成 communicator & navigator, 可以選擇適合的, 並且這樣比較符合 official port layout, 以後要加 slave port 會相當容易 名稱改成像 zh-tw-netscape-communicator-4.75 或 zh-cn-netscape-..., 目前暫時把支援大陸 GB 的部份拿掉, 如果有人需要簡體支援再加上去 加入 Big5 版的 nethelp, 這部份是從 Netscape 網站拿下來的, 所以不會像 sysware 的翻譯會有版權問 題," 輔助 -> 內容 " 就可以看到 nethelp 新增 netscape.cfg 由於 resource 檔沒辦法將右邊的輔助選單轉成中文, 必須用 netscape.cfg 才看得到 preferences.js, 指定內定使用的語言和字型 Wheel Mouse 設定 Navigator/Composer root/overthespot XIM input styles. 可以加強的地方 : 中文 Java applet 資源吃太兇 開檔案時,netscape47-* 會直接跳到根目錄,linux-netscape47-* 很正? 但會漏檔案 ( 這應該是 linuxulator 的問題 ), 不過 ja-netscape 沒有這種問題, 看來是 Netscape.ad/netscape.cfg/preference.js 的設定 列印用的字型最好改成比較漂亮的 arphic, 而不是現在的 moe netscape 和 linux-netscape 不同的地方 : linux-netscape 有比較多的 plugin, 像 acrobat realplayer, netscape 要加額外的軟體, 像 plugger 或 xswallow ( 也許以後可以加進這些設定檔 ) 目前 port 下裝的 XFree86 a.out library 由於是針對 FreeBSD 2.x 的版本, 所以處理 Big5 還是有問題 ( 沒有 GLGR patch), 必須要作個新的 libx11, 安裝上會比較花時間 WWW: (http://www.netscape.org/) FTP 檔案傳輸 IglooFTP 這個軟體最主要的特點就是容易使用, 並且對初學 FTP 者有著直覺化的操作設計 而老手們也可以發現他功能強大 可以調整許多設定選項, 以符合經驗老練的使用者們的需求 很多的選擇項都可點選相關的圖示來完成, 有快速的工具列 快速連線列 和本地端的圖形化目錄瀏覽視窗, 漂亮的檔案相關圖示, 並且還有 Netscape 的小工具列 連線的資料庫管理上, 使用了樹狀階層式的站台方法, 每一個 ftp site 以及 group 的資料都能很容易地被調整 另外還有不同使用者 (user profile) 的管理 遠端控制一台 FTP server 到 FTP client 傳輸資料 (FXP transfers) URL 剪貼簿中的監控 防火牆的支援 ( 包括了 SOCKS 5 ftp-gw WinGate proxy 等等 ) 遠端目錄的快取功能 佇列 (queue) 管理 還有許多進階的使用者命令等等 IglooFTP 的安裝 : 144

155 Chapter 13. 中文網際網路軟體 # cd /usr/ports/ftp/iglooftp # make install Figure IglooFTP snapshot WWW: (http://www.littleigloo.org/iglooftp.php3) NcFTP3 當我們在用許多文字介面的 FTP 程式時, 常為了要抓一個檔或是一個目錄, 往往就要輸入一些又臭又長的名稱, 但如果我們使用了 NcFTP, 您只要輸入檔名或目錄名的前幾個字元, 它就會自動幫您搜尋檔案或目錄的名稱, 使您減少了許多打字的時間 不只如此, 當您覺得一個 FTP 站不錯, 您也可以用 NcFTP 把這個站記錄下來, 不僅它可以記錄帳號和密碼, 它連路徑也一併記下了, 當您下一次想連回原站時, 只要再從選單中選一下, 就可輕鬆的連回去 除此之外,NcFTP 也擁有不少小功能, 它可以線上看文字檔, 線上去改變檔案的存取權限或名稱 而當您用 NcFTP 傳輸大檔案時, 您可以把它丟入背景執行, 使您瀏覽檔案的動作不會中斷 如果您想要用最基本的 FTP 傳輸語言測試遠端伺服器, 也可以用 NcFTP 也是在終端機底下可以輸入中文的 FTP 軟體, 不過版本要是 或是之後的版本 ncftp3 的安裝 : # cd /usr/ports/ftp/ncftp3 # make install 在 NcFTP 上使用 ls 可以正常的看到中文, 可是 lls 卻不能, 而且有特殊字元時也會不正常, 於是有以下的解法, 在啟動時加上 env LC_CTYPE=en_US.ISO_8859-1, 在傳特殊檔案時加上雙引號 env LC_CTYPE=en_US.ISO_ ncftp3 -u statue localhost 145

156 Chapter 13. 中文網際網路軟體 ncftp /usr/home/statue > mkdir " 成功 " ncftp /usr/home/statue > ls 成功 / ncftp /usr/home/statue > lls 成功 / Figure ncftp3 snapshot WWW: (http://www.ncftp.com) Telnet 遠端連線 bbsnet - BBS 跨海大橋 bbsnet 是 BBS 以前常提供的一項服務, 後來因為管理上的問題, 現在比較少見了 它提供了類似書籤的功能, 能快速的讓您連結到常用的 BBS 站台 bbsnet 的安裝 : # cd /usr/ports/net/bbsnet # make install 146

157 Chapter 13. 中文網際網路軟體 Figure bbsnet snapshot WWW: (http://linux.ee.tku.edu.tw/~kids/) qterm - 好用的 BBS 連線軟體 qterm 是目前在 Unix 中, 還算不錯的 BBS 連線軟體, 由 qt 函式庫寫成的, 除了安裝需要 qt 外, 其餘在使用上都還算不錯, 而且支援 auto-reply,anti-idle, 另外還有 Mouse Support, 可以不需要按鍵盤就可以在 BBS 中看文章, 選擇討論區, 整體上而言, 這是一套很適合 BBS 使用的連線軟體了 目前這套軟體已經在 ports 中了, 可以很方便的安裝 在 qterm-1.x 字型選擇上, 筆者偏好使用 sony-fixed, 也就是在選項的 Fixed[sony], 其他的 TrueType 都因為字距不固定, 容易造成畫面有些字會破碎 不過 qterm-2.x 已經可以使用文鼎字體了, 英文介面可以在 View -> Language -> Traditional Chinese 中切換成繁體中文, 不過要關閉後重新開啟 而中文的輸入和顯示也需要設定, 預設是 GBK, 經由 Option -> Preference -> Input Method 選擇 Big5, 以及在每個連線的 Advanced -> Display -> BBS Encoding 選擇 BIG5,Display Code 選擇 BIG5 即可 147

158 Chapter 13. 中文網際網路軟體 Figure qterm snapshot WWW: (http://qterm.gnuchina.org/) telnet - Telnet 的中中文文問題 如果您在自己的機器上可以輸入中文, 但 telnet 到別的機器後卻無法輸入中文, 那麼問題可能出在 telnet 程式上 當您還在 telnet 連線中時可以按 Ctrl-] 跳出, 在 telnet> 提示符號下輸入 set binary 即可 您也可以在連線時用 telnet -8 但是在連某些 SunOS 時會出問題 或是在 ~/.telnetrc 加上 DEFAULT set binary 另一個較簡單的辦法是直接改用可傳輸 8-bit 的 telnet 程式, 也就是安裝在 ports 中的 ports/chinese/telnet, 然後用 zh-telnet 來連線 zh-telnet 的安裝 : 在安裝前, 必須先安裝 /usr/src/usr.bin/telnet, 否則會出現以下的訊息 : ===> zh-telnet-1.0 is marked as broken: You need to build this port with /usr/src/usr.bin/telnet. 以下是從光碟機安裝 /usr/src/usr.bin/telnet: # mount /cdrom # cd /cdrom/src/ #./install.sh ubin 然後再到 ports 底下安裝 zh-telnet: # cd /usr/ports/chinese/telnet # make install 148

159 Chapter 13. 中文網際網路軟體 WWW: (http://www.freebsd.org/cgi/query-pr.cgi?pr=6144) ICQ 連線軟體 licq - ICQ clone 它是一個用 C++ 語言撰寫的非官方 ICQ clone 裝完 ports/net/licq 後, 選擇 ports/net/licq-console 或是 ports/net/licq-qt-gui 來安裝 licq-qt-gui 中文設定 : System -> Options -> Font -> Select Font -> Chinese Font Figure licq snapshot WWW: (http://www.licq.org/) gaim - ICQ, MSN Clone gaim 支援十分多種格式的線上溝通軟體 由於目前 ports/net/gaim 還不支援 I18N, 所以請用 ports/korean/gaim 暫時替代 net/gaim 的安裝 : # cd /usr/ports/korean/gaim # make install Blishs 來信告知, 目前 net/gaim 已經支援 I18N 在我測試後發現可以, 不過要設定一些東西 : 工具 -> 偏好設定 -> 交談 -> 忽略字型 149

160 如果選單中文有問題, 請參考 GNOME 程式的中文支援 Chapter 13. 中文網際網路軟體 要使用 ICQ 就直接在帳號與密碼的地方設定好 ICQ 的帳號, 通訊協定則是選擇 :AIM / ICQ, 其他使用預設值即可 要使用 MSN 則在登入畫面先選擇插件 (Plugin), 選擇讀取, 並將 libmsn.so 選擇進來, 這麼在通訊協定就會多一個 MSN 的選項 接著在帳號與密碼的地方設定好 MSN 的帳號, 通訊協定則是選擇 :MSN, 其他使用預設值即可 若是習慣使用 KDE 介面的話, 可以使用 net/kmerlin 或是 net/kmess Figure gaim snapshot Figure kmerlin snapshot 150

161 Chapter 13. 中文網際網路軟體 WWW: (http://www.marko.net/gaim/) bluefish - 網頁編寫 以標籤來編寫網頁, 雖然不似微軟的 Front Page 所見即所得般方便, 且在編寫網頁之前, 需對所有的標籤有所認識, 卻可以完全的掌控整的網頁, 讓您的網頁能擁有最精簡的內容, 一點都沒有多餘的程式 隨著時代的進步, 除了 Html 之外, 還有 PHP XML SSI WML 等等的出現 在 BlueFish 中, 也完整的呈現出來, 配合著標籤 精靈等等的引導, 讓您達到您想要的網頁 尤其是對於 PHP3 SSI XML 更提供了相關的函式可供索引, 讓您在編寫過程中, 能更容易的使用 連最近相當熱門的 WAP 手機用的 WML 網頁格式, 在 BlueFish 中也有提供對應的功能 這個網頁編寫軟體, 是建構在 GTK 上的, 所以在安裝本軟體之前, 需有 GTK+1.2 以上的版本 bluefish 的安裝 : # cd /usr/ports/www/bluefish # make install 設定檔的部分也要修改一下, 改 $HOME/.bluefish/rcfile 中的 editor_font 和 fontset editor_font: -sony-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-1, -*-ming-medium-r-normal-*-*-160-*-*-c-*-big5-0 fontset: 1 Figure bluefish snapshot WWW: (http://bluefish.openoffice.nl/) tin - 新聞討論群閱讀器 新聞群組 (Newsgroups) 是架設在 News server 上的一個討論園地, 它分為很多版, 每個人可以閱讀版上別人所刊登的討論信件, 也可以自己刊登自己的討論信件, 或回覆別人的討論信件 tin 的安裝 : # cd /usr/ports/chinese/tin # make install tin 是一個已將所有訊息中文化的新聞討論群閱讀器 (news reader) 執行 tin 前必須先設定環境變數 $NNTPSERVER 指向您想使用的新聞伺服器 : # setenv NNTPSERVER news.tw.freebsd.org 並設定 alias, alias tin env LC_CTYPE=en_US.ISO_ tin 然後執行 tin -r 即可 151

162 Chapter 13. 中文網際網路軟體 在 news.freebsd.tw.org 中有所有 FreeBSD 的 mailing list, 只要用 y 就可以列出所有的 mailing list, 然後用 s 來訂閱 Figure tin snapshot WWW: (http://www.tin.org/) tintin++ - MUD 工具 TinTin++ 並非中文軟體 它只是在您玩中文 mud 時非常的有用 tintin++ 的安裝 : # cd /usr/ports/chinese/tintin++ # make install 下面是一些中文 mud 站 : FengYun Xi You Ji Xia ke Xing fengyun.com 以 tt++ 來啟動, 進去後可以用 #help 來獲得一些指令, 然後用 #help command 可以知道更多的使用方式 然後用 #end 來離開 152

163 Chapter 13. 中文網際網路軟體 Figure tintin++ snapshot WWW: (http://mail.newclear.net/tintin/index.html) 中文 IRC 軟體 IRC 可說是找志趣相投的人聊天的最好地方, 可是為了讓聊天更有趣, IRC 的指令也十分之多, 這時使用一個聊天軟體是比較方便的 目前台灣 BSD 族群聚會的 IRC 通常都在 irc.seed.net.tw 與 irc.hinet.net 的 #bsdchat CHANNEL 中, 由於之前 irc.hinet.net 不穩, 目前大家都呆在 irc.seed.net.tw 中 xchat 而 XChat 就是其中一個不錯的選擇, 它的狀態選單十分之多, 是它的的一項特色, 像是您個人狀態 個人狀態用選單 各種狀態視窗, 當然最基本的 IRC Channel 的列表視窗也有, 而且還可以設定 Channel 人數的下限, 這樣就可以濾掉一些人數太少的 Channel 斷線重連注意名單 另外,XChat 熱鍵也作的十分不錯, F1<65374>F10 每個鍵都可以定義為熱鍵, 而在視窗右邊也有熱鍵, 而它們也都可以重新定義, 而您可以只用視窗的上方工具列, 更改您自身的全部狀態, 如果您是 Op( 管理者 ), 那麼在工具列上就可以更改聊天的主題了, 讓您聊天幾乎都不需要打指令. xchat 的安裝 : # cd /usr/ports/irc/xchat # make install 安裝完 xchat 後, 主畫面的地方還不是中文的, 只需要改一下設定就可以了 1. 設定 (S) 2. Setup 3. Channel Windows 153

164 Chapter 13. 中文網際網路軟體 4. Use gdk_fontset_load 打勾 5. Font: 的部份選用 fixed(kc) 1. 設定 (S) 2. Setup 3. Dialog Windows 4. Use gdk_fontset_load 打勾 5. Font: 的部份選用 fixed(kc), 並關掉 xchat 重開 或是在.xchat/xchat.conf 中修改 use_fontset = 1 font_dialog_normal = 8x16,kc15f,-*-16-*-big5-0 font_normal = 8x16,kc15f,-*-16-*-big5-0 Figure xchat snapshot WWW: irssi irssi 的安裝 : # cd /usr/ports/chinese/irssi # make install 如果是使用 telnet 連線軟體而要有彩色 irrsi, 則必須先設定 setenv TERM xterm-color 154

165 Chapter 13. 中文網際網路軟體 使用方法 :irssi -c irc.seed.net.tw -n your_nickname, 連上去之後,/join #bsdchat WWW: (http://www.irssi.org/) bitchx 一套中文字游標移動的 IRC 軟體 bitchx 的安裝 : # cd /usr/ports/chinese/bitchx # make install 使用方法 : BitchX -n your_nickname irc.seed.net.tw #bsdchat 就可以 WWW: (http://www.bitchx.com/), 會自動連上 irc.seed.net.tw 然後直接打 /join 155

166 Chapter 14. 中文程式設計 以下是一些軟體在中文支援方面, 利用程式的判斷 原則上如果是用 gtk 寫的軟體, 裡面有呼叫到 gtk_set_locale() 這個函式的話應該都沒問題 如果是其他的 X 軟體可能要找一下 source 裡面有沒有 setlocale(lc_ctype, NULL); 及 XIM 相關函式呼叫情形 如果有遵照正統做法, xcin2.5 應該都可以跟它搭配良好 Qt 沒碰過, 所以不知道他怎麼運作 不過猜想 XIM 這段應該跟 gtk 大同小異 用 xforms 寫的軟體應該會有問題 用 X11R6.4 版以後的 Xt/Xaw 寫的軟體應該是沒問題, 記得在.Xdefaults 裡頭加入 *international:true *fontset:-*-iso8859-1,-*-16-*-big5-0 等等 用 fltk 寫的軟體似乎也沒支援 XIM 在 FreeBSD 下寫程式應該注意的問題 在 FreeBSD 下寫程式, 結果發現一個中文的問題, 例如字串中包含這 " 許 " 這個字, 因為許字的下半碼是 ascii 中的 \ 符號, 結果就會造成錯誤, 請問這種情形應該如何解決? 又還有沒有其他的碼有這種問題? 在程式中該字前加一個 \, 還有很多有這個問題呢, 如下 : 5C A +B +C +D +E +F A0 兝 α 么功吒吭沔坼歿俞枯苒娉珮 B0 豹崤淚許廄琵跚愧稞鈾暝蓋墦穀閱璞 C0 餐縷擺黠孀髏躡 ER ER 尐佢汻岤狖垥柦 D0 胐娖涂罡偅惝牾莍傜揊焮茻鄃幋滜綅 E0 赨塿槙箤踊嫹潿蔌醆嬞獦螏餤燡螰駹 F0 礒鎪瀙酀瀵騱酅贕鱋鱭 \ 的 ASCII code 是 \0x5c, 從 [\0xa1-\0xf9][\0x5c] 都會有這個問題 #!/usr/bin/perl # # create code table (Big5) [\0xa1-0xf9][\0x40-\0x7e\0xa1-\0xfe] # # 繁體中文 (Big5) 文字內碼表的產生 open (OUT, "> big55c.txt"); select OUT; # 文字內碼表的產生 # 開頭的表示 print "\n5c "; print " A +B +C +D +E +F\n"; $c = 1; # 1 行文字數 (16 文字 ) $head = ""; $line = ""; for ($c1 = 0xA0; $c1 i<= 0xF9; $c1++) { # $c1 $c2=0x5c; # 開頭第一個字 是第一個位元 [\0xa1-\0xf9] 156

167 Chapter 14. 中文程式設計 if ("$head" eq "") { } $head = sprintf ("%02X ", $c1); $line.= " "; # if ($c1 == 0xA0) { 文字間的空白 $line.= " "; } else { $line.= pack("cc", $c1, $c2); } if ($c == 16 $c1 ==0xf9) { # 16 文字表示一行 print "$head$line\n"; $head = ""; $line = ""; $c = 1; } else { $c++; } } close(out); exit; JSP / Servlet 怎樣才能處理中中文文? 鄭原真 Yuan-Chen Cheng Copyright 本文版權 : GPL or BSD style, 請保留作者姓名 本文假設您已經會使用 JSP 或是 Servlet 撰寫英文的 Web-Page 如果您還不會, 或是根本不知道 JSP 或是 Servlet 是幹什麼的, 那這篇文章不是寫給您看的 在 Java Servlet Spec v2.0 中, 對於多國語言的支援, 並不足 您必須找到 Java Servlet Spec v2.2 的實作才行, 筆者試過的是 Apache Jakarta Tomcat 3.1 軟體 ( 註一 ) 本文測試平台是 Debian Woody, Sun jdk1.2.2, Tomcat 3.1, mm.mysql Java Server 如何處理中文 前言 首先, 如何正確的了解您一個 Big5 中文在 Java 中是正確的中文 Unicode 呢? 輸出一個 String(" 今 ").length() 吧! 由於 " 今 " 在 Big5 是由兩個 byte 組成, 但對 java 來說,java 的字元是 unicode, 也就是說, 無論是一個英文字或是一個中文字, 其 length() 都是 1. 也就是說, (new String(" 今 ")).length() ==> 1 才是正確的 Servlet 輸出中文的一個例子 下面是一個典型的 Java Servlet HelloWorldExample.java => cut here import java.io.*; 157

168 Chapter 14. 中文程式設計 import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldExample extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { response.setlocale(new Locale(new String("zh"), new String("TW"))); response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); String title = new String("hello 大家好 "); out.println("<title>" + title + "</title>"); out.println("</head>"); out.println("<body bgcolor=\"white\">"); out.println("<body>"); out.println("<p>"); } } out.println("<h1>" + title + "</h1>"); out.println("</body>"); out.println("</html>"); cut here 可以正常輸出中文的關鍵是 : response.setlocale(new Locale(new String("zh"), new String("TW"))); 注意這一行應該要放在 PrintWriter out = response.getwriter(); 之前執行 另外編譯時注意 javac -encoding Big5 HelloWorldExample.java 或是 (linux 上的 jdk1.2.2) export LANG=zh_TW.Big5 export LC_CTYPE=zh_TW.Big5 javac HelloWorldExample.java 注意, 這個例子在 jserv v1.1.2 並不能 work, 因為該版本實做的 JavaSoft Java Servlet APIs 2.0, 而 setlocale 是到 Servlet APIs 2.2 才有 158

169 Chapter 14. 中文程式設計 Java Server Page 如何處理中文 在此簡略說明, 先看下面的例子 : test.jsp page contenttype="text/html; charset=big5" %> <html> <body bgcolor="white"> 中文 TEST.<p> <%= (new String(" 今天 ")).length() %> out.println(" 大家好 "); </body> </html> 關鍵在第一行 有了這一行就行了 而如果使用 POST 時, 要使用中文就先看下面的例子 test2.jsp <html> <head> <title>instropection</title> </head> <meta http-equiv="content-type" content="text/html; charset=big5"> <body> <body bgcolor="#ffffff" text="#000000"> <form name="form1" action="test3.jsp" method="post" > <p> 姓名 : <input type="text" name="name"> </p> <p> 編號 : <input type="text" name="number"> </p> <p> <input type="submit" value=" 傳送 "> <input type="reset" value=" 清除 "> </p> </form> </body> </html> test3.jsp page language="java" contenttype="text/html;charset=big5" %> <html> <head> <title>instropection</title> </head> <body> <% 159

170 Chapter 14. 中文程式設計 String name = new String(request.getParameter("name").getBytes("ISO "), "Big5"); String number = request.getparameter("number"); %> 姓名 :<%= name %> <br> 編號 :<%= number %> </body> </html> 關鍵在於 String(str.getBytes("ISO "), "Big5"), java.lang.string 的建構函式可以產生指定特定語系的 String, 透過這個範例, 可以使 String 正確地轉換中文 For Hacker: 理論上這一行可以放在文件的任何地方, 但由於 Java 時做上開檔案後通常就必須指定 encoding, 當 java jsp engine 發現 charset 跟 default 不同時, 通常必須重新開檔案 所以實做上這一行放在越前面越好 不過話是這樣說, 由於通常 jsp 會在 run time 被 compile 成 java bytecode, 也就是說只有在.jsp 更新時才需要 recompile overhead 實在有限 註一 : 請到 下去 Download Java 連結到 MySql 如何使用用中中文? 鄭原真 Yuan-Chen Cheng Copyright 本文版權 : GPL or BSD style, 請保留作者姓名 本文假設您已經會使用 JSP 或是 Servlet 撰寫英文的 Web-Page 如果您還不會, 或是根本不知道 JSP 或是 Servlet 是幹什麼的, 那這篇文章不是寫給您看的 在 Java Servlet Spec v2.0 中, 對於多國語言的支援, 並不足 您必須找到 Java Servlet Spec v2.2 的實作才行, 筆者試過的是 Apache Jakarta Tomcat 3.1 軟體 ( 註一 ) 本文測試平台是 Debian Woody, Sun jdk1.2.2, Tomcat 3.1, mm.mysql Java 以 jdbc 連結到 databases server,mysql 有 Free 的 jdbc driver 以下不擬說明如何使用 jdbc, 僅說明如何修改您的 code 使可以用中文 mysql 儲存中文資料有兩種方法, 第一種是使用 big5 內碼儲存, 其優點是節省硬碟 / 記憶體空間, 相較於使用 UTF8 之下, 若輸出為 Big5, 更省去一次的 Unicode (UTF8) 與 Big5 需要經過 Table lookup 的轉換 但使用 Big5 就會有 Big5 先天上的問題 典型的問題是 Big5 字串在處理字的邊界的問題 Big5 先天上的問題是這樣的, 就以 " 問題 " 這個字串為例, 問字的第二個 byte 跟題字的第一個 byte 所形成的字是 " 暋 " 字 所以當我們在作文字搜尋找包含 " 暋 " 的字串, 我們會連包含 " 問題 " 的字串也一起找到 但 UTF8 內碼在設計上就避開了這個問題, 犧牲的是必須用較多的 byte (octets) 表示 我只有試過 MySql 內的 Data 用 UTF8,Big5 沒試過 要注意的是, 在 UTF8 中, 中文的長度是 3 個 bytes, 由於 MySQL 固定字串欄位送進過長的資料時, 會發生過長處被截斷 但 MySql 不懂 UTF8, 所以可能發生一個 UTF8 字元第二 or 三個 byte 被截掉問題, 在 ASCII 中問題不大, 頂多出現一個 "I Love Yo","u" 不見了 但在 java 把資料讀進來, 把 UTF8 轉成 java 內部的表示法時, 就會發生有些 Byte 無法轉成功的問題, 應該會造成 Exception ( 註二 ) 好, 回來, 在 jdbc 中, 並沒有規範在 Database 中的字元的內碼, 而把這個問題留給各個 jdbc driver 處理 mysql jdbc driver 要在 database 中設為 utf8 的設定方式如下 : 160

171 Chapter 14. 中文程式設計 Properties pr; Connection db; pr = new Properties(); pr.put("characterencoding", "UTF8"); pr.put("useunicode", "TRUE"); Class.forName("org.gjt.mm.mysql.Driver").newInstance(); db = DriverManager.getConnection("jdbc:mysql:///test", pr); 其餘請自行參考一般 jdbc 程式寫作的資料 當然, compile 此 Servlet 時需要在呼叫 javac 時加上 "-encoding Big5" 若要使用 Big5 的話, 上面 "UTF8" 改成 "Big5" 即可 但這樣作會出現另一個問題, 就是中文第二個 byte 有 \ 的問題 這個問題我不知道有沒有方便的解法, 不知道 compile mysql 時將 encoding 設為 big5 可否解決這個問題 ( 註二 ) 註二 : 這個我沒有測試過, 誰要測了跟大家說結果的? linux-gtk - gtk 的函式庫 rpm, 有 Big5/GB 的支援 以下是比 x11-toolkits/linux-gtk 更好的 I18N 的優點 Better word wrapping for CJK strings Specify default font s encoding explicitly Better XLFD handling Selection resync fixes Numerous gtkrc.$locale samples Other minor fixes linux-gtk 的安裝 : # cd /usr/ports/chinese/linux-gtk # make install 唯一的缺點是這個套件是 CLE 用來給 i386 平台所使用的, 所以如果是 alpha 的使用者的話仍需使用 x11-toolkits/linux-gtk php 的 ImageTTFText() 經常抓錯字? Contribute by jerry last update: 2003 年 4 月 29 日周二 19 時 43 分 15 秒 CST 在安裝 www/mod_php4 時必須選擇 GD library support 及 freetype 的套件才能進行下面的步驟 目前常見的有三種做法, 一種是 patch gdttf.c, 一種是使用 iconv support 來將編碼轉成 UCS-2, 還有一種就是直接使用 chinese/hc 的資料庫 這邊是第一種做法,patch gdttf.c 讓 PHP 不會抓錯字 --- gdttf.c.orig Mon Oct 16 21:55:

172 Chapter 14. 中文程式設計 +++ gdttf.c Sun Dec 31 18:00: ,7 +654,7 TT_BBox **bbox, char **next) { - int pc, ch, len; + int pc, ch, len, ch2; int row, col; int x2, y2; /* char start pos in pixels */ int x3, y3; /* current pixel pos */ -687,6 +687,8 (*next)++; if (ch >= 161 /* first code of JIS-8 pair */ && **next) { /* don t advance past \0 */ + ch2 = (**next) & 255; + if(ch2 >= 161) ch++; /* Big5 ttf patch */ ch = (ch * 256) + **next; (*next)++; } 由於已經處理過 gdttf.c, 在這邊就可以直接使用中文編碼的字 <?php Header ("Content-type: image/gif"); $im = imagecreate (400, 30); $black = ImageColorAllocate ($im, 0, 0, 0); $white = ImageColorAllocate ($im, 255, 255, 255);?> ImageTTFText ($im, 20, 0, 10, 20, $white, "/usr/x11r6/lib/x11/fonts/truetype/moe_kai.ttf", " 這是中文測試許功蓋 "); ImagePng ($im); ImageDestroy ($im); 第二種是使用 unicode 讓中文正常的顯示, 以下就是 big5 轉 unicode 的做法, 在這邊提供一個小函式來自動判斷為英文還是中文, 英文的部分不需要轉碼, 只有中文才需要 <?php /* need iconv module */ function big52uni($text) { } $rtext=""; $max=strlen($text); for($i=0;$i<$max;$i++){ } $h=ord($text[$i]); if($h>=160 && $i<$max-1){ $rtext.="&#".base_convert(bin2hex(iconv("big5","ucs-2", $i++; }else{ } substr($text,$i,2))),16,10).";"; $rtext.=$text[$i]; return $rtext; 162

173 Chapter 14. 中文程式設計?> 用法的範例如下, 在 ImageTTFText 必須指定系統上的字型, 以下是安裝 chinese/arphicttf 來使用文鼎 PL 上海宋, 所以必須根據自己的安裝的字型作修改, 然後搭配上面的 big52uni 這個函式 : <?php Header("Content-type: image/gif"); $im = imagecreate(400,30); $black = ImageColorAllocate($im, 0,0,0); $white = ImageColorAllocate($im, 255,255,255); ImageTTFText($im, 20, 0, 10, 20, $white, "/usr/local/share/fonts/truetype/bsmi00lp.ttf", big52uni("test 中文測試 ")); ImageGif($im); ImageDestroy($im);?> Figure php-imagettftext snapshot WWW: (http://www.php.net/) php 上傳中中文文檔名的檔案 by 另開一個 <input type="hidden" name="filename"> 在 submit 前, 把 file 裡的檔名取出來 ( 用 split( \\ ), 陣列最後一個 ) 放到 filename 去, 這樣就可知道原檔名是什麼, 而不用 file 裡面處理的檔名 這種作法可以使中文檔名 含空白 管道字元 反斜線, 通通可上傳 <?php if($_files[ userfile ][ name ]) { echo $_POST[ fname ]; } else {?> <script language="javascript"> function validate() { var Ary = document.uploadf.userfile.value.split( \\ ); document.uploadf.fname.value=ary[ary.length-1]; return true; } </script> <form enctype="multipart/form-data" action="index.php" method="post" name="uploadf" onsubmit="return validate()"> 163

174 Chapter 14. 中文程式設計 Send this file: <input type="hidden" name="fname"> <input name="userfile" type="file"> <input type="submit" value="send File"> </form> <?php }?> WWW: (http://www.php.net/manual/en/features.file-upload.php) 用 php 製作中中文文 PDF 檔 Contributed by Tim last update: 2003 年 4 月 20 日周日 15 時 59 分 41 秒 CST php 目前可以使用 PDFlib 來建立不內嵌字型的 PDF 檔, 在 pdf_findfont 的部分要給對字型就可以了 $font = pdf_findfont($pdf, MSung-Light, ETen-B5-H, 0); 以下是完整範例, 記得要先在該目錄底下建立 hello.pdf 並且將權限改成 666 <?php echo <meta http-equiv="content-type" content="text/html; charset=big5"> ; //create file $fp = fopen( hello.pdf, w ); if(!$fp) { echo "Error: could not create the PDF file"; exit; } // start the pdf document $pdf = pdf_open($fp); pdf_set_info($pdf, "Creator", "pdftest.php"); pdf_set_info($pdf, "Author", "Shen Chun-Hsing"); pdf_set_info($pdf, "Title", "Hello World (PHP)"); // US letter is 11" x 8.5" and there are approximately 72 points per inch pdf_begin_page($pdf, 8.5*72, 11*72/2); pdf_add_outline($pdf, Page 1 ); // 取得字型 $Efont = pdf_findfont($pdf, Times-Roman, host, 0); $Cfont = pdf_findfont($pdf, MSung-Light, ETen-B5-H, 0); // write text pdf_setfont($pdf, $Efont, 24); pdf_set_text_pos($pdf, 50, 700/2); pdf_show($pdf, Hello world! ); pdf_continue_text($pdf, (says PHP) ); pdf_setfont($pdf, $Cfont, 24); pdf_continue_text($pdf, 細明體中文字測試 ); 164

175 Chapter 14. 中文程式設計 // end the document pdf_end_page($pdf); pdf_close($pdf); fclose($fp); // display a link to download echo "<a href = hello.pdf target= _blank > 測試檔 PDF</a>"; echo "<hr>"; show_source( basename( getenv("script_filename") ) );?> 在 pdf_findfont 的部分選擇 ( MSung-Light, ETen-B5-H ) 這樣子的 CID-Keyed font 就可以使用明體了, 第一個欄位還可以換成 MHei-Medium 來使用楷體, 不過在目前的支援度下, 所能看到的不管設定明體或是楷體, 都只會有明體而以, 這必須是 PDF 瀏覽器支援設定的字體有其相對應的字體才行, 而第二個欄位 CMap 基本上建議使用 ETen-B5-H 才能使用倚天外字 可以用的英文字型如下 : Courier Courier-Bold Courier-Oblique Courier-BoldOblique Helvetica Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique Symbol Times-Roman Times-Bold Times-Italic Times-BoldItalic ZapfDingbats 可以用的中文 CMap 如下 : B5pc-H B5pc-V HKscs-B5-H HKscs-B5-V ETen-B5-H ETen-B5-V ETenms-B5-H ETenms-B5-V CNS-EUC-H CNS-EUC-V UniCNS-UCS2-H UniCNS-UCS2-V Figure php-pdf snapshot 而 pdf_add_bookmark 有人說有中文的問題, 可是在筆者的測試之下, Big5 編碼的 bookmark 在 Acroread 5 可以正常看到, 或是利用 iconv 轉成 UTF-16 也是正常的, 所以如果你看到的 bookmark 有中文問題, 可以利用 iconv("big5", "UTF-16", " 中文字 ") 來試試看 WWW: (http://www.pdflib.com/) Tcl/Tk - 廣為運用的一種高階電電腦腦語言與 GUI 發展工具 tcl 是一個高階的電腦語言, 語法類似 shell script 與 C 語言之間 而 tk 是一個使用者界面發展工具, 有 buttons menus listboxes scrollbars 等等 165

176 Chapter 14. 中文程式設計 把這兩者結合起來, 就形成了強有力的 GUI 發展套件 最新版本的 tcl/tk 支援了多平台的開發程式庫 所以我們可以寫一個 tcl/tk 的程式 ( 也稱為 script), 然後在 UNIX 下看起來就像是 Motif 的應用程式 ; 在 Windows9x/NT 下看起來像是 Win32 的應用程式 ; 而在 Macintosh 下看起來像 Mac 的應用程式 tcl/tk 的優點第一是 free( 自由 ) 第二是容易學習, 您不須具備 object-oriented 或 threads 或 Microsoft Fundation Classes 的基礎, 也不須寫一大串的程式碼 像是傳統的 Hello, World! 程式, 在 tcl/tk 只要兩行就搞定, button.b -text "Hello, World!" -command exit pack.b 第三是有許多的 extensions( 延伸套件 ) 可以支援其他軟體程式庫, 例如 Oracle, Sybase, Informix, OpenGL 等多達 400 種 Tcl/Tk 的安裝 : # cd /usr/ports/chinese/tcl83 # make install # cd /usr/ports/chinese/tk83 # make install chinese/tcl83 和 chinese/tk83 主要是補上一個 --enable-i18nimprove 的選項, 修正 XIM 處理有問題的部份 中文顯示都正常, 中文輸入也是正常的 #!/usr/local/bin/wish8.3 tk useinputmethods 1 font create bsmilpfont -family "ar pl mingti2l big5" -size 16 label.a -text " 標籤 " -font bsmilpfont pack.a button.b -text " 按鈕 " -command { puts stdout $cc; exit } -font bsmilpfont pack.b entry.c -textvariable cc -font bsmilpfont pack.c Figure tcltk snapshot WWW: (http://www.scriptics.com/software/tcltk/8.3.html) PostgreSQL 不能處理中中文文? PostgreSQL 中使用中文一向有小問題, 如 許 社 等等後面是 \ 的中文字都會出搥, 直到 6.5 版以後, 才加入了 multibyte 的支援 PostgreSQL 的語言支援分前 / 後端 (frontend/backend), 無論前端使用何種語言, 後端都會使用設定好的語言存入資料庫中 166

177 Chapter 14. 中文程式設計 這有什麼好處? 例如 : 後端設定成繁體中文, 前端設定成簡體中文, 然後, 存入的繁體中文, 顯示的是簡體中文, 當然, 它不會做中 英翻譯 要正確使用中文, 比較保險的作法是後端使用 euc_tw 編碼, 前端使用 big5 編碼, 例如 : % createdb --encoding euc_tw test 建 > 立後端為 euc_tw 編碼的 db % psql test 使用 psql 管理工具, 就像 mysql 般 test=# 已經進入 psql test=# \encoding big5 設定前端為 big5 編碼 test=# create table test ( test=# usrname char(20)); 建立 table test=# insert into test values( 許國榮 ); test=# select * from test; 您會看到正 > 確的答案 test=# \q 測試 也可以在 PostgreSQL 中下 PGCLIENTENCODING=BIG5 的指令, 如果是使用 PHP + PostgreSQL 則使用以下方式 : $conn = pg_connect("user=postgres dbname=stip"); pg_exec($conn, "set client_encoding to BIG5 "); WWW: (http://www.postgresql.org/) PostgreSQL + JDBC + Servlet + XMLC 中文完全解決方案 作者 自古以來 Servlet 連結 Database 在中文方面總是有許多問題, 尤其是在 web 端, 要考慮的因素更多了 有時候,form 的文字遇到 許, 功 等字, 要使用者自行輸入 \ 這個跳說字元 ; 有時候明明把 許, 功 insert 進資料庫, 但是取出來又會變成? ; 而中文的許多次常用字, 例如宏 ER 的 ER, 等怪怪的字元, 更是讓 programmer 頭髮白了一半 而 encoding 又是個最重要的關鍵, 常見的 encoding 有以下幾點 : code A +B +C +D +E +F F9D0 ER ER ER ER ER ER ER ER ER ER F9E0 ER ER ER ER ER ER ER ER ER ER ER ER ER ER ER ER F9F0 ER ER ER ER ER ER ER ER ER ER ER 作業系統 Locale 的 encoding 資料庫端的 encoding javac-encoding xxx ServletRequest.setContentType("texe/html; charset=xxx) web application deployment(web.xml) 所指定的 character-encoding="xxx" 167

178 Chapter 14. 中文程式設計 new String(String.getByte("xxx),"yyy) 如果使用 xmlc, 還有 xmlc 的 encoding 以及 org.enhydra.xml.io.outputoptions.setxmlencoding("xxx") 這幾種 encoding 萬馬奔騰, 常使 programmer 轉的暈頭轉向, 不知目前身在何處, 不知多少 programmer 在此浪費青春 中文解決方案以前在網路上有許多做法, 但是通常都不太完整, 要不然就得大刀闊斧更動到 JDBC driver, 或是重新 compile 整個資料庫系統 而為了系統的 完整性, 我並不考慮這些做法 我的作法可以完整保留 postgresql 的完整性 以 RPM 安裝, 不用重新 compile, 而且 JDBC driver 不用重新 compile 以下的步驟後半部主要是針對 XMLC 而言, 不過一般 純 的 servlet 程式, 應該很容易粹取出來 以下是我的一些環境 : RedHat Linux 7.0 (CLE 1.0), 其他的中文環境也應該沒問題 如果您是英文版的, 請安裝 Chinese locale patch 即可 重點是, 當您輸入 set 時, 可以看到 LANG=zh_TW 這個環境變數 Servlet Engine:Resin posrgresql pgdg.i386.rpm, 檔案大小 bytes, 直接以 rpm -Uvh 安裝即可, 不用重新 compile JDBC driver 也是直接使用 postgresql-jdbc pgdg.i386.rpm 所安裝的 jdbc jar 即可 資料庫請以 Unicode 編碼 createdb -E Unicode, 這點最為重要 Web application Deployment(web.xml) 中的 <web-app> 不要加上 character-encoding="xxx" 這個 attribute 在 servlet 中, 請設定 res.setcontenttype("text/html; charset=cp950"); form 的參數, 直接以 getparameter("xxx") 讀取, 再 insert 進資料庫, 不用作任何轉碼 要從資料庫中讀取資料, 得利用 : new String(rs.getString("ColName").getBytes("8859_1"),"CP950") 要輸出整份文件 implement org.enhydra.xml.xmlc.html.htmlobject 的文件 時, 不要用 out.println(doc.todocument()), 請改用如下的方法 : org.enhydra.xml.io.outputoptions options = new OutputOptions(); options.setomitencoding(false); options.setxmlencoding("big5"); DOMFormatter formatter = new DOMFormatter(options); if(ichingvotingspage.getdelefate()!= null) { out.println(formatter.tostring(ichingvotingspage.getdelegate())); ) else { out.println(formatter.tostring(ichingvoringpage)); } Servlet 檔案要以 javac -encoding CP950 來編譯 大功告成, 如此解決方案, 則可以完全正常處理所有罕見以及特殊字元, 不論是插入資料庫, 從資料庫取出來在網頁上, 都沒有問題 Java 中文程式設計 jdk13 的安裝 : 在安裝 jdk13 前, 必須到 (http://www.sun.com/software/java2/download.html) 抓取 j2sdk-1_3_1-src.tar.gz, 並到 168

179 Chapter 14. 中文程式設計 (http://www.eyesbeyond.com/freebsddom/java/jdk13.html) 抓取 bsd-jdk131-patches-7.tar.gz 而且, 如果沒有裝過 linux-jdk13 的話, 必須到 (http://java.sun.com/j2se/1.3/download-linux.html) 抓取 j2sdk-1_3_1_06-linux-i386.bin 放到 /usr/ports/distfiles 底下 # cd /usr/ports/java/jdk13 # make install 想知道您的 JDK 或 JRE 會用什麼樣的編碼方式來和作業系統溝通, 請執行下面的 Java 程式 : public class ShowNativeEncoding { } public static void main(string[] args) { } String enc = System.getProperty("file.encoding"); System.out.println("NativeEncoding:" + enc); System.out.println(" 成功 "); % javac ShowNativeEncoding.java % java ShowNativeEncoding NativeEncoding:Big5 成功 如果出現以上的訊息, 就表示中文正常, 如果沒有的話, 請確定您的 LC_CTYPE 是 zh_tw.big5, 或是用 javac -encoding CP950 ShowNativeEncoding.java 來進行編譯, 應該會出現如上的顯示才對 Note: Big5: 這是繁體中文 de facto 標準 MS950 或 Cp950:ASCII + Big5, 用於台灣和香港的繁體中文 MS Windows 作業系統 筆者的環境設定 ~/.cshrc # For JAVA jdk1.3.1 setenv JAVA_HOME /usr/local/jdk1.3.1 setenv CLASSPATH /usr/local/jdk1.3.1/lib/tools.jar:/usr/local/share/java/classes/:./ setenv PATH /usr/local/jdk1.3.1/bin:$path 如果要執行 applet 或是 swing 的話, 請按照以下步驟設定才能正確的看到中文字, font.properties.zh_tw 為 Forth 提供, 該設定檔專給 arphicttf 使用 : # cd /usr/local/jdk1.3.1/jre/lib/ # fetch 經筆者測試在 mozilla jdk1.3.1p6_4 之後已經不需要設定就可以正確的看到中文, 如果沒辦法就手動作如下步驟 : # cd /usr/x11r6/lib/mozilla/plugins/ # ln -s /usr/local/jdk1.3.1/jre/plugin/i386/ns600/libjavaplugin_oji.so libjavaplugin_oji.so 169

180 Chapter 14. 中文程式設計 Figure applet snapshot Figure swing snapshot 參考 : Java 繁體中文處理完全攻略 ( 一 ) (http://www.oreilly.com.tw/sleepless/java_big5_1.htm) 中文處理完全攻略 ( 二 ) (http://www.oreilly.com.tw/sleepless/java_big5_2.htm) WWW: (http://java.sun.com/) Java 繁體 Perl 中文程式設計 如何排除 Perl 程式處理中文資料的障礙? 在 CGI Perl 程式中, 有許多符號字元是有特殊用途的, 而不幸的有某些這樣的字元卻與中文字的第二個位元組互相衝突, 以至於會有中文字顯示或比對不正確, 甚至是產生錯誤結果的現象, 尤其是 及 \ 這兩個字元, 所幸我們還有個 quotemeta 指令可以使用, 這個指令可以將指定的字串中每個字元的前面都再多加上一個 \ 這個字元, 使得字串內的特殊字元在處理時被視為單純的字碼, 請參考下列的範例 : 170

181 Chapter 14. 中文程式設計 假設 $str 是一個要做搜尋比對的中文字串, 而 $line 是逐行讀入的資料檔內容 : $restr = quotemeta $str; if ($line!~ m/$restr/i) {... } 另外若不是以變數來處理的字串, 通常我們會使用雙引號來標示及處理, 然而這也是會發生上述的障礙, 但是當您直接對雙引號括住的字串使用 quotemeta 來處理時卻又會怪怪的, 那怎麼辦呢? 很間單! 將雙引號改為單引號就可以囉 <65374> 因為單引號不會對其內的字元作特殊處理, 換句話講在單引號之內的文字資料將會原原本本的呈現出來, 不會去解譯變數也不會處理 escape 字元, 例如原來的敘述是 : print " 測試成功的 $msg 訊息!\n"; 應改為 : print 測試成功的訊息! ; 請特別注意 \n 換行符號及 $msg 變數也需拿掉, 因為單引號並不處理 escape 字元及變數, 如果不將 \n 符號及 $msg 變數拿掉, 那麼顯示出來的字樣將會是 成功的 $msg 訊息!\n, 如果您仍希望顯示成原來包含變數及換行的效果, 那就必須將單引號與雙引號資料併用, 同時以. 符號來連結成完整的輸出敘述 : print 成功的.$msg. 訊息!."\n"; 上述結論就是當印出成功的與訊息! 字樣是使用單引號, 而換行的 \n 則是用雙引號 以下是一個將檔案中所有的中文字移除的程式範例 : #!/usr/bin/perl -w #./bg5rm.pl filename # and it s will generate a filename.bg5rm $ifname=$argv[0]; open(if,"$ifname"); open(of,">${ifname}.bg5rm"); $big5 = "[\xa1-\xf9][\x40-\x7e\xa1-\xfe]"; while(<if>) { s/$big5//g; print OF $_; print $_; } close(if); close(of); 以下是一個將文章中的中英文 word split 進 list: my $big5 = q{ [\xa1-\xf9][\x40-\x7e\xa1-\xfe] }; my $big5plus = q{ [\x81-\xfe][\x40-\x7e\x80-\xfe] }; 171

182 Chapter 14. 中文程式設計 = /$big5 $ascii+/gox; = /$big5plus $ascii+/gox; MPX 的解決 Perl 處理中文字的問題 (http://mpx.virtualave.net/perl/technique/chinese.htm) CJKV Information Processing 這本書有些不錯的 perl 程式範例 (ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/perl/), 其中 *.pdf 是一些討論 perl 下處理 multibyte 的 papers Erik Peterson 寫了一些有用的 Perl 程式 (http://www.mandarintools.com/), 可處理中文轉換 WWW: (http://www.perl.org/) MySQL Localisation and International Usage WWW: MySQL Localisation and International Usage (http://www.mysql.com/documentation/mysql/bychapter/index.html#localisation) 動態能從 my.cnf 調整的部份並沒有 big5.conf: % ls /usr/local/share/mysql/charsets Index danish.conf greek.conf koi8_ukr.conf usa7.conf README dec8.conf hebrew.conf latin1.conf win1250.conf cp1251.conf dos.conf hp8.conf latin2.conf win1251.conf cp1257.conf estonia.conf hungarian.conf latin5.conf win1251ukr.conf croat.conf german1.conf koi8_ru.conf swe7.conf 靜態要在 compile 階段完成的部份 : % ls mysql /strings/ctype*.c mysql /strings/ctype-big5.c mysql /strings/ctype-czech.c mysql /strings/ctype-euc_kr.c mysql /strings/ctype-gb2312.c mysql /strings/ctype-gbk.c mysql /strings/ctype-sjis.c mysql /strings/ctype-tis620.c mysql /strings/ctype-ujis.c mysql /strings/ctype.c 也就是說 multibyte support 必須要 compile 時就給他下好這個參數, 是否能直接設定 my.cnf 達到 --with-charset=big5 的效果還不確定 檢驗方式, 進入 mysql 後打 : mysql> mysql> show variables like character_sets ; show variables like character_set ; 那 character set 影響那些呢? 就我所知的有 ORDER BY 和 GROUP BY 的順序, 那特殊中文字 insert 進資料的問題還是在嗎? WWW: (http://www.mysql.com/) 在 LDAP 下使用用中中文 Contributed by duncanlo 172

183 Chapter 14. 中文程式設計 last update: 2003 年 4 月 24 日周四 05 時 13 分 04 秒 CST 如果是要將.ldif 轉入, 必須先將中文轉成 utf-8 安裝 converter/iconv, 假設要轉碼的檔案是 big5.ldif, 轉出來的檔案是 utf-8.ldif % iconv -f big5 -t utf-8 big5.ldif > utf-8.ldif 然後就可以用 ldapadd 來將 utf-8.ldif 轉入 ldap 了 Figure ldap snapshot WWW: Java LDAP Browser/Editor (http://www.iit.edu/~gawojar/ldap/) 173

184 Chapter 15. 中文多媒體軟體 mplayer last update: 2003 年 1 月 16 日周四 02 時 53 分 21 秒 CST 支援了眾多電影播放格式, 舉凡常見的 mpeg,dat 和微軟的 avi, 就連現在最新的 divx4 也直接支援 目前讓 mplayer 能夠顯示中文字幕的方式有三種, 一個是安裝由 mplayer 所提供的字型檔, 可以在 ftp://ftp.mplayerhq.hu/mplayer/contrib/fonts/chinesefonts (ftp://ftp.mplayerhq.hu/mplayer/contrib/fonts/chinesefonts) 找到, 另一個就是使用 ports 來將 TrueType 轉換成 mplayer 所需要的字型檔, 最後一個就是在編譯 mplayer 的時候, 指定 mplayer 使用 freetype, 讓他能直接使用 TrueType 字型, 但是一但指定了使用 freetype, 就不能選擇使用 mplayer 所要的字型檔 直接使用 mplayer 所提供的字型檔, 可以到上述的網址中找你要的語言, 以繁體楷書為例就是 big5-kai.tar.bz2, 下載後解開會出現 big5-kai 的目錄就以用了 用 chinese/mplayer 的安裝 : # cd /usr/ports/multimedia/mplayer # make install 如果要把介面換成中文, 必須修改 multimedia/mplayer 底下的 Makefile, 找 CONFIGURE_ARGS 的那行, 加上ㄧ行 --enable-i18n --language=zh CONFIGURE_ARGS= --with-extralibdir=${localbase}/lib \ --enable-i18n --language=zh \ --with-extraincdir=${localbase}/include \ --with-x11libdir=${x11base}/lib \ --with-x11incdir=${x11base}/include \ --enable-png \ --disable-libfame \ --disable-tv-v4l mplayer 有支援字幕的功能, 方法如下 # mplayer -dvd 1 -slang zh 遇到.srt 的字幕, 必須裝中文字型,mplayer 中文字幕字型的安裝 : # cd /usr/ports/chinese/mplayer-font # make install 安裝完後, 遇到繁體字幕就 : # mplayer -font /usr/local/share/mplayer/fonts/big5-ming/bsmi00lp16/font.desc -sub 1.srt -unicode 1.avi 這樣子就會使用宋體 16pt 來顯示中文字幕, 還有宋體 24pt 可用, 或是中楷 bkai00mp16 與 bkai00mp24 簡體字幕可以用 iconv 等軟體轉換.srt, 將簡體轉換成繁體, 或是使用 gbsn00lp16 等字型來觀賞 如果要全螢幕按 f 就可以囉 174

185 Chapter 15. 中文多媒體軟體 最近筆者才知道, 原來 mplayer 已經支援 freetype 了, 所以不需要安裝中文字幕囉, 只要在裝 mplayer 的時候告訴他我們要使用 freetype 即可, 應該可以省一點空間和安裝中文字型的問題 # cd /usr/ports/multimedia/mplayer # make WITH_FREETYPE=yes install clean # mplayer -subcp cp950 -font /usr/local/share/fonts/truetype/bsmi00lp.ttf -sub 1.srt 1.avi Figure mplayer snapshot WWW: (http://www.mplayerhq.hu/) xmms - mp3 播放軟體 mp3 播放軟體, 有 Winamp 的好看介面, 可以看到中文的選歌單, 介面也是中文的, 目前可以演奏 mpeg1 mpeg2 mpeg3 wav au 和 CD audio 也可以經由 xmms 的外掛來使用其他的格式, 例如 :xmms-mikmod xmms 的安裝 : # cd /usr/ports/chinese/xmms # make install 安裝完如果發現選項有問題, 檢察一下是否有設定 ~/.gtkrc, 如果沒有請參考 GNOME 程式的中文支援, 如果是 PlayList 中文有問題, 檢察一下 ~/.xmms/config 的 playlist_font 與 mainwin_font, 通常筆者都是如下的設定 : playlist_font=-adobe-helvetica-bold-r-*-*-10-*,-*-bold-r-*-big5-0 mainwin_font=-adobe-helvetica-medium-r-*-*-8-*,-*-medium-r-*-big

186 Chapter 15. 中文多媒體軟體 Note: 在 KDE 底下執行 XMMS 有時會出現無法開啟音效的錯誤, 進入 XMMS 的偏好設定, 將輸出的模組改為 arts 即可, 因為在 KDE 下管理聲音的伺服器是 arts Figure xmms snapshot WWW: 176

187 Chapter 16. 有用的中中文文軟體 以下介紹的都是在 ports/chinese 底下的套件, 安裝方式皆為 # cd /usr/ports/chinese/what-port # make install 字典軟體 dictd-database - dictd 的字典檔資料料庫庫 一套中文與英文的 dictd 字典檔資料庫, 所以必須搭配使用 而 chinese/dictd 則是修正特殊中文字的問題, 如果想要正常使用漢英字典 (Cedict), 那麼就必須安裝此修正過的 port 裡面目前包含四個字典檔,moecomp 和 netterm 都是英漢字典檔, 而 pydict 則是英漢 漢英字典檔, 目前只有做英漢的部分, cedict 則也是英漢 漢英字典檔, 不過目前只有做漢英的部分 在安裝完後, 必須先修改 /usr/local/etc/dictd.conf, 這個檔案是給 net/dictd-database 使用的, 如果不打算用英英字典, 那麼就全部換成以下的內容來符合 chinese/dictd-database 的要求 database moecomp database netterm database pydict database cedict { data "/usr/local/lib/dict/moecomp.dict.dz" index "/usr/local/lib/dict/moecomp.index" } { data "/usr/local/lib/dict/netterm.dict.dz" index "/usr/local/lib/dict/netterm.index" } { data "/usr/local/lib/dict/pydict.dict.dz" index "/usr/local/lib/dict/pydict.index" } { data "/usr/local/lib/dict/cedict.dict.dz" index "/usr/local/lib/dict/cedict.index" } 然後就可以啟動 /usr/local/etc/rc.d/dictd.sh start 接著在去 /usr/ports/textproc/dict 安裝 dict, 這是一個可以用來存取 DICT 伺服器的用戶端, 只能用命令列模式 用法範例如下 : % dict -h localhost -D Databases available: moecomp netterm pydict Taiwan MOE computer dictionary Network Terminology pydict data % dict -h localhost -d moecomp hello less 1 definition found From Taiwan MOE computer dictionary [moecomp]: hello 呼叫 % dict -h localhost 成功 1 definition found 177

188 Chapter 16. 有用的中文軟體 From Chinese to English dictionary [cedict]: 成功 [cheng2 gong1] success to succeed 在 /usr/ports/net/dictd-database 還有其他的字典檔資料庫, 可以參考看看是否需要 筆者通常都會安裝 /usr/ports/net/dictd-database, 然後將所有的資料庫都寫入 /usr/local/etc/dictd.conf, 然後用 dict -h localhost hello 來對所有的資料庫查詢, 在查單字的時候蠻方便的 Figure dict snapshot cedict: CEDICT: Chinese-English Dictionary (http://www.mandarintools.com/cedict.html) dict: (http://www.dict.org/) pydict - 英漢 漢英兩用字典 在眾多的 Unix-like 翻譯軟體中, 鮮少能找到對中文翻譯的程式, 而 pydict 就是這麼一個好用的工具! pydict 是用 python 加上 gtk 的界面工具集 (widgets) 寫成的英漢 漢英兩用字典 而且支援 XIM, 是目前中文最好用的字典 還有個智慧模式, 使用起來是不是跟一般的電子字典類似呢? 啟動說明 pydict [options] [word] 178

189 Chapter 16. 有用的中文軟體 options: -h -i -e [word] -c [word] 列出文字模式下的說明 console 互動模式英漢查詢 ( 可不加 -e) 漢英查詢 console 模式說明 : 在終端視窗中會有 word: 的提示符號, 使用者可以鍵入想查詢的單字 如果想轉成其他模式可以鍵入下列字串 : -c -e 轉換成漢英模式轉換成英漢模式 如果要離開 console 互動模式, 可以鍵入 -q 或是在 word: 後直接按 Enter 鍵就可以了 如果中文有問題的話, 表示 gtk 的中文字型沒設定好, 用 cp /usr/x11r6/lib/x11/pydict/gtkrc.zh_tw.big5.sample ~/.gtkrc 將 pydict 的範例拷貝過來使用就可以了 Figure pydict snapshot WWW: (http://sourceforge.net/projects/pydict/) WWW: (http://www.linux.org.tw/~plateau/linux_notes/) stardict - 中文與英文的翻譯字典 一個中文與英文的翻譯字典, 由 Motif 開發的, 在這個軟體中包含了星際譯王源程序 圖標和背景圖形文件, 漢字字體 音標字體, 詞庫 音標庫,Readme 開發計劃等文件 功能特性描述 : 近五萬單詞, 常用詞帶音標 具有模糊匹配功能 具有屏幕取詞功能 自帶漢字字體, 無需漢字環境 繁簡兩種字體 預設為簡體, 若要看到繁體介面, 則修改 /usr/x11r6/share/stardict/hzfont/fonts.dir 179

190 Chapter 16. 有用的中文軟體 --- fonts.dir.orig Sat Nov 3 01:17: fonts.dir Sat Nov 3 01:14: ,3 +1,3 2 -hz16.pcf +hz16ft.pcf yb10x20.pcf hz16 hz16 yb10x20 Figure stardict snapshot stardict2 星際譯王 2.0.0, 一個運行在 GNOME 環境下的國際化的詞典軟件, 有選中區取詞, 通配符匹配, 模糊查詢等強大功能 chinese/stardict2 的安裝 : # cd /usr/ports/chinese/stardict2 # make install clean Figure stardict2 snapshot 180

191 Chapter 16. 有用的中文軟體 WWW: (http://stardict.cosoft.org.cn/) oxford oxford is a English to Chinese dictionary, written in Perl. chinese/oxford 的安裝 : # cd /usr/ports/chinese/oxford # make install clean Figure oxford snapshot WWW: (http://igloo.its.unimelb.edu.au/blowfish/) edict-big5 - 日文漢字轉中中文文漢字後的漢英字典 EDICT 本來是日英字典, 不過我透過 lang/perl5.8 的 piconv 將 EUC-JP 轉成 Big5, 有許多字無法找到對應的 Big5 所以這個字典檔仍然有許多問題, 筆者也將格式轉成 dict 的格式, 因為偏好原因 選擇 piconv 的原因是目前他比 iconv 具備更多的轉碼對應, 這樣子才能讓能看到的 Big5 更多 edict-big5 的安裝 : # cd /usr/ports/outta-ports/edict-big5 # make install clean 181

192 Chapter 16. 有用的中文軟體 Figure edict-big5 snapshot WWW: (http://www.csse.monash.edu.au/~jwb/edict.html) FreeWnn 一個可輸入日文 / 中文 / 韓文的工具 ( 這 ER 只包含中文 ) 這是個較適合日本人來輸入中文的工具 :-) 和我們常用的輸法習慣有頗大的差距, 有興趣的人可試試 WWW: (http://www.freewnn.org/) acroread-chtfont - Acrobat Reader 的 PDF 閱讀軟體 包含亞洲字型的 Acrobat Reader 4.0 ( 繁體中文版 ), 用來觀看中文的 PDF 檔 要使用 Acrobat Reader 4.0 則要另外安裝 chinese/acroread-chtfont 使用前請先 env XMODIFIERS=acrobat 若是要使用 Acrobat Reader 5.0 則是安裝 chinese/acroread5-chtfont 182

193 Chapter 16. 有用的中文軟體 Figure acroread snapshot WWW: (http://www.adobe.com/prodindex/acrobat/readstep.html) cle_base - 利用 CLE 所提供的中中文文 L10N 來完成中中文文化 利用 CLE(Chinese Linux Extension) 所提供給 Linux 的中文 L10N 來完成中文化, 目前是以 RedHat 的發行版本為主 這個 port 只有選取 CLE 安裝時的基本套件 除了是一個 Linux 模擬器外, 也可以在上面執行 L10N Linux 軟體, 例如 Netscape 或是 Star Office 在安裝 Linux base 成功後, 還必須將 Linux kernel 模式開啟, 這樣才能讓 Linux 的執行檔運作 Linux 模式可以經由修改 rc.conf 來將 linux_enable 開啟, 請參考 rc.conf(5) 如果有使用 NIS, 別忘了要修改 /compat/linux/etc 中的 yp.conf WWW: (http://cle.linux.org.tw) cless - 一個較好用的分頁閱讀程式 一個較好用的分頁閱讀程式, 並且中文相容用和 more 或 pg 類似, 但功能更強大, 且中文相容 不過如果不需要介面中文化的話, 內建的 less -r 已經很夠了 WWW: 183

194 Chapter 16. 有用的中文軟體 Dia - 類似 Vision 的流程設計軟體 Dia 是一套建構在 GTK+ 上的流程設計軟體, 並使用 GPL 版權散佈 Dia 被設計成與商業版的視窗軟體 Visio 十分類似 它可以被用來繪不同種類的流程圖 在這個第一版中, 也支援了 UML 靜態結構流程圖和網路流程圖 它目前可以讀取和儲存流程圖到自定的檔案格式和匯出成 postscript WWW: (http://www.lysator.liu.se/~alla/dia/) Firebird - BBS 伺服器 Firebird BBS 是一個 BBS 伺服器, 有著 news 能力和許多其他功能 它包含了 mail/news/talk/irc 且只需要使用 telnet 它在繁體中文網際網路環境中廣泛的被使用, 它也有 GB 編碼的版本, 但是目前還沒辦法取得 WWW: (http://www.firebird.org.tw) fortunetw - 唐詩三百首與易經 在安裝完後, 只要使用 /usr/games/fortune ${PREFIX}/share/games/fortune/tangshi 或是 /usr/games/fortune ${PREFIX}/share/games/fortune/yijing 就可以有隨機的唐詩三百首或是易經 Figure fortunetw snapshot Gnumeric - GNOME 報表軟體 Gnumeric 是一個好用的報表軟體, 只要您會用 Excel 便會使用本軟體, 操作方式簡直跟 Excel 一模一樣 本軟體為了跟各個有名的報表軟體相容, 更提供了可以開啟 Excel Lotus Applix Sylk XBase 及 Oleo 等等的檔案 184

195 Chapter 16. 有用的中文軟體 WWW: (http://www.gnome.org/gnome-office/gnumeric.shtml) hanzim - 中文字學習軟體 設計用來幫助您記憶中文字, 使用該字的多種意思 會顯示該字相同的字根, 剩下的部份, 發音, 漢語拼音發音 Figure hanzim snapshot WWW: (http://zakros.ucsd.edu/~arobert/hanzim.html) libtabe - xcin 的中中文文處理函式庫 在電腦上處理中文, 跟原有的 C 函式庫一直很難順利的整合 以 Big5 碼來說, 一個字佔了兩個 byte, 不管是計算字串長度, 或者是要考慮中文字的字序, 甚至要處理詞或句子的時候, 都需要做特別的調整, 原有的 C 函式庫根本不敷使用 另一方面, 由於每個程式開發人員在處理中文的時候, 都有自己的方法, 所以不同程式之間很難分享函式庫, 更不用提重覆利用了 TaBE 計畫希望能夠提供一個更好的中文使用環境, 因此, 就很需要一個能處理中文字 詞 句的統一介面與函式庫, 來做為所有應用程式的基礎 libtabe, 就是希望成為這樣的一套函式庫, 提供統一的介面與足夠的功能, 讓應用程式有強大的基礎可以發揮 WWW: (http://xcin.linux.org.tw/libtabe/index.html) WWW: (http://gusp.dyndns.org/doc/libtabe-db/libtabe.html) 185

196 Chapter 16. 有用的中文軟體 lunar - 轉換陽曆和陰曆的對應日期 轉換陽曆和陰曆把陽曆的日期轉成對應的陰曆日期, 也可把陰曆日期轉成對應的陽曆日期, 此程式也印出 生肖和天甘地支, 適用於西元 1900 年至西元 2049 年 陽曆 是陰曆的 % lunar % lunar -i Lunar Version 2.1 (July 23, 1992) Solar : Lunar : Wednesday ShengXiao: Snake GanZhi: Xin1-Si4.Geng1-Yin2.Ding1-Hai4.Geng1-Zi3 (GanZhi Order) (JiaZi Cycle) BaZi (8-characters) according to Four Column Calculation : Geng1-Chen2.Ji3-Chou3.Ding1-Hai4.Geng1-Zi3 (GanZhi Order) (JiaZi Cycle) % lunar -5 -i Lunar Version 2.1 (July 23, 1992) 陽歷 : 2001 年 1 月 24 日 0 時星期三陰歷 : 2001 年 1 月 1 日子時生肖屬蛇干支 : 辛巳年庚寅月丁亥日庚子時用四柱神算推算之時辰八字 : 庚辰年己丑月丁亥日庚子時 linux_locale - linux 模擬器所需的中中文文 locale 資訊 這個 port 主要是讓要使用 linux emulator 的人, 也能有 locale data, 所以經常使用 linux-* 的人最好裝一下, 以剛才的經驗而言, 安裝了 www/linux-mozilla 後, 執行卻發生 locale 不支援的情況, 造成根本沒辦法讓 xcin2.5 切換輸入法, 並在 console 有警告訊息, 在安裝後就可以切換了, 不過中文還是沒辦法正確的輸入到 linux-mozilla 中 但是在 linux_base-7.1 之後就可以不需要 linux_locale 了, 因為這是給 linux_base-6.2 用的, 之後已經是內建的了 一點小經驗, 參考看看 :) mkisofs - 建立光碟影像檔 在 FreeBSD 底下燒錄光碟有兩個步驟 : 1. 將所需的資料 ( 檔案, 音樂或全部 ) 包裝成一些特別格式的檔案 2. 用 burncd 將這些檔案寫入光碟中 mkisofs 就是 1. 的工具, 也就是建立光碟影像檔 而在 ports/chinese 底下的 mkisofs 可以建立 Chinese Big5 檔名, 請使用 -J 的選項來使用它 186

197 Chapter 16. 有用的中文軟體 也可以參考這個網頁, (http://www.arekore.org/cdrecord/), 但是好像是寫給 Linux 用的 # mkisofs -a -f -l -r -J -o ~/test.iso ~/test/ # vnconfig vn0 test.iso # mount -t cd9660 /dev/vn0 /mnt/iso # ls /mnt/iso # umount /mnt/iso # vnconfig -u vn0 # burncd -e -v -s 6 -f /dev/acd1c data test.iso fixate 以上的範例是把 ~/test/ 目錄下的所有檔案, 建立成一個 test.iso, 可以先用 du -s -h ~/test/ 檢察是否會超過你的光碟容量, 然後用 vnconfig 來測試, 在測試前, 記得要先安裝 big5fs, 並按照 big5fs 的要求做好準備工作, 在搭配可以看到中文的 ls, 這樣子就可以在 FreeBSD 底下燒錄中文檔案了 目前 ports 中的 mkisofs 雖然支援 nls, 但是只有支援 one byte 的, 所以並不能作中文的轉換 作者不採納 multu-byte NLS 的原因如下 : Both solutions requiere the complete set of tables to be compiled into mkisofs. There was no concept of reading files instead. I believe that it is better to try to use libiconv instead. 以下是筆者的日誌, 大部分的人應該都不會感興趣的 這篇文章是我在看完 chinese/mkisofs 的 patch 寫下的日誌, mkisofs 目前是 cdrecord project 的一部份,cdrecord 目前在 sysutils/cdrtools 底下, 而 mkisofs 則是在 sysutils/mkisofs, 該 port 最主要的部份就是修正 mkisofs 的 joliet 對中文的支援問題, patch 分成兩個部份,convert_to_unicode 和 joliet_strlenm 在 convert_to_unicode 部分, 他會將所有的字作轉換, 轉換成 2bytes 的 Unicode 編碼, 以常見的英文來說 : ABC -> 0A0B0C 3bytes -> 6bytes 而中文的部份 : 0xA4E5( 文 ) -> big5_to_unicode -> 0x6587 2bytes 2bytes 其實可以直接用 iconv 作掉整個轉換的部份 而 joliet_strlen 的部分, 這邊是指定 joliet 所給予的 buffer size, 預設全都是英文, 所以原本 3bytes 的 ABC 會變成 6bytes 的 0A0B0C, 但是中文的部份要修正成 2bytes 的中文出來還是 2bytes 所以我也針對現在 mkisofs 的版本作了一個 patch, 有興趣的人可以裝 outta-port/mkisofs 或是 outta-port/cdrtools: WWW: (http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html) mule-freewnn MULE 是 MULtilingual Enhancement to GNU Emacs 的簡寫 簡單的說, 就是在 GNU Emacs 上加些東西, 讓它可以處理多國語言 ( 編碼系統 ) 它將多位元組 (multi bytes) 的編碼系統 (encoding system) 重新在內部又編一次碼, 因此, 一篇文章中可同時使用中文 (BIG5 跟 GB), 日文, 韓文, 英文, 泰文等等 187

198 在 Mule-2.3 使用中文 Chapter 16. 有用的中文軟體 如果您已安裝了字型, 您可以用 mule 來輸入與顯示中文 大部份的字型都是 16 或 24 點的, 所以用 : # mule -fn 8x16 & # mule -fn 12x24 & Note: 按 M-x load-library RETURN chinese RETURN Ctrl-] 用來切換輸入法 muni Muni finds the Unicode value of the 7773 Chinese characters listed in Matthews Chinese-English Dictionary. WWW: (http://www.whizkidtech.net/i18n/muni/) p5-date-chinese 能經由輸入西元年得到農曆年的程式 #!/usr/bin/perl use Date::Chinese; $year = yearofthe( 1999 ); print $year; # "Year of the hare" qkmj - 中國的國粹 : 麻將 您是否沒有機會和別人打麻將? 是否常為了打麻將輸錢而和朋友傷和氣? 麻將本是中國的國粹, 但常久以來一直為人所垢病的一點, 就是許多人將它拿來做為賭錢的工具 現在一個讓您了解自己麻將實力的機會來了 透過網路麻將, 您可以隨時和來自各地的好手較量, 根據自己的分數進而可知道自己的實力究竟如何 QKMJ 之中文名稱為網路休閒麻將, 這是一個 Clinet/Server 架構, 可以讓您在網路上和其它的使用者一起打麻將的程式 必須安裝 COMPAT22, 請透過 sysinstall 來安裝 且必須設定 TERM 為 vt100, 所以筆者通常都用 env TERM=vt100 qkmj 來啟動, 或是設定成 alias,alias qkmj env TERM=vt100 qkmj 使用時請打 qkmj <server_ip> <server_port>, 不加後面參數代表使用原來的設定 例如 :qkmj 就可連到目前 QKMJ 的主要 server 如果在打入 qkmj 時發現如下的訊息 : Couldn t open /usr/libexec/ld.so. 請用如下的指令來修正 ln -s /usr/local/libexec/ld.so /usr/libexec/ld.so 188

199 Chapter 16. 有用的中文軟體並請看一下 ftp://ftp.csie.nctu.edu.tw/pub/csie/qkmj/qkmj.faq (ftp://ftp.csie.nctu.edu.tw/pub/csie/qkmj/qkmj.faq) 有更多的說明和用法 Figure qkmj snapshot WWW: (http://www.csie.nctu.edu.tw/~sywu/) 189

200 Chapter 17. 發展中的中中文文軟體 Outta-port Yuan-Chen Cheng Date: 3 Jul :07:20 GMT 1. 什麼是 Outta-Port? Outta-Port 是 port 以外的 port. 也就是說, 當我們在寫 port 時, 我們認為該 port 還不是很穩定, 還不想將之 commit 進 FreeBSD 總部的程式中, 但是有希望一群人可以一起還維護這一組 port 時, 我們就將之 commit 進 outta-port. 2. 如何取得 Outta-Port? cvsup ;) 先假設您會用 cvsup 和 ports. 取得 outta-port.supfile (http://freebsd.sinica.edu.tw/conf/outta-port.supfile) 這個 supfile 將 outta-port 目錄放在 /usr/ports 下. 假設您安裝好了 cvsup, 請下指令 cvsup -g outta-port.supfile # cd /usr/ports # fetch # cvsup -g outta-port.supfile 或是直接編輯 outta-port.supfile, 內容如下 : *default host=freebsd.sinica.edu.tw *default base=/usr/ports *default prefix=/usr/ports *default release=cvs *default delete use-rel-suffix outta-port tag=. 3. 如何加入 Outta-Port maintainer? 把做好的 Port 寄份 到 最好是 shar 的格式 4. 如何知道最新消息寄份 到 內容為 subscribe freebsd-taiwan-cvslog 5. 現在 Outta-Port 中有甚麼? 有很多奇怪的東西, 不妨自己裝了看看 mkhybrid mkhybrid is a pre-mastering program to create iso9660 cd images with optional Rockridge, Joliet, or HFS support. It is based on mkisofs and generates a binary image which can be written onto a block device such as a CDR drive. 190

201 17.2. xfig Chapter 17. 發展中的中文軟體 Outta-port XFIG Facility for Interactive Generation of figures under X11 This port now accepts input from XIM server, such as XCIN. 在 /usr/x11r6/lib/x11/app-defaults/fig 設定 : Fig.international: true Fig*edit_panel*Text_text*international: true Fig*edit_panel*inputMethod: xim export LANG=zh_TW.Big5 再來執行 xfig 注意, 光 LC_CTYPE 設成 zh_tw.big5 是不行的 如果不能用, 表示你的 xfig 編譯時沒有加入 i18n 功能 或 XMODIFIERS 環境變數沒有設好 Note: Because XCIN needs Alt keys, Alt/Meta are disabled. Use Esc as compose key instead movabletype - blog It is a decentralized, web-based personal publishing system designed to ease maintenance of regularly updated news or journal sites, like weblogs. # cd /usr/ports/outta-port/movabltype # make install clean WWW: (http://www.movabletype.org/) WWW: blogging elixus - 正體中文 blog 資訊中心 (http://blog.elixus.org/) 191

202 Chapter 18. 其它軟體的中中文文相關問題 sendmail 因為 sendmail-8.8.x 預設會將所有 8-bit 的信件編碼後再送出, 這或多或少會對收信人造成一些影響 ( 參見 procmail 的解決方法 ) 現在大部份的主機都已能直接傳送 8-bit 的信件, 所以您最好重新編譯 sendmail, 將編碼功能關掉 在下面地點 ( 或映射站台 ) 取回最新版本的 sendmail: ftp://ftp.sendmail.org/ucb/src/sendmail/ (ftp://ftp.sendmail.org/ucb/src/sendmail/) 解開並更改 Makefile: # tar zxvf sendmail tar.gz # cd src/makefiles # chmod u+w Makefile.FreeBSD # vi Makefile.FreeBSD 在 CFLAGS+= 後加上 -DMIME8TO7=0 編譯並安裝 sendmail: # cd.. #./makesendmail all install 用手動方式安將 man pages 安裝到適當目錄 ( 不裝也沒關係 ) 砍掉舊的 sendmail 行程 : # kill -9 head -1 /var/run/sendmail.pid 重新啟動 sendmail: # /usr/sbin/sendmail -bd -q1h WWW: (http://www.sendmail.org/) procmail procmail 是一個電子郵件過濾器 (mail filter) 它可將到的信件在存入您的信箱前先做處理, 例如將信件分 類等 不過這裡要教您的是如何利用 procmail 來將被編碼的中文信件解碼成純文字, 以及在不同編碼的信件轉換為您常用的編碼 在您的 home 目錄下建立.procmailrc 檔案, 內容如下 : # 在用 procmail 處理前先將信件儲存下來, 以免發生意外 # 您可以設定那些信件不必備份, 例如由 MAILER-DAEMON 來的退信 :0 c *!^From.*MAILER-DAEMON mail/procmail-backup # 將以 quoted-printable 或 base64 編碼的信件解碼 192

203 Chapter 18. 其它軟體的中文相關問題 :0 * ^Content-Type: *text/plain { :0 fbw * ^Content-Transfer-Encoding: *quoted-printable mimencode -u -q :0 Afhw formail -I "Content-Transfer-Encoding: 8bit" \ -I "X-Mimed-Autoconverted: quoted-printable to 8bit by procmail" :0 fbw * ^Content-Transfer-Encoding: *base64 mimencode -u -b :0 Afhw formail -I "Content-Transfer-Encoding: 8bit" \ } -I "X-Mimed-Autoconverted: base64 to 8bit by procmail" # 這裡判斷信件是否為 GB 編碼, 若是則轉為 BIG5 編碼 # 如果您要由 BIG5 轉為 GB 碼, 要將例子中所有的 big5 # 及 gb2312 互換, 並將 hc -m b2g 改為 hc -m g2b :0 * ^Content-Type:.*text/plain;.*charset=gb2312 { :0 fw hc -m b2g -t /usr/local/lib/chinese/hc.tab :0 Afhw formail -I "Content-Type: text/plain; charset=big5" \ -I "X-Charset-Autoconverted: gb2312 to big5 by procmail" } # 將信件存回信箱 :0: ${ORGMAIL} 這個例子中, 配合了 mimencode,formail 將信件解碼, 並用 hc 將 GB 編碼的信件轉為 BIG5 編碼 所以您還必須安裝這些工具 最後再將更改您的.forward 檔就可以了 " IFS= && exec /usr/bin/procmail -f- ~/.procmailrc exit 75 name" 注意 : 其中最後的 name 要改為您自己的簽入名稱 (login name) WWW: (http://www.procmail.org/) 193

204 Chapter 18. 其它軟體的中文相關問題 vim - VI 的進進階階編輯輯器器 它包括了一些和 vi 很像但 celvis-1.3 所沒有的特色, 像是行號, 回繞行, 及大型檔最主要的是可以輸入中文 vim 的安裝 : # cd /usr/ports/editors/vim # make install 我知道有人很討厭 vim, 因為還要裝 X 其實只要用 make -DWITHOUT_X11 install 就可以了只安裝文字版的 vim 安裝 ports/editors/vim 後, 根據個人喜好設定.vimrc: set fileencoding=taiwan set guifontset=8x16,kc15f,-*-16-*-big5-0 並且設定 zh_tw.big5 的 locale, 這樣子就可以一次刪除一個中文字 以下是建議的設定 set cindent set enc=taiwan set fileencoding=taiwan set hls set nocompatible set sw=2 syntax on highlight Comment ctermfg=darkcyan highlight Search term=reverse ctermbg=4 ctermfg=7 在啟動的時候建議使用 env TERM=xterm-color vim, 這樣漂亮的顏色才會出來 :) 如果覺得字色太暗, 可以用 :set background=dark Figure vim snapshot WWW: (http://www.vim.org/) 194

205 18.4. mailman - How to Enable Chinese in Mailman2.1.1 last update: 2003 年 3 月 10 日周一 10 時 03 分 59 秒 CST Contribute by: "Y. Cheng" Chapter 18. 其它軟體的中文相關問題 今天終於有空來裝 mailman 啦 ^_^ 要 mailman 可已有繁體中文可以選, 需要以下額外動作 : 1. 安裝時加上參數 WITH_CHINESE=yes: # cd /usr/ports/mail/mailman # make WITH_CHINESE=yes install clean 2. 把 $(prefix)/mailman/defaults.py 裡面的 DEFAULT_SERVER_LANGUAGE = en 改為 DEFAULT_SERVER_LANGUAGE = big5 : --- Mailman/Defaults.py.in.orig Mon Mar 10 23:49: Mailman/Defaults.py.in -670,7 +670,7 Mon Mar 10 23:50: # The default language for this server. Whenever we can t figure out the list # context or user context, we ll fall back to using this language. See # LC_DESCRIPTIONS below for legal values. -DEFAULT_SERVER_LANGUAGE = en +DEFAULT_SERVER_LANGUAGE = big5 # When allowing only members to post to a mailing list, how is the sender of # the message determined? If this variable is set to 1, then first the 3. 把 $(prefix)/pythonlib/ /charset.py 裡面的 big5 : big5_tw, 改為 big5 : big5,, 否則 subscribe mail list 時就會出現 bug. --- pythonlib/ /charset.py.orig Sun Oct 13 12:00: pythonlib/ /charset.py Tue Mar 11 10:19: ,7 +70,7 iso-2022-jp : japanese.iso-2022-jp, shift_jis : gb2132 : - big5 : + big5 : utf-8 : japanese.shift_jis, eucgb2312_cn, big5_tw, big5, utf-8, # Hack: We don t want *any* conversion for stuff marked us-ascii, as all # sorts of garbage might be sent to us in the guise of 7-bit us-ascii. 初步測試這樣 ok, 會不會有進一步問題, 還需要多測試. ycheng 195

206 Chapter 19. FreeBSD 的中中文文化 如果您還知道有那些 FreeBSD 中文化的計畫, 請告訴我 Shen Chuan-Hsing FreeBSD 中文文件計畫 FreeBSD 中文文件計畫 (FDP) 目前正全力進行於 FreeBSD Handbook 文件的中文翻譯工作, 它的網址 是 (http://freebsd.sinica.edu.tw/~ncvs/zh-translation/) 目前在 CFDP 底下有三個文件,doc zh-l10n-tut zh-tut 和一個 outta-port cvsup 取得方式 : % fetch ftp://freebsd.sinica.edu.tw/pub/ycheng/cvsup/outta-port.supfile % fetch ftp://freebsd.sinica.edu.tw/pub/ycheng/cvsup/zh-doc-all.supfile % fetch ftp://freebsd.sinica.edu.tw/pub/ycheng/cvsup/zh-l10n-tut.supfile % fetch ftp://freebsd.sinica.edu.tw/pub/ycheng/cvsup/zh-tut.supfile % cvsup -g zh-tut.supfile cvs 取得方式 : 分別為 doc/zh zh-l10n-tut zh-tut outta-port % cvs -d login (Logging in to CVS password: anoncvs % cvs -d checkout zh-tut FreeBSD 中文化計劃 下列地點可找到 FreeBSD 中文資訊 如果您還知道有其它未列出的, 請告訴我 Shen Chuan-Hsing FreeBSD 中文安裝介面 (http://freebsd.sinica.edu.tw/~statue/boot/)(big5) FreeBSD HandBook 翻譯 (http://freebsd.sinica.edu.tw/zh-fdp/)(big5) FreeBSD Outta-port (http://freebsd.sinica.edu.tw/~statue/zh-tut/outta.html)(big5) FreeBSD FAQ 翻譯 (http://fatpipi.cirx.org/~vanilla/fcdp.html)(big5) ZopeBook (http://zope.slat.org/project/zopebook)(big5) CGDP 中文 GNU 文檔工程 (http://potian.163.net/)(gb) CMPP 中文 MAN-PAGE 計劃 (http://www.cmpp.net/)(gb) RFC 文檔中文翻譯計劃 (http://www.china-pub.com/computers/emook/emooknew/rfc/rfc.htm)(gb) PostgreSQL 中文信息 (http://www.pgsqldb.org/)(gb) Savannah: Project Info - Chinese Translators Team (http://savannah.gnu.org/projects/chinese/) 196

207 Chapter 19. FreeBSD 的中文化 FreeBSD 的中中文文站台 下列地點可找到 FreeBSD 中文資訊 如果您還知道有其它未列出的, 請告訴我 Shen Chuan-Hsing 推薦網站 傻瓜的 FreeBSD 教學網 (http://www.gocar.idv.tw) (Big5) 文獻處理實驗室 (http://www.sinica.edu.tw/~cdp/) (Big5) 中央研究院計算中心 (http://www.ascc.net/) (Big5) 香港 ISO (http://www.iso10646hk.net/) (Big5) 自由軟體桌面系統 -GNU/Linux (http:// /%7epg/book/paper.html) (Big5) 雄的家 (http://www.lsps.tp.edu.tw/~gsyan/freebsd2001/) (Big5) 苗栗縣大湖鄉大南國民小學 FreeBSD 全球資訊網路架站日誌 (http://freebsd.lab.mlc.edu.tw/)(big5) 中推會 (http://www.cmex.org.tw/)(big5) 朱邦復工作室 (http://www.cbflabs.com/)(big5) 無蝦米中文輸入法 (http://www.liu.com.tw/)(big5) 酷音中文輸入法 (http://chewing.good-man.org/)(big5) 我的倉頡 - 中文輸入法推廣組織 (http://www.geocities.com/baja/mesa/2118/)(big5) CFC 中文收藏家 (http://cnpa.yzu.edu.tw/~cfc/)(big5) Clem s XEmacs Page (http://freebsd.ntu.edu.tw/taiwan/clement)(big5) 龍門少尉的窩 (http://main.rtfiber.com.tw/~changyj/)(big5) 優客筆記簿 (http://turtle.ee.ncku.edu.tw/~tung/)(big5) 帆毅網路研究室 (http://mouse.oit.edu.tw/)(big5) OHaHa s 學習心得 (http://ohaha.ks.edu.tw/)(big5) 黑手工人 -- 築夢空間 (http://www.hello.com.tw/~wolfant/)(big5) 中央大學 - 單維彰老師 (http://www.math.ncu.edu.tw/~shann/chinese/welcome.html)(big5) Study Area (http://www.study-area.org/)(big5) 小馬的家 (http://mmlab.im.fju.edu.tw/~maa/)(big5) NetWain 工作室 (http://freebsd.netwain.com/)(big5) BROKEN 阿正的小窩 (http://www.homed.idv.tw/freebsd/freebsd.htm)(big5) 釋放 PC 的威力 (http://ccs.cc.nccu.edu.tw/marr/html/index.html)(big5) BROKEN PHP 架站日記 (http://php.lzp.ks.edu.tw/)(big5) BROKEN 中文電腦技術及輸入法 ( 檔案庫 ) (http://input.cpatch.org/)(big5) 197

208 Chapter 19. FreeBSD 的中文化 FreeBSD 資源 台灣大學 FreeBSD WWW Site (http://freebsd.ntu.edu.tw/bsd/)(big5) 交通資工 FreeBSD WWW Site (http://tw.freebsd.org/)(big5) BROKEN XCIN Project 總部 (http://xcin.linux.org.tw/)(big5) 台灣 linux/freebsd 硬體支援資料庫 (http://www.linux.org.tw/hardware/index.php3)(big5) FreeBSD/Unix/Java/Perl 的 Mailing List and News (http://turtle.ee.ncku.edu.tw/cgi-bin/boardlist.pl)(big5) 淡江資管 RFC 文件檢索站 (http://rfc.im.tku.edu.tw)(big5) CVS-Web for FreeBSD Source Tree. (http://bsd.sinica.edu.tw/cgi-bin/cvsweb.cgi/)(big5) BROKEN ASPAC 文件 (http://phi.sinica.edu.tw/aspac/)(big5) 其他發行版本 FreeBSD (http://www.freebsd.org/)(eng) OpenBSD (http://www.openbsd.org/)(eng) NetBSD (http://www.netbsd.org/)(eng) Debian 中文計劃 (http://www.debian.org/intl/zh)(big5) Linux Mandrake 中文之家 (http://mdk.linux.org.tw/)(big5) I18N 程式中文化計劃 (http://i18n.linux.org.tw/)(big5) 中文 GNU/Linux 延伸安裝套件 (http://cle.linux.org.tw/)(big5) KDE 台灣 (http://kde.linux.org.tw/)(big5) Mandrake Linux (http://www.linux-mandrake.com/zh/big5/)(big5) Cynix OpenLinux (http://www.cynix.com.tw/)(big5) BROKEN 翔威國際 LinuxCenter (http://www.linuxcenter.com.tw/)(big5) TurboLinux (http://www.turbolinux.com.cn/)(gb) Bluepoint Linux (http://www.bluepoint.com.cn/)(gb) COSIX Linux (http://www.cosix.com.cn/)(gb) Red-flag Linux (http://www.redflag-linux.com/)(gb) Tom Linux (http://www.linuxaid.com.cn/)(gb) 中文書籍 FreeBSD 應用軟體手冊 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) FreeBSD 網路架站實務 -- 附光碟 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) FreeBSD 抓得住 INTERNET: 伺服器架設與管理 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) FreeBSD 與 Windows 整合應用 (http://www.books.com.tw/exec/item/ )(big5) FreeBSD 網路應用 (http://www.books.com.tw/exec/item/ )(big5) 198

209 FreeBSD 3.X 抓得住 INTERNET 進階伺服器的架設與管理 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) Chapter 19. FreeBSD 的中文化 FreeBSD 與 Windows 整合應用 ( 第二版 ) (http://www.books.com.tw/exec/item/ )(big5) FreeBSD 安裝設定與使用 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) 使用 FreeBSD 及 Apache- 活用 PHP 與 MySQL 建構 Web 世界 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) 輕鬆使用 LINUX/FREEBSD 建置自已的網路王國 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) FreeBSD 系統建構指引 (http://www.books.com.tw/exep/prod/booksfile.php?item= )(big5) 組織網站 FreeBSD 之家 (http://freebsd.sinica.edu.tw/)(big5) 新聞網站 BSD Today (http://www.bsdtoday.com/) FreeBSD ports 專門介紹軟體及版本更新通知的網站 (http://freshports.org/)(eng) Daily Daemon News (http://www.daemonnews.org/)(eng) BSD 驅動程式資料庫 (http://www.posi.net/freebsd/drivers/)(eng) BSD 應用程式資料庫 (http://www.bsdapps.org/)(eng) 文件資源 UNIX 常見問答集 (http://www.csie.nctu.edu.tw/document/unixfaq/)(big5) FreeBSD 2.X 常見問答集 (http://freebsd.sinica.edu.tw/~ncvs/zh-big5-faq/faq.html)(big5) FreeBSD 使用者手冊 (FAQ) (http://freebsd.ntu.edu.tw/~phantom/cfreebsd/)(big5) FreeBSD 使用手冊 (http://tw.freebsd.org/handbook.big5/handbook.html)(big5) FreeBSD 使用手冊 (http://freebsd.sinica.edu.tw/~ncvs/zh-handbook/handbook.html)(big5) FreeBSD 3.3 使用手冊 (http://freebsd.sinica.edu.tw/~ncvs/zh-big5-handbook/index.html)(big5) FreeBSD 中文使用文件計畫 (http://freebsd.sinica.edu.tw/~ncvs/zh-l10n-tut/)(big5) BROKEN 台大 FreeBSD 中文 FAQ Web (woju) (http://freebsd.ntu.edu.tw/)(big5) BROKEN 交大資工 FreeBSD 版精華區 gopher (jdli) (gopher://freebsd.csie.nctu.edu.tw/)(big5) BROKEN MySQL 3.23.pre7 中文使用手冊 (http://cnpa.yzu.edu.tw/~cfc/docs/mysqldoc_big5/manual_toc.html)(big5) PostgreSQL 6.5 中文使用手冊 (http://cnpa.yzu.edu.tw/~cfc/docs/postgresql_big5/postgres.htm)(big5) PostgreSQL 7.0 中文使用手冊 (http://cnpa.yzu.edu.tw/~cfc/docs/pgsqldoc-7.0c/postgres.htm)(big5) PHP 聖經 (http://php.wilson.gs/bible/)(big5) NetBSD 1.41 版安裝手冊 (http://mouse.oit.edu.tw/netbsd/)(big5) OpenBSD 簡介與安裝 (http://digital.oit.edu.tw/openbsd/)(big5) Servlet + JSP + mysql jdbc + chinese (http://residence.educities.edu.tw/yjchen/freebsd/)(big5) 199

210 Chapter 19. FreeBSD 的中文化 Perl 常見問題與解答 (http://cnpa.yzu.edu.tw/~cfc/goods/perlfaq/perlfaq/)(big5) 中文 LyX 使用簡介 (http://mdk.linux.org.tw/lyx-doc/lyx-1.html)(big5) GNOME 1.0 使用者手冊 (http://www.linpus.com.tw/manual/gnome1.0/content.htm)(big5) KDE 使用者手冊 pre1.0 12/24/1998 (http://www.linpus.com.tw/manual/kdeug/userguide/)(big5) JavaTM 開發工具包文件 1.2 (http://cnpa.yzu.edu.tw/~cfc/docs/jdk1.2/zh/docs/)(big5) FreeBSD 使用大全 (http://tech.sina.com.cn/focus/freebsd/index.shtml)(gb) FreeBSD 管理介面使用手冊 (http://www.enctc.edu.tw/other/freebsd.htm)(big5) Python 教學文件 (http://coder.9ug.com/language/script/python.html)(big5) 經典文章 自由軟體基金會 (Free Software Foundation) (http://cnpa.yzu.edu.tw/~cfc/goods/other/fsf.html)(big5) 如何成為一位 Hacker (http://cnpa.yzu.edu.tw/~cfc/goods/other/howto-become-a-hacker.html)(big5) Hacker 文化簡史 (http://cnpa.yzu.edu.tw/~cfc/goods/other/brief-of-history-hackerdom.html)(big5) 開拓智域 (http://cnpa.yzu.edu.tw/~cfc/goods/homesteeding/)(big5) 教堂觀與市集觀 (http://cnpa.yzu.edu.tw/~cfc/goods/cathedral-bazaar/cathedral-bazaar.html)(big5) 下載站台 台灣公開列表 (ftp://freebsd.csie.nctu.edu.tw/pub/01tw_service.txt) FreeBSD 的中中文文討論區 如果您有問題, 可以在這些討論區發問, 用中文也通哦! 不過請確定您已經先看過了相關的文件或 HOWTO 否則重複問一些 FAQ 是很不受歡迎的! news://tw.bbs.comp.386bsd Openfind BBS 網路論壇,tw.bbs.comp.386bsd 看板 (http://bbs.openfind.com.tw/cgi-bin/x_list?board=tw.bbs.comp.386bsd) 中研院所架設的台灣 FreeBSD 通信論壇 (http://freebsd.sinica.edu.tw/mailman/listinfo) 中研院舊版本通信論壇, 舊信倉庫 (http://freebsd.sinica.edu.tw/~majordom/) 香港 bsd talk 通信論壇 : news://news.linux.org.hk/hklug.bsd.talk (news://news.linux.org.hk/hklug.bsd.talk) (http://www.shellhung.org/mailman/listinfo/) 200

211 19.5. FreeBSD 的中中文文 IRC 聊天室 Chapter 19. FreeBSD 的中文化 這是目前 BSD 使用者在網路上聚會聊天的地方, 通常都會有一群人在此發呆 哈拉 打屁 在 FreeBSD 底下通常都是使用 ports/chinese 底下的 bitchx 或是 ports/irc 底下的 xchat 當作 IRC 用戶端, 在 Windows 底下則是以 mirc (http://www.mirc.com/) 為主 bitchx 或 xchat 的使用方式 : 1. 啟動 irc client 2. 出現 prompt 後 3. /server irc.taiwan.com 4. /join #bsdchat mirc 的使用方式 : 1. File -> Options -> Connect -> Add 2. IRC Server: irc.taiwan.com 3. Connect to IRC Server 4. /join #bsdchat 近來因為主機與網路的關係,IRC Server 先換到 irc.seed.net.tw Note: mirc 小秘訣 : 如何用微軟新注音輸入法改字呢? 在要改的那個字上面按空白鍵, 然後選擇所要的字, 決定後再按空白鍵 mirc 中文化 : 您需要先安裝 mirc32 v.5.91 在您的電腦內, 然後才可執行這個 patch 檔來進行中文化的工作 使用方法 : 先去 捉取 mirc591t.exe 這個檔回來安裝 ( 記住, 這一版 patch 是給 mirc32 v5.91 使用的! 不要拿其他版來 patch!) 然後把 p exe 拷貝到您 mirc 安裝的目錄下, 執行 p exe 執行完畢後, 就會自動產生一個中文化過的 mirc 執行檔,CmIRC591.exe 您可以直接在 mirc 的目錄下執行這個檔 201

212 III. 附錄

213 Chapter 20. 常見問題解答 為何我無法輸入中中文文? 這個問題問得太籠統了! 您是在什麼情況下不能輸入中文的? 如果您是在 console 的 shell 下不能輸入中文, 請參考在 Shell 底下輸入中文一小節的說明 如果您是在編輯器中不能輸入, 可能您的編輯器無法支援中文 請參考有用的中文軟體一節安裝能支援中文的編輯器 如果您是 telnet 到別入的機器後不能輸入中文, 那麼問題很可能在 telnet 這支程式上 請參考 telnet 一小節的說明 如何在 Netscape 輸入中中文文? 安裝 xcin25 並設定好 XIM 即可 請參考 xcin25 一節的說明 不過如果 netscape 是以 package 安裝的, 可能沒辦法 ChiTeX 與 CJK 有何不同? 可否否同同時安裝? CJK 的中文字形讀取尋找系統架構在 LaTeX 的 NFSS 上, ChiTeX 的中文字形讀取尋找系統是獨立而效率高的系統 CJK 可使用中文, 日文, 韓文 ; 而 ChiTeX 只對中文正體字 (Big5) CJK 只能用在 LaTeX 上 ; 而 ChiTeX 可用在 plain TeX 與 LaTeX 上 ChiTeX 指令簡單但很有用 ChiTeX 是接近真正中文 LaTeX 的中文 LaTeX 功能的不同... ChiTeX 和 CJK 應該是可以同時安裝的, 但是 ChiTeX 與 CJK 所用的 ttf2pk 如果同名字, 可能有問題 解決的辦法是在各自起始的指令稿 (shell script) 中定義 $PATH 變數, 使其指向正確的 ttf2pk 位置 ( 感謝陳弘毅教授解答 ) rxvt 為何是日日文文的? 請參考 rxvt 203

214 Chapter 20. 常見問題解答 加快 X Win 的方法? 用 "startx - -deferglyphs 16" 進入 X 視窗系統試試看, 這裡 "-deferglyphs 16" 的參數會讓 X 延遲產生 16bit 字型的時間, 不在第一次載入字型的時候就全部一次產生, 而在真正使用到字型的時候才產生, 可以讓載入中文字型的時候不會 hang 住, 可以加快中文字顯示的速度 為何 Netscape 的圖示是黑白的? 當 bpp 設成 24 時, Netscape 的圖示就會變成黑白, 只要用 bpp 16 或是 bpp 32 就會變成彩色了 中文的 SSH client for windows? PuTTY 現在有中文相容的版本出來了, 推薦給大家, 很小的檔案, 只有 216 KB, 此版中文正常 PuTTY 中文相容作者 :mhsin 中文相容功能作者網頁 : (http://www.mhsin.org/putty/), 這裡提供一個下載點 (http://freebsd.sinica.edu.tw/~statue/putty.exe) 在 0.52 版的 putty 只需要調整一下設定就可以輸入中文了 Change Settings -> Window -> Appearance -> 的 Set the font used in the terminal window 點 Change 後將字型選擇細明體或是標楷體的中文字型, 並把字集選擇 CHINESE_BIG5, 這樣子就可以輸入中文囉 使用新版 PuTTY 時請記得把 Window-->Appearance 裡的 cursor appearance 改成 Underline, 避免預設的塊狀游標在重繪時會把游標所在的中文字切開 筆者通常還會把 Terminal 裡面的 Enable blinking text 來支援閃爍字, 以及把 Keyboard 裡面的 The Backspace key 改成 Control-H 來使 BackSpace 有效用 Putty WWW: (http://www.chiark.greenend.org.uk/~sgtatham/putty/) 要不然也可以到 (http://www.ssh.com/products/ssh/download.cfm) 抓取 SSHWinClient exe, 此版中文也正常, 功能也比 Putty 多很多, 不過檔案大了點, 約 6.37MB, 這裡提供一個下載點 (http://freebsd.sinica.edu.tw/~statue/sshwinclient exe) SSHWinClient WWW: (http://www.ssh.com/) Chinese Putty WWW: (http://mhsin.org/putty/) 在 FTP 中輸入中中文文? 在終端機底下請試試用 ncftp , 如果在 X 底下建議使用 ftp/iglooftp 畫面和使用方式保證愛不釋手 Oracle8i 沒辦法使用用中中文? 在.bash_profile 中設定 nls_lang 204

215 Chapter 20. 常見問題解答 export nls_lang="traditional chinese" WWW: (http://www.oracle.com.tw/) 安裝 Oracle9i 出現亂碼? by Oracle 9i 內的 JAVA 字型設定有點問題, 安裝環境都設為英文就可以安裝了 如果一定要看到中文, 就把下面這個檔案的內容改一改再裝 : Disk1/stage/Components/oracle.swd.jre/ /1/ \ DataFiles/Expanded/linux/lib/font.properties.zh_TW_Big5 或是 : Disk1/stage/Components/oracle.swd.jre/ /1/ \ DataFiles/Expanded/jre/linux/libfont.properties.zh 裡面的 或是 要根據你所安裝的 jsdk 內附的版本, 並且把 big5 那幾行改為 : -default-ming-medium-r-normal--*-%d-*-*-c-*-big5-0 就可以了 或是直該修改 $JAVA_HOME/jre/lib/font.properties 也可以, 感謝 jsona laio wu-ftp 無法上傳中中文文檔名的檔案? 為什麼匿名者無法上傳中文檔名的檔案, 但卻可上傳英文檔名的檔案? 我想是您在 ftpaccess 設定檔中設定了 patch-filter 了 只要把以下的設定註解起來, 應該就可以傳中文檔名的檔案了 # path-filter... path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9_\.]*$ ^\. ^- path-filter guest /etc/pathmsg ^[-A-Za-z0-9_\.]*$ ^\. ^ kdm 登入畫面是亂碼? /usr/local/share/config/kdmrc 檔案, 找到 font 相關設定, 數字設定第三個欄位的 0 改成 big5 即可 ex: FailFont=helvetica,12,5,big5,75,0 GreetFont=charter,24,5,big5,50,0 StdFont=helvetica,12,5,big5,50,0 順便看一下 [Locale] 區段, 要正常顯示中文, 要補上 : 205

216 Chapter 20. 常見問題解答 Country=tw Language=zh_TW.Big5 另外, 中文的環境設定要在 ~/.xsession 裡面設定, 而不是在 ~/.cshrc vi 輸入中中文文會顯示 /XX/XX? 這通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 中加上下面的 alias 即可 : alias vi env LC_CTYPE=en_US.ISO_ vi 或是直接改用 vim6, 會有更多的功能與支援 write 無法送中中文文訊息? 這通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 下面的 alias 即可 : 中加上 alias write env LC_CTYPE=en_US.ISO_ write talk 無法送中中文文訊息? 這通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 下面的 alias 即可 : 中加上 alias talk env LC_CTYPE=en_US.ISO_ talk wall 無法送中中文文訊息? 這通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 下面的 alias 即可 : 中加上 alias wall env LC_CTYPE=en_US.ISO_ wall finger 無法看到中中文文 project? 這通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 下面的 alias 即可 : 中加上 alias finger env LC_CTYPE=en_US.ISO_ finger 206

217 Chapter 20. 常見問題解答 mail 無法看到中中文文 project? 這通常都是設定了 LC_CTYPE 為 zh_tw.big5 或是沒設定 LC_CTYPE 才會發生的問題, 在 ~/.cshrc 中加上 下面的 alias 即可 : alias mail env LC_CTYPE=en_US.ISO_ mail xml 是否具有處理中中文文的能力? 請參考以下的網址 : WWW: Chinese XML Now (http://www.ascc.net/xml/zh/big5/) 如何刪除以以中中文命名的檔案? 當遇到不知名的亂碼命名檔案時, 可以用 rm -i * 來刪除檔案, 它會每一個檔案都詢問您是否要刪除 X-win32 如何安裝中中文文字型? 通常筆者都會使用 kcfonts, 因為跟預設的系統比較合 首先在 chinese/kcfonts 安裝好後, 將 /usr/x11r6/lib/x11/fonts/local/ 底下的檔案, 全都搬移到 C:\Program Files\StarNet\X-Win32 5.1\Lib\Fonts\ 底下, 然後用 Font -> Add... -> local\, 接著 Make FONTS.DIR, 並 Edit Alias File...: kc12x24 -kc-fixed-medium-r-normal c-120-iso kc15f -kc-fixed-medium-r-normal c-160-big5-0 kc24f -kc-fixed-medium-r-normal c-240-big5-0 kc8x15 -kc-fixed-medium-r-normal c-80-iso taipei16 -kc-fixed-medium-r-normal c-160-big5-0 taipei24 -kc-fixed-medium-r-normal c-240-big5-0 或是用 ports/x11-fonts/getbdf, > mingliu16.bdf 來產生 16pt 的字型, 然後依序產生所需要用的字型 getbdf -font "-dynalab-mingliu-medium-r-normal--16-*-*-*-c-*-big5-0" 在 Windows 底下也可以抓取 ttf2bdf.exe, 將 C:\Windows\Fonts\mingliu.ttc 轉成 bdf, 然後依照上面的方法也是可以使用的 網頁亂碼? 如果是網頁內容, 請在網頁的最前面加上 : <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5"> 207

218 Chapter 20. 常見問題解答 在網頁中設定後, 重讀應該就正常了, 如果還是不正常就檢察 httpd.conf 看是否有下面這行 : AddDefaultCharset ISO , 這行設定會讓瀏覽器不會根據網頁中的語言設定而判斷編碼方法, 只要把這行註解掉就可以了 如果是 URL 列中文變亂碼, 這是正常的, 您可以用 perl 來編碼 : $string =~ s/([^0-9a-za-z])/sprintf("%%%02x",ord($1))/ge; 或是用 perl 來解碼 : $string =~ s/%([0-9a-fa-f][0-9a-fa-f])/chr hex $1/ge; OpenOffice641 內開啟中中文文的 HTML 及純文字檔? by brianhsu ( 墳墓 ) 如果您要開純文字檔, 在開啟檔案的對話框中, FileType 記得選 :Text Encoded, 當選完您要開的檔案後, 會再出現一個對話框, 最重要的是 Fonts 那兒要選 :Chinese traditional ( Windows-950 ), 剩下的照您的要求選, 之後中文就出來囉 <65374> 還是看不到? 試試看改一下字形, 也許您選到了英文字型 如果是 HTML 呢? 更是簡單, 請在檔案一開頭加上 : <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=big5"> </HEAD> 再改一下字型, 就可以見到中文囉! Figure openoffice snapshot WWW: (http://www.openoffice.org/) 208

219 vnc 抓 XFree86 的中中文文問題? Chapter 20. 常見問題解答 by nestlin Q: 請教一下, 我在 w2k 中執行 vnc 去抓 bsd 的 xwin 版, 是可以抓進來, 但沒有中文, 但如果我的在 bsd 上頭使用 startx 跑 xwin 時中文確是正常的, 請問我要如何解決 vnc 中中文的問題 A: 以下是筆者的安裝過程 : # cd /usr/ports/net/vnc # make install clean 接著修改 /usr/x11r6/bin/vncserver: --- vncserver.orig Fri Jan 4 15:45: vncserver Fri Jan 4 16:07: ,6 +149,7 # Add font path and color database stuff here, e.g.: # +$cmd.= " -fp /usr/x11r6/lib/x11/fonts/misc/,/usr/x11r6/lib/x11/fonts/100dpi/,/usr/x11r6/lib/x11/fonts/local/"; # $cmd.= " -fp /usr/lib/x11/fonts/misc/,/usr/lib/x11/fonts/75dpi/"; # $cmd.= " -co /usr/lib/x11/rgb"; # 接著就可以啟動囉 # vncserver :1 ( 啟動 ) You will require a password to access your desktops. passwd Password: Verify: passwd xauth: creating new authority file /root/.xauthority New X desktop is statue2.elife.idv.tw:1 Creating default startup script /root/.vnc/xstartup Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/statue2.elife.idv.tw:1.log # vncpasswd ( 換密碼 ) Password: passwd Verify: passwd # ps -aux grep Xvnc ( 檢查狀態 ) root p1 I # vncserver -kill :1 ( 終止 ) 3:36 下午 0:42.89 Xvnc :1 -desktop vncviewer 則是以 statue2.elife.idv.tw:1 來連線 如果不想修改 vncserver 或是想以其他的 window Manager 來啟動, 那麼就要修改 ~/.vnc/xstartup: xset +fp /usr/x11r6/lib/x11/fonts/misc/ xset +fp /usr/x11r6/lib/x11/fonts/100dpi/ 209

220 Chapter 20. 常見問題解答 xset +fp /usr/x11r6/lib/x11/fonts/local/ xcin2.5 & icewm 由於 vnc 是由 XFree86-3 改的, 所以現在我還不知道該怎麼使用 TTF VNC 是一個很好用的 Remote Desktop Controller, 但其 X version 是改自 XFree , 所以沒有支援 TrueType 字型 TridiaVNC 是由 Tridia 公司發展, 延續 vnc 的開發, 為 vnc 加上許多功能, 如提供更多的壓縮方式, 及加入對 xtt 的 TrueType 字型支援 (XFree86-4 內含 xtt module, 故 TridiaVNC 可以直接使用 XFree86-4 的 TrueType 字型 ) tridiavnc 的安裝 : # cd /usr/ports/net/tridiavnc # make install 若系統中已經有 xtt 字型目錄, 請於 ~/.vnc/xstart 內加入 : xset +fp /usr/x11r6/lib/x11/fonts/truetype 若無, 請安裝 ports 裡的 TrueType 字型 VNC 裡面怎麼打中文? 只要 Ctrl+Space 不要被 Windows 吃了就好了, 或是改變 VNC 內的 xin2.5 切換中文的熱鍵也可以 Figure vnc snapshot RealVNC WWW: (http://www.realvnc.com) tridiavnc WWW: (http://www.tridiavnc.com) tightvnc WWW: (http://www.tightvnc.com) 210

221 Chapter 20. 常見問題解答 CCCII-FT 因為基於 CCCII 的繁體中文內碼一直未定出適當的標準, 故 changcs 參考了一些資料 (CCCII 手 冊 EUC-TW 內碼 ), 以下提出一個基於 CCCII 的繁體字專用中文內碼 ( 暫稱為 EUC-CCCII-FT) # cd /usr/ports/outta-port/cccii # make install clean Add the following lines into your ~/.Xdefaults: whterm*font: 12x24 whterm*kanjimode: euc whterm*cccii21font: cccii21font whterm*cccii22font: cccii22font whterm*cccii23font: cccii23font whterm*cccii24font: cccii24font whterm*cccii25font: cccii25font whterm*cccii26font: cccii26font # xset +fp /usr/x11r6/lib/x11/fonts/cccii/ # xlsfonts grep cccii # xrdb -load ~/.Xdefaults # whterm & # cat /usr/x11r6/share/cccii/test_file Figure cccii snapshot WWW: (http://santos.ee.ntu.edu.tw/~changcs/whterm/whterm.html) 211

222 如何更更改改 X 的預設中中文文字體? Chapter 20. 常見問題解答 在安裝完 X 後, 選單, 顯示都是文鼎中楷, 這對用慣了細明體的人, 有著莫大的不便, 但是把系統字型全 都換成 Ming 體後, 也就是文鼎宋體後, 英文字體的變化就會變少了, 所以應該有簡單的方式可以取代 後來看到 Edward G.J. Lee 的一篇文章, 才知道原來 X 預設抓字型的時候, 是以 fonts.dir 的內容來排序的, 由於文鼎的 foundry name 都是 Arphic, 所以就看下一個 family name, AR PL KaitiM Big5 比 AR PL Mingti2L Big5 還前面, 所以這就是為什麼, 一般都會抓到楷體的原因 所以就會去改變字型的 family name, 來治療這個問題 # cd /usr/x11r6/lib/x11/fonts/truetype # perl -pi -e s/kai/nai/g fonts.alias fonts.dir fonts.scale 但是這樣子的做法會讓 KaitiM 的字型在整合上會出現許多問題, 如果都不會使用到 KaitiM 的使用者才建議如此做 Gdk-WARNING **: BIG5-0 會出現這樣子的訊息通常都是沒設定好 ~/.gtkrc, 請參考 GNOME 程式的中文支援 unzip 解開中中文文檔名變亂碼? 在 Windows 中用 Winzip 壓縮中文檔名的檔案, 抓到 FreeBSD 底下 unzip 會變成亂碼, 請安裝 outta-port/unzip # cd /usr/ports/outta-port/unzip # make install clean 或是利用下面有個 leeym 的 patch: --- unzpriv.h.orig Thu Apr 10 02:13: unzpriv.h Thu Apr 10 02:24: , ,7 # endif # define _OEM_INTERN(str1) {register uch *p;\ - + # endif #endif for (p=(uch *)(str1); *p; p++)\ *p = native((*p & 0x80)? oem2iso[*p & 0x7f] : *p);} *p = native(/*(*p & 0x80)? oem2iso[*p & 0x7f] :*/ *p);} squid 瀏覽 ftp 與 gopher 中文亂碼? by KTH.bbs&alway.twbbs.org 212

223 Chapter 20. 常見問題解答 原本學校使用 Squid 2.1, 透過它瀏覽 ftp 站台與 gopher 站台訊息不會有亂碼出現, 後來多了一台 2.4STABLEX 以後, 發現都會有亂碼的產生, 稍微追蹤了一下程式, 原來問題出在 2.4x 以後會將 >=0x7f 與 <=0x1f 的字元編碼成 &#%3d 的格式, 因此在不影響穩定度的情況下, 就乾脆把這一段程式給註解掉了, 這樣就能解決中文亂碼問題了, 用瀏覽器瀏覽起來真的蠻舒服的 ^^ --- lib/html_quote.c.orig Wed Jun 5 16:02: lib/html_quote.c Wed Jun 5 16:03: , ,13 +#if 0 +#endif * sure all 8-bit characters are encoded to protect from buggy * clients */ if (!escape && (ch <= 0x1F ch >= 0x7f) && ch!= \n && ch!= \r && ch!= \t ) { } static char dec_encoded[7]; snprintf(dec_encoded, sizeof dec_encoded, "&#%3d;", (int) ch); escape = dec_encoded; if (escape) { /* Ok, An escaped form was found above. Use it */ strncpy(dst, escape, 6); Nautilus 中文字變成??? 首先要設定好 ~/.gtkrc, 這樣子介面的部份就會是中文的, 可是內容的部份還需要修正, 開啟軟體後 : 偏好設定 -> 編輯偏好設定 -> 外觀 -> [ 取消 ] 使用平滑的圖像 Figure nautilus snapshot 213

224 Chapter 20. 常見問題解答 Contribute by Q2: 要建立中文新檔或目錄時他用 utf8 來編碼, 與以前的 Big5 的檔案系統不和, 我該如何把他設成也是用 Big5 碼來建立新的檔案或資料夾? A2: glib 與 gtk2 以後, 對於檔案命名都是用 utf8 編碼, 所以用 Nautilus 新增中文檔名都是用 utf8 編碼 解決方式為在自己 home 底下編輯 ~/.gnomerc 加入 export G_BROKEN_FILENAMES=1 那他就用你預設的 locale LANG 與 LC_ALL 的變數作編碼囉 For more detail GTK+-2.2 Specific Notes (http://www.gtk.org/gtk notes.html) apache2 預設顯示示中中文網頁 apache2 的 httpd.conf 裡面有一行設定 : AddDefaultCharset ISO 這一行設定導致瀏覽器不會根據網頁裡面的語言設定而判斷編碼方法, 只要把這行註解掉就可以正常了 如果要預設為 Big5 編碼, 也可以改為 : AddDefaultCharset Big 網址址列列不能使用用中中文檔名? 網址列不能使用中文, 可能是 IE 的預設值造成的 按造下面的步驟修改看看 : 工具 (T) -> 網際網路選項 (O) -> 進階 裡面有個永遠將 URL 傳送成 UTF-8 ( 需要重新啟動 ) 的選項, 把勾取消後, 按確定並將 IE 關掉重開 wget 中文檔名變亂碼 中文檔名在平常的情況下會被編碼, 但是在 --cut-dirs 時又是正常的, 那就大家用 --cut-dirs, 或是使用 outta-port/wget 吧 wget -r -np -nh --cut-dirs=3 ftp://freebsd.sinica.edu.tw/pub/statue/test/ 測試.txt wget -r -np -nh -nd ftp://freebsd.sinica.edu.tw/pub/statue/test/ %B4%FA%B8%D5.txt wget "ftp://freebsd.sinica.edu.tw/pub/statue/test/*" %B4%FA%B8%D5.txt wget 的安裝 : # cd /usr/ports/outta-port/wget # make install clean 214

225 Chapter 20. 常見問題解答 由於不知名的原因, 可能是為了避開特殊檔名, wget 會自動將抓取檔名的部分用 encode_string 處理過, 所以該 patch 就把被 encode_string 處理成 "%3A" 這種東西, 用 decode_string 還原成 ":", 並套用在目錄與檔案名稱的部分,decode_string 是 wget 內建的函式 WWW: (http://sunsite.auc.dk/wget/) 如何造字? 造字的問題, 目前筆者會的只有造點陣字而已 首先, 找到你要改的字型檔, 在這邊假設是 kc15f.bdf, 我只會改 BDF 格式的, 然後把點陣的格式嵌入該字型檔內 以 文 為例, 先得到他的 ENCODING: # echo " 文 " hexdump e5a4 000a # printf %d 0xa4e 以及他的 ucs-2: # echo " 文 " iconv -f big5 -t ucs-2 hexdump a 我們在這邊以 ( 方方土 ) 為例, 他的 big5 code 是 0x964f(38479),ucs-2 code 是 0x5803 先找到 CHARS 13867, 因為我們要加新字, 所以改成 CHARS 然後到這個檔的最後, 找最後一個 STARTCHAR 加一, 在這邊是 STARTCHAR 為最後一個, 所以也加一, 然後將字塞最後, 並在 ENDFONT 之前 STARTCHAR ENCODING SWIDTH 31 0 DWIDTH 16 0 BBX BITMAP FEFE C A FF

226 Chapter 20. 常見問題解答 0104 FFFE ENDCHAR 然後跟著以下的方式作來讓 X 認識你所造的字 : # cd /usr/x11r6/lib/x11/fonts/encodings/large/ # cp big5.eten-0.enc.gz big5.eten-0.enc.gz.bak # gunzip big5.eten-0.enc.gz # chmod 644 big5.eten-0.enc # vim big5.eten-0.enc 0x964F 0x5803 # chmod 444 big5.eten-0.enc # gzip big5.eten-0.enc # cd /usr/x11r6/lib/x11/fonts/local # fetch kc15f.bdf # mkfontdir # crxvt -fm -kc-fixed-medium-r-normal c-160-big5-0 # perl -e print pack("cc", 0x96, 0x4F); 內建 ftpd 的中中文文問題 Contributed by: last update: 2003 年 4 月 1 日周二 12 時 57 分 00 秒 CST Q: 4.7 Release 內建 ftpd, 例如 程 逢 第二個 character 是 { 的中文字就下載不下來? A: 因為 FreeBSD 內建的 FTPD 會將 { 和 \ 的字去除, 如果你想要讓這些中文字可可以正常使用請修改 /usr/src/libexec/ftpd/ftpcmd.y 找到下列這一行 : GLOB_BRACE GLOB_NOCHECK GLOB_QUOTE GLOB_TILDE; 將它改成 : GLOB_NOCHECK GLOB_TILDE GLOB_NOESCAPE; 再重新 compile ftpd % man 3 glob GLOB_NOESCAPE By default, a backslash ( \ ) character is used to escape the following character in the pattern, avoiding any special interpretation of the character. If GLOB_NOESCAPE is set, backslash escaping is disabled. GLOB_BRACE Pre-process the pattern string to expand {pat,pat,...} strings like csh(1). The pattern {} is left unex- panded for historical reasons (and csh(1) does the same thing to ease typing of find(1) patterns). 我也弄成了 outta-port, 有興趣可以直接到 outta-port/ftpd 底下安裝 216

227 chm 怎麼在 Unix 底下觀看? Chapter 20. 常見問題解答 Contributed by: last update: 2003 年 4 月 16 日周三 16 時 35 分 53 秒 CST 目前都是將.chm 解壓縮成.html 後再, 再用瀏覽器去看 現有的.chm 方案有兩個, 一個是 misc/chmlib 以及 chmtools, 不過兩套都沒有解壓縮的工具, 或是不適合中文的處理, 因此 mison 利用 chmtools 寫了一個 chm2html 的工具, 如果有興趣的人可以試試看 outta-port/chm2html 的安裝 : # cd /usr/ports/outta-port/chm2html # make install clean 在這邊以一個 braille.chm 為例子, 用 chm2html 來解壓縮, 並解壓縮到 braille 的目錄下 : chm2html < braille.chm braille/ 在 braille 的目錄下會產生一個 braille.hhc 的目錄檔, 接著再用 hhc2html.pl 將索引檔轉出來 : hhc2html.pl braille/braille.hhc > braille/braille.html 也可以用 hhc2bookmark.pl 將目錄檔轉成 mozilla 的 bookmark 來用 : hhc2bookmark.pl --lo=on --root= pwd /brailee brailee/braille.hhc > bookmark.html 中文檔名的部分, 只是把 chm 裡的 unicode 轉成 big5, 這樣只是讓解出來的中文檔名可以讓人看得懂,hyper link 還是會有問題 參數 --lo=on 是指定把大寫檔名改為小寫, 這是因為 chm2thml 是根據 chm 檔頭解出檔案, 而 hhc 目錄 chm 檔頭裡的檔名, 兩者可能不一致 所以在第一步 chm 解開後 自行判斷要不要加 --lo=on bookmark 只是一個暫時的解決方案, 可以用 hhc2bookmark.pl 轉出來的檔案替換原來 ~/.mozilla 裡的 bookmark, 這樣可以模擬 MircoSoft IE 的 text/sitemap; 其實有更好的方法, mozilla 有提供 sidebar 和 IE sitemap 類似, 或是在 mozilla 讀取到特殊的副檔名或是 MIME Type 時去自動呼叫 chm2html 並作成網頁來讀去 hyper link 檔名不一致的問題可能千奇百怪, 轉目錄的程式是用 perl 寫的, 若有需要, 請自行修改 perl 程式裡的 regular expressions 在將 hhc2html.pl 產生的目錄加到 sidebar 中, 我測試的結果, 使用如下的方式可以加入 sitebar: javascript:window.sidebar.addpanel( title, ); 但是把 換成 file:// 就沒辦法加進去, 所以還是直接執行 chm.sh braille.chm 囉 在特殊檔名或是 MIME Type 的處理得感謝 bv1al 提供的靈感, 使用 mozilla 也可以用類似方法開啟 mozilla pull-down toolbar: Edit->Preferences->Navigator->HelperApplications->NewType: Description of type: MicroSoft HTML Help File extension: chm MIME Type: chemical/x-chemdraw application/mshelp Application to use: chm.sh 不過以上的方法在筆者測試下, 並沒有作用, 如果有人成功請告訴我一下 217

228 Chapter 20. 常見問題解答 MicroSoft 有個程式可以 HTML 轉 CHM, 也可以轉回來, 應該是這個 HTMLHELP.EXE (http://download.microsoft.com/download/officexpprof/install/ /W98NT42KMe/EN-US/HTMLHELP.EXE), 在 MicroSoft 下處理 HTML 與 CHM 互轉時蠻好用的 WWW: (http:// /~jedwin/projects/chmlib/) WWW: (http://www.speakeasy.org/~russotto/chm/) konsole 字距過大 Settings -> Font -> Custom -> Terminal 12 Settings -> Size -> 80x24 (VT100) Figure konsole snapshot Cyrus-IMAP 將 8-bit 文字轉換為 X 的問題 Contribute by 小郭 last update: Sat May 17 12:09: 以 mail/cyrus-imapd 架設郵件伺服器, 有些信件的主旨全部變成了 XXXXXX? 這是 RFC 2047 的標準不相容 8Bit 主旨的郵件 目前能用的辦法是將標題編碼, 這是比較標準的做法, 或是修改 source code 兩個檔案 imap/lmtpengine.c 以及 imap/message.c 讓收信的 IMAPD 支援 8Bit 主旨 --- imap/lmtpengine.c.orig Sat May 17 14:45: imap/lmtpengine.c Sat May 17 14:48: ,6 +739,7 state s = NAME_START; 218

Java Desktop System 呂衄盋 2 呂衄说柔

Java Desktop System 呂衄盋 2 呂衄说柔 Java Desktop System 2 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7767 10 2004 10 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Sun Sun

More information

第 3 章 数 据 在 计 算 机 中 的 表 示 43 在 进 位 计 数 制 中 有 数 码 数 位 ( 位 置 ) 基 数 和 位 权 等 用 语 数 码 是 在 一 个 计 数 制 中 用 来 表 示 数 值 的 符 号 ; 数 位 是 指 数 码 在 一 个 数 中 所 处 的 位 置 ;

第 3 章 数 据 在 计 算 机 中 的 表 示 43 在 进 位 计 数 制 中 有 数 码 数 位 ( 位 置 ) 基 数 和 位 权 等 用 语 数 码 是 在 一 个 计 数 制 中 用 来 表 示 数 值 的 符 号 ; 数 位 是 指 数 码 在 一 个 数 中 所 处 的 位 置 ; 第 3 章 数 据 在 计 算 机 中 的 表 示 3.1 数 据 与 数 制 计 算 机 中 使 用 的 数 据 一 般 可 以 分 为 两 大 类 : 数 值 数 据 和 字 符 数 据 数 值 数 据 常 用 于 表 示 数 的 大 小 与 正 负 ; 字 符 数 据 则 用 于 表 示 非 数 值 的 信 息, 例 如 : 英 文 汉 字 图 形 和 语 音 等 数 据 数 据 在 计 算

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

ebook35-2

ebook35-2 2 2.1 Linux login Login: < > Password: < > Linux r o o t l o g o u t 2.2 Linux X Window Linux Linux Bourne ( b s h ) C ( c s h ) Korn ( k s h ) Bourne Steven Bourne UNIX Bourne bash Bourne C Bill Joy Bourne

More information

自然辩证法索引

自然辩证法索引 自 然 与 科 学 技 术 哲 学 名 词 索 引 上 海 交 通 大 学 可 信 任 数 字 技 术 实 验 室 制 Copyright 2009 Trust Digital Technology Laboratory, Shanghai Jiao Tong University. Permission is hereby granted, free of charge, to any person

More information

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su Linux Java Desktop System 3 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 819 1515 10 2005 8 2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Sun

More information

本文由筱驀釹贡献

本文由筱驀釹贡献 本 文 由 筱 驀 釹 贡 献 ppt 文 档 可 能 在 WAP 端 浏 览 体 验 不 佳 建 议 您 优 先 选 择 TXT, 或 下 载 源 文 件 到 本 机 查 看 Linux 操 作 系 统 Linux 操 作 系 统 第 一 部 分 介 绍 与 安 装 Linux 的 由 来 : Linux 的 由 来 : 的 由 来 Linus Torvalds 1.Linux 的 版 本 1.Linux

More information

Applied Biosystems StepOne™ Real-Time PCR System Quick Reference Card for Installation

Applied Biosystems StepOne™ Real-Time PCR System Quick Reference Card for Installation Applied Biosystems StepOne Real-Time PCR System StepOne 系统安装 快速参考卡 本文档提供在并置布局中安装 StepOne 系统的简明指导 有关 完整步骤或独立安装步骤 请参阅 Applied Biosystems StepOne Real-Time PCR System 安装 联网和维护指南 目录 1. 安装准备........................................

More information

目 录 Linux Mint 简介... 3 Linux Mint 安装... 6 Linux Mint 桌面初识... 18 软件管理...30 小技巧...40 总结...42

目 录 Linux Mint 简介... 3 Linux Mint 安装... 6 Linux Mint 桌面初识... 18 软件管理...30 小技巧...40 总结...42 官方用户手册 Linux Mint 9 Isadora 主版本 翻译 jluliuchao 皮蛋侠 第 1 页/共 42 页 目 录 Linux Mint 简介... 3 Linux Mint 安装... 6 Linux Mint 桌面初识... 18 软件管理...30 小技巧...40 总结...42 Linux Mint 简介 Linux Mint 是一种计算机操作系统 它被设计运行于现今大部分硬件系统

More information

2

2 2 3 1 2 3 9 bk 8 7 4 5 6 bn bm bl 1 2 3 4 5 6 7 8 9 p bk bl bm bn bo bo bp bq bq bp 1 2 8 . 1 2 3 4 5 6 bs 7 br 8 bq 9 bp bk bo bn bm bl 1 2 3 4 5 6 7 8 9 cm cl ck bt bk bl bm bn bo bp bq br bs bt

More information

Copyright 2003 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A.. Sun ( ) Sun Berkeley BSD UNIX / X/Open Company, Ltd. Sun Sun

Copyright 2003 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A.. Sun ( ) Sun Berkeley BSD UNIX / X/Open Company, Ltd. Sun Sun Java Desktop System 2003 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 4573 10 2003 12 Copyright 2003 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A..

More information

APA Preliminaries Text Reference 1. Cover Page 2. Title Page 3. Signature Page 4. Advisor s recommendation letter 5. Approval page 6. Copyri

APA Preliminaries Text Reference 1. Cover Page 2. Title Page 3. Signature Page 4. Advisor s recommendation letter 5. Approval page 6. Copyri 1 研究報告與論文的寫作格式 CHAPTER 1-1 1-2 專 題 研究報告, 乃至論文寫作都 有一定的標準與規範, 而寫作的 工具, 除了堪稱石器時代所用的筆與紙 外, 打字機及電動打字機仍是至今尚未完 消失的機具, 然而, 步入雲端世紀之後, 電腦文書處理的軟體早已是不可或缺的必備利器 這裡首推大家耳熟能詳的 Microsoft Word 1-2 1-2-2 APA Preliminaries

More information

Microsoft Word - Atmel-45136A-Pick-Best-Microcontroller-Strom-Eiland-Flodell_Article_CS

Microsoft Word - Atmel-45136A-Pick-Best-Microcontroller-Strom-Eiland-Flodell_Article_CS 如 何 为 您 的 下 一 款 设 计 选 出 最 好 的 8 位 或 32 位 微 控 制 器 作 者 : Atmel 产 品 营 销 高 级 总 监 Oyvind Strom Atmel 产 品 营 销 总 监 Andreas Eieland Atmel 研 发 工 具 部 门 高 级 产 品 营 销 经 理 Henrik Flodell 不 久 之 前, 嵌 入 式 系 统 还 是 既 昂 贵

More information

Chn 116 Neh.d.01.nis

Chn 116 Neh.d.01.nis 31 尼 希 米 书 尼 希 米 的 祷 告 以 下 是 哈 迦 利 亚 的 儿 子 尼 希 米 所 1 说 的 话 亚 达 薛 西 王 朝 二 十 年 基 斯 流 月 *, 我 住 在 京 城 书 珊 城 里 2 我 的 兄 弟 哈 拿 尼 和 其 他 一 些 人 从 犹 大 来 到 书 珊 城 我 向 他 们 打 听 那 些 劫 后 幸 存 的 犹 太 人 家 族 和 耶 路 撒 冷 的 情 形

More information

发行说明, 7.0.1 版

发行说明, 7.0.1 版 发 行 说 明 Websense Web Security Websense Web Filter 7.0.1 版 本 版 本 的 新 特 点 Websense Web Security 和 Websense Web Filter 的 7.0.1 版 本 均 已 本 地 化 为 以 下 语 言 : 法 语 德 语 意 大 利 语 日 语 葡 萄 牙 语 简 体 中 文 西 班 牙 语 繁 体 中 文

More information

SiteView技术白皮书

SiteView技术白皮书 SiteView ECC V6.2 技 术 白 皮 书 游 龙 网 络 科 技 ( 中 国 ) 有 限 公 司 DragonFlow Networks(China),Inc. 目 录 第 一 章 产 品 概 述... 3 第 二 章 系 统 结 构... 6 一 系 统 架 构... 7 1 用 户 管 理 模 块... 7 2 Web Server... 8 3 存 储 加 密 模 块... 8

More information

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su Java Desktop System Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 819 0675 10 2005 2 2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Sun Sun Berkeley

More information

投影片 1

投影片 1 FreeBSD A 95/10/11 19:00~21:00 95/10/11 FreeBSD 練 1 Services Setup SSH, lighttpd, PHP, MySQL, FTP, Postfix, phpmyadmin, Blog, Gallery 95/10/11 FreeBSD 練 2 1. 2. # FreeBSD # 3. vi ee joe nano etc 95/10/11

More information

1 快 速 安 装 及 主 要 功 能 特 点 1.1 连 接 主 机 手 柄 手 柄 绳 1.2 连 线 安 装 : 1 电 话 外 线 插 入 RJ11 单 线 转 换 盒 (LINE) 端 口 2 将 电 源 适 配 器 插 入 RJ11 单 线 转 换 盒 DC 插 孔 3 直 线 插 入

1 快 速 安 装 及 主 要 功 能 特 点 1.1 连 接 主 机 手 柄 手 柄 绳 1.2 连 线 安 装 : 1 电 话 外 线 插 入 RJ11 单 线 转 换 盒 (LINE) 端 口 2 将 电 源 适 配 器 插 入 RJ11 单 线 转 换 盒 DC 插 孔 3 直 线 插 入 HCD9888(40)TSD(L) 系 列 数 字 录 音 电 话 机 使 用 制 造 : 山 东 比 特 电 子 工 业 有 限 公 司 地 址 : 山 东 省 日 照 市 日 照 北 路 1 号 总 机 :0633-2212188 售 后 :0633-2212135 说 明 书 传 真 :0633-2212132 邮 编 :276800 网 址 :www.bittelphone.com E-mail:

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Linux 操 作 系 统 基 础 介 绍 课 程 目 标 及 要 求 了 解 Linux 操 作 系 统 的 登 入 方 式 掌 握 常 用 命 令 的 基 本 用 法 能 够 熟 练 在 各 个 目 录 转 换 Outline 1. Linux 操 作 系 统 简 介 2. Linux 操 作 系 统 的 登 录 3. Linux 操 作 系 统 的 目 录 结 构 4. 常 用 命 令 5.

More information

iGENUS爱琴思邮件系统技术白皮书

iGENUS爱琴思邮件系统技术白皮书 igenus 爱 琴 思 邮 件 系 统 技 术 白 皮 书 Http://www.iGENUS.cn 版 权 信 息 igenus 爱 琴 思 邮 件 系 统 版 权 所 有 2009 爱 琴 思 科 技 ( 成 都 ) 有 限 公 司 igenus information technologies Inc.,Chengdu 文 档 保 证 声 明 本 文 档 以 提 供 信 息 为 目 的, 所

More information

ebook62-1

ebook62-1 1 Red Hat Linux R e d Hat Linux L i n u x X Wi n d o w Red Hat L i n u x 1.1 Red Hat Linux Red Hat 16 M 120 M 3. 5 Intel 386 C D - R O M C D - R O M We b / 1.1.1 L i n u x L i n u 4 Primary Partition Extended

More information

2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener

2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener SGML HTML XML 1 SGML XML Extensible Markup Language XML SGML Standard Generalized Markup Language, ISO 8879, SGML HTML ( Hypertext Markup Language HTML) (Markup Language) (Tag) < > Markup (ISO) 1986 SGML

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

lect03.ppt

lect03.ppt Linux 操 作 系 统 Linux 基 础 主 要 内 容 q 使 用 Linux q Linux 的 两 种 登 录 方 式 q 字 符 操 作 环 境 和 X Windows 系 统 q Linux 图 形 界 面 基 本 操 作 q Linux 命 令 的 使 用 方 式 q Linux 一 些 常 用 命 令 1 2 一 些 基 本 术 语 u 命 令 (Command) 给 计 算 机

More information

Microsoft Word - linux命令及建议.doc

Microsoft Word - linux命令及建议.doc Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换

More information

final

final 行 政 院 研 究 發 展 考 核 委 員 會 政 府 網 站 建 置 及 營 運 作 業 參 考 指 引 中 華 民 國 99 年 2 月 政 府 網 站 建 置 及 營 運 作 業 參 考 指 引 目 次 前 言 與 導 讀... 1 一. 緣 由... 1 二. 現 行 規 範 應 用 的 運 作 與 問 題... 1 三. 政 府 網 站 建 置 與 營 運 作 業 參 考 指 引 之 規

More information

1. ( B ) IT (A) (B) (C) (D) 2. ( A ) (A) (B) (C) (D) 3. ( B ) (A) GPS (B) GIS (C) ETC (D) CAI 4. ( D ) (A) (B) (C) (D) 5. ( B ) (Stored Program) (A) H

1. ( B ) IT (A) (B) (C) (D) 2. ( A ) (A) (B) (C) (D) 3. ( B ) (A) GPS (B) GIS (C) ETC (D) CAI 4. ( D ) (A) (B) (C) (D) 5. ( B ) (Stored Program) (A) H ... 2... 4... 6... 8... 10... 12... 14... 16... 18... 20... 22... 24... 25... 26... 28 1. ( B ) IT (A) (B) (C) (D) 2. ( A ) (A) (B) (C) (D) 3. ( B ) (A) GPS (B) GIS (C) ETC (D) CAI 4. ( D ) (A) (B) (C)

More information

CU0594.pdf

CU0594.pdf 8 SOHO 1 3 003 SOHO SOHO Coder Programmer HTML CSS PHP JavaScrip 009 LECTURE 1-1 1 048 PART 2 LECTURE 1-1 1 049 SOHO Landing Page Landing 050 PART 2 LECTURE 1-1 1 SEO SEO P.093 SEO SEO SEO SEO SEO 051

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

<4D6963726F736F667420576F7264202D20383439342D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>

<4D6963726F736F667420576F7264202D20383439342D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63> 第 4 单 元 搭 建 自 己 的 Web 站 点 本 单 元 通 过 学 习 架 构 Web 服 务 器, 实 现 Web 服 务, 管 理 Web 站 点, 了 解 Web 站 点 服 务 器 的 架 构 个 人 空 间 和 虚 拟 主 机 的 概 念, 掌 握 IIS 组 件 的 安 装 Web 站 点 的 创 建 管 理 站 点 属 性 选 项 卡 的 配 置 管 理 等 知 识,Web 网

More information

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源 1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源 B. 啟 用 智 慧 型 裝 置 的 無 線 Wi-Fi C. 選 擇 無 線 網 路 名 稱 "edimax.setup"

More information

QVM330 多阜寬頻路由器

QVM330 多阜寬頻路由器 侠 诺 神 捕 QnoSniff 专 业 版 2.0 简 体 中 文 使 用 手 册 目 录 一 简 介... 4 二 QnoSniff 专 业 版 系 统 安 装 与 配 置... 5 2.1 开 始 之 前 的 准 备... 5 2.2 QnoSniff 专 业 版 安 装 过 程 中 所 需 组 件... 5 2.3 布 署 连 接 范 例 拓 朴... 6 2.4 开 始 安 装... 6

More information

Microsoft Word - 全華Ch4Ans.doc

Microsoft Word - 全華Ch4Ans.doc 得 分 : 101 學 年 度 第 2 學 期 全 華 Ch4 命 題 教 師 : 範 圍 : 年 班 號 姓 名 一 單 選 題 : (3) 1. 下 列 有 關 開 放 格 式 檔 案 的 檔 案 性 質 對 應, 何 者 有 誤? (1)gif: 圖 形 檔 (2)avi: 視 訊 檔 (3)odt: 簡 報 檔 (4)xlsx: 電 子 試 算 表 檔 ( 出 處 :4-3) 解 析 odt

More information

Microsoft Word - 100118002.htm

Microsoft Word - 100118002.htm 100 年 度 11800 電 腦 軟 體 應 用 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 選 擇 題 : 1. (3)

More information

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4 JAVA Extension 0..\Example\Ch0\ \ T.html..\Example\Ch0\ \ T.txt T.txt..\Example\Ch0\ \ T_Ok.html 提示 :. Marquee Marquee Font Color #FFFFFF BG Color #867bf Width 90 Height 50. T.txt Ctrl+C your scrolling

More information

QVM330 多阜寬頻路由器

QVM330 多阜寬頻路由器 俠 諾 神 捕 QnoSniff 專 業 版 2.0 繁 體 中 文 使 用 手 冊 目 錄 一 簡 介... 4 二 QnoSniff 專 業 版 系 統 安 裝 與 配 置... 6 2.1 開 始 之 前 的 準 備... 6 2.2 QnoSniff 專 業 版 安 裝 過 程 中 所 需 元 件... 6 2.3 佈 署 連 接 範 例 拓 樸... 7 2.4 開 始 安 裝... 7

More information

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089 Photoshop CC Camera Raw Photoshop Camera Raw Step 1 3 1 2 3 SCOTT KELBY Step 2 B Camera Raw 088 Chapter 3 Camera Raw Chapter 3 Camera Raw Step 3-4 -100 negative clarity +25 ] P / -75-50 Step 4 0 ( 下一頁

More information

目 录 1 正 文 乊 前... 5 1.1 目 癿... 5 1.2 本 文 内 容... 5 1.3 声 明... 5 2 字 符 编 码 相 兰 癿 背 景 知 识... 6 2.1 拉 丁 字 母... 6 2.2 什 么 是 字 符 编 码... 6 3 字 符 编 码 标 准... 8

目 录 1 正 文 乊 前... 5 1.1 目 癿... 5 1.2 本 文 内 容... 5 1.3 声 明... 5 2 字 符 编 码 相 兰 癿 背 景 知 识... 6 2.1 拉 丁 字 母... 6 2.2 什 么 是 字 符 编 码... 6 3 字 符 编 码 标 准... 8 关 键 字 字 符 编 码 详 解 版 本 : 1.0 作 者 : crifan 邮 箱 : green-waste (at)163.com 字 符 编 码,ASCII,ISO 8859,ISO 10646,UCS,Unicode,UTF-8 版 本 版 本 日 期 内 容 更 新 1.0 2011-11-02 添 加 了 编 码 相 兰 背 景 知 识 仃 绉 添 加 了 ASCII 和 EASCII

More information

2015 大學校院招收大陸地區學生聯合招生委員會 71005 臺南市永康區南臺街 1 號 E-mail:rusen@mail.stust.edu.tw WEB:http://rusen.stust.edu.tw TEL:+886-6-2435163 FAX:+886-6-2435165 2 0 1 5 年 0 5 月 2 0 日 2015... 2... 3... 4... 6... 6... 7....

More information

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO Car DVD New GUI IR Flow User Manual V0.1 Jan 25, 2008 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com Important Notice SUNPLUS

More information

Microsoft Word - 文前页.doc

Microsoft Word - 文前页.doc IV 目 录 高 等 学 校 信 息 管 理 与 信 息 系 统 专 业 系 列 教 材 信 息 存 储 与 检 索 张 帆 等 编 著 高 等 教 育 出 版 社 HIGHER EDUCATION PRESS 目 录 III 内 容 简 介 本 书 是 高 等 学 校 信 息 管 理 与 信 息 系 统 专 业 的 系 列 教 材 之 一, 系 统 介 绍 了 现 代 信 息 资 源 存 储 与

More information

穨學前教育課程指引.PDF

穨學前教育課程指引.PDF i 1 1.1 1 1.2 1 4 2.1 4 2.2 5 2.3 7 2.4 9 2.5 11 2.6 1 2 1 5 3.1 1 5 3.2 1 5 19 4.1 19 4.2 19 4.3 2 1 4.4 29 4.5 38 4.6 4 3 4.7 47 50 5.1 5 0 5.2 5 0 5.3 6 2 5.4 9 4 5.5 1 2 6 ( ) 1 2 7 ( ) 1 31 ( ) 1

More information

ebook70-5

ebook70-5 5 / 5.1 L i n u x L i n u x X L i n u x 5.1.1 touch t o u c h t o u c h G N U t o u c h # touch newfile # ls -l newfile - r w - r - - r - - 1 bball users 0 Jan 5 12 : 40 n e w f i l e t o u c h 0 # > newfile2

More information

2 3 13 17 22 26 1 2 8 100738 +86 (10) 8508 5000 +86 (10) 8518 5111 www.kpmg.com.cn 2006 4 2002 2006 1 28% 2006 17 8 500 2006 2006 2006 7 2.5 2 1 500 500 40% 500 10 16 14 12 10 8 6 4 2 2002-2006 5.1 5.9

More information

ebook 185-6

ebook 185-6 6 Red Hat Linux DB2 Universal Database 6.1 D B 2 Red Hat D B 2 Control Center D B 2 D B 2 D B 2 6.1 DB2 Universal Database [DB2]6.1 D B 2 O LT P O L A P D B 2 I B M P C We e k D B 2 D B 2 L i n u x Windows

More information

WF-8093

WF-8093 喷 墨 打 印 机 用 户 指 南 请 妥 善 保 管 此 说 明 书 ( 保 留 备 用 ) 安 装 使 用 产 品 前 请 阅 读 使 用 说 明 本 产 品 资 料 中 使 用 的 示 意 图 仅 供 参 考, 本 产 品 实 际 可 能 与 之 存 在 差 异, 以 包 装 箱 内 产 品 实 际 为 准 本 产 品 使 用 说 明 和 包 装 箱 上 的 数 据 来 源 于 爱 普 生 实

More information

Microsoft Word - Xinhua Far East_Methodology_gb_2003.doc

Microsoft Word - Xinhua Far East_Methodology_gb_2003.doc 新 华 远 东 中 国 资 信 评 级 新 华 财 经 有 限 公 司 上 海 远 东 资 信 评 估 有 限 公 司 新 华 远 东 中 国 资 信 评 级 2003 年 电 子 邮 箱 评 级 总 监 联 系 电 话 rating@xfn.com 钟 汶 权 CFA 852-3102 3612 8621-5306-1122 目 的 新 华 财 经 有 限 公 司 与 上 海 远 东 资 信 评

More information

第一篇文概說第七章公文的用語及標點符號公本篇內容 第一章 緒論 第二章 公文的意義 第三章 公文與高 普 特各類考試 第四章 公文程式之意義及演變 第五章 公文之分類及其行文系統 第六章 公文之結構與行款 第一篇 第一章緒論 003 第一章緒論 等 等 004 最新應用公文 第一篇 第二章公文的意義 005 第二章公文的意義 第一節 一 須為公務員製作之文書 二 須為公務員 職務上 製作之文書 006

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

Sun Fire V440 Server Administration Guide - zh_TW

Sun Fire V440 Server Administration Guide - zh_TW Sun Fire V440 Server 管 理 指 南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 文 件 號 碼 :817-2818-10 2003 年 7 月, 修 訂 版 A 將 您 對 此 文 件 的 意 見 傳 送 到 :http://www.sun.com/hwdocs/feedback

More information

108. 选 择 主 题 更 改 外 观 34 109. 更 改 屏 幕 分 辨 率 显 示 更 多 信 息 35 110. 鼠 标 移 动 速 度 自 己 选 35 111. 左 撇 子 用 鼠 标 35 112. 鼠 标 指 针 换 个 花 样 35 113. 程 序 可 附 在 开 始 菜 单

108. 选 择 主 题 更 改 外 观 34 109. 更 改 屏 幕 分 辨 率 显 示 更 多 信 息 35 110. 鼠 标 移 动 速 度 自 己 选 35 111. 左 撇 子 用 鼠 标 35 112. 鼠 标 指 针 换 个 花 样 35 113. 程 序 可 附 在 开 始 菜 单 目 录 CONTENTS 操 作 系 统 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Windows Vista 21 1.Windows Vista 的 版 本 21 2.Vista 对 电 脑 的 要 求 21 3.Vista 是 否 适 合 你 的 电 脑 21 4. 完 美 运 行 Vista 对 CPU 的 要 求 21 5. 满

More information

x 前言 Python Python ETL extract transform load Python Python / Python Python Python

x 前言 Python Python ETL extract transform load Python Python / Python Python Python 1 Python CSV Excel Python Python tab https:// github.com/cbrownley/foundations-for-analytics-with-python x 前言 Python Python ETL extract transform load Python Python / Python Python Python 前言 xi CSV Excel

More information

Sun StorEdge 3000 系列安装、操作和维护手册 (3310)

Sun StorEdge 3000 系列安装、操作和维护手册 (3310) Sun StorEdge 3000 系 列 安 装 操 作 和 维 护 手 册 Sun StorEdge 3310 SCSI 阵 列 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 部 件 号 816-7960-11 2003 年 6 月, 修 订 版 A 有 关 本 文 档 的

More information

User’s Manual

User’s Manual V7 用 户 手 册 亿 图 为 您 专 业 图 表 设 计 提 供 最 佳 解 决 方 案 2004-2014 EdrawSoft. All right reserved. Edraw and Edraw logo are registered trademarks of EdrawSoft. 目 录 亿 图 怎 样 优 越 于 其 他 软 件... 5 亿 图 7 个 新 功 能... 6 为

More information

Cygwin & vim

Cygwin & vim Cygwin & vim Yu Hsiang Zheng (Slighten) Outline Shell Cygwin vim 1/21 What is a computer 2/21 What is a computer 拿 地 球 來 做 比 喻 的 話 kernel: 地 心 shell: 地 殼 application: 房 子 各 種 建 築 物 shell = command interpreter

More information

关 于 瓶 装 水, 你 不 得 不 知 的 8 件 事 情 关 于 瓶 装 水, 你 不 得 不 知 的 8 件 事 情 1 水 质 : 瓶 装 的, 不 一 定 就 是 更 好 的 2 生 产 : 监 管 缺 位, 消 费 者 暴 露 于 风 险 之 中 人 们 往 往 假 定 瓶 装 水 是

关 于 瓶 装 水, 你 不 得 不 知 的 8 件 事 情 关 于 瓶 装 水, 你 不 得 不 知 的 8 件 事 情 1 水 质 : 瓶 装 的, 不 一 定 就 是 更 好 的 2 生 产 : 监 管 缺 位, 消 费 者 暴 露 于 风 险 之 中 人 们 往 往 假 定 瓶 装 水 是 关 于 瓶 装 水, 你 不 得 不 知 的 件 事 情 关 于 瓶 装 水, 你 不 得 不 知 的 8 件 事 情 关 于 瓶 装 水, 你 不 得 不 知 的 8 件 事 情 1 水 质 : 瓶 装 的, 不 一 定 就 是 更 好 的 2 生 产 : 监 管 缺 位, 消 费 者 暴 露 于 风 险 之 中 人 们 往 往 假 定 瓶 装 水 是 干 净 安 全 健 康 的, 广 告 传 递

More information

CA Nimsoft Monitor Snap 快速入门指南

CA Nimsoft Monitor Snap 快速入门指南 CA Nimsoft Monitor Snap 快 速 入 门 指 南 7.0 法 律 声 明 版 权 所 有 2013,CA 保 留 所 有 权 利 保 证 本 文 档 中 包 含 的 资 料 按 照 现 状 提 供, 将 来 版 本 中 如 有 更 改, 恕 不 另 行 通 知 另 外, 在 适 用 法 律 允 许 的 最 大 范 围 内,Nimsoft LLC 不 承 担 关 于 本 手 册

More information

faq.PDF

faq.PDF Adobe Acrobat 4.0 Adobe Acrobat Adobe Acrobat Adobe (Portable Document Format PDF ) PDF PDF Web Acrobat Reader PDF PDF Adobe Acrobat PDF Acrobat PDF Acrobat Acrobat Reader Acrobat Reader PDF Adobe Acrobat

More information

WF-6593

WF-6593 多 功 能 传 真 一 体 机 用 户 指 南 请 妥 善 保 管 此 说 明 书 ( 保 留 备 用 ) 安 装 使 用 产 品 前 请 阅 读 使 用 说 明 在 本 产 品 的 说 明 书 中, 打 印 部 件 将 简 称 为 打 印 机, 扫 描 部 件 将 简 称 为 扫 描 仪 本 产 品 资 料 中 使 用 的 示 意 图 仅 供 参 考, 本 产 品 实 际 可 能 与 之 存 在

More information

09 F9 128 peer to peer, P2P file transfer protocol bittorrent 10 P2P P2P GNU/ Linux P2P CC 單機版的智慧財產權 vs. 人權戰爭 1980 DVD content

09 F9 128 peer to peer, P2P file transfer protocol bittorrent 10 P2P P2P GNU/ Linux P2P CC 單機版的智慧財產權 vs. 人權戰爭 1980 DVD content 當智慧財產 侵犯人權? 智慧財產與人權 Kickstarter The Matrix The Matrix Avatar Eywa 12 2013 4 484 09 F9 128 peer to peer, P2P file transfer protocol bittorrent 10 P2P P2P GNU/ Linux P2P CC 單機版的智慧財產權 vs. 人權戰爭 1980 DVD content

More information

一、

一、 ... 1...24...58 - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - i. ii. iii. iv. i. ii. iii. iv. v. vi. vii. viii. ix. x. - 9 - xi. - 10 - - 11 - -12- -13- -14- -15- C. @ -16- @ -17- -18- -19- -20- -21- -22-

More information

專業式報告

專業式報告 IP Kamera 9060A-SL IP Kamera 9060A-SL : V1.00 : 2006.04 IP KAMERA 9000(A) 說 FCC CE 1.IP Kamera 9060A-SL 2.IP Kemera 9060A-SL 3. 4. 9060A-SL 5. 9060A-SL - 1 - 1....3... 2....4 9060A-SL...... 3....5 4....6......

More information

<4D6963726F736F667420576F7264202D20A4A4B0EAB371AB4FB3E65FA4A4A4E5AAA95F5F32303133>

<4D6963726F736F667420576F7264202D20A4A4B0EAB371AB4FB3E65FA4A4A4E5AAA95F5F32303133> 香 港 德 輔 道 中 71 號 永 安 集 團 大 廈 9 樓 電 話 :2867 0888 傳 真 :3906 9906 查 詢 熱 線 :3187 5100 中 國 通 意 外 急 救 醫 療 計 劃 保 單 投 保 人 以 一 份 投 保 書 及 聲 明 謹 向 中 銀 集 團 保 險 有 限 公 司 ( 下 稱 本 公 司 ) 申 請 下 述 保 險 該 份 投 保 書 及 聲 明 已 被

More information

Microsoft Word - ACI chapter00-1ed.docx

Microsoft Word - ACI chapter00-1ed.docx 前言 Excel Excel - v - 財務管理與投資分析 -Excel 建模活用範例集 5 相關 平衡 敏感 - vi - 前言 模擬 If-Then 規劃 ERP BI - vii - 財務管理與投資分析 -Excel 建模活用範例集 ERP + BI + ERP BI Excel 88 Excel 1. Excel Excel 2. Excel 3. Excel - viii - 前言 1.

More information

CDWA Mapping. 22 Dublin Core Mapping

CDWA Mapping. 22 Dublin Core Mapping (version 0.23) 1 3... 3 3 3 5 7 10 22 CDWA Mapping. 22 Dublin Core Mapping. 24 26 28 30 33 2 3 X version 0.2 ( ) 4 Int VarcharText byte byte byte Id Int 10 Management Main Code Varchar 30 Code Original

More information

untitled

untitled 18 2006 J 1982 N CD-ROM "fl N J "fl J [ ])( N "fl N N ( ) - 5 - J *1 N [ ] http://www.sinica.edu.tw/ftms-bin/ftmsw3 http://www.sinica.edu.tw/ftms-bin/kiwi1/pkiwi.sh UTF-8 3.0 Big5+ [ ] http://www.lingshidao.com/gushi/index.htm

More information

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 Web (CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 1092 1/ 16 30.75 748 2005 1 1 2005 1 1 : 1 3 100

More information

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn Xi III Zebra XI III 1 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn 230V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

509 (ii) (iii) (iv) (v) 200, , , , C 57

509 (ii) (iii) (iv) (v) 200, , , , C 57 59 (ii) (iii) (iv) (v) 500,000 500,000 59I 18 (ii) (iii) (iv) 200,000 56 509 (ii) (iii) (iv) (v) 200,000 200,000 200,000 500,000 57 43C 57 (ii) 60 90 14 5 50,000 43F 43C (ii) 282 24 40(1B) 24 40(1) 58

More information

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc 人 力 資 源 推 算 報 告 香 港 特 別 行 政 區 政 府 二 零 一 二 年 四 月 此 頁 刻 意 留 空 - 2 - 目 錄 頁 前 言 詞 彙 縮 寫 及 注 意 事 項 摘 要 第 一 章 : 第 二 章 : 第 三 章 : 第 四 章 : 附 件 一 : 附 件 二 : 附 件 三 : 附 件 四 : 附 件 五 : 附 件 六 : 附 件 七 : 引 言 及 技 術 大 綱 人

More information

南華大學數位論文

南華大學數位論文 1 i -------------------------------------------------- ii iii iv v vi vii 36~39 108 viii 15 108 ix 1 2 3 30 1 ~43 2 3 ~16 1 2 4 4 5 3 6 8 6 4 4 7 15 8 ----- 5 94 4 5 6 43 10 78 9 7 10 11 12 10 11 12 9137

More information

李天命的思考藝術

李天命的思考藝術 ii iii iv v vi vii viii ix x 3 1 2 3 4 4 5 6 7 8 9 5 10 1 2 11 6 12 13 7 8 14 15 16 17 18 9 19 20 21 22 10 23 24 23 11 25 26 7 27 28 12 13 29 30 31 28 32 14 33 34 35 36 5 15 3 1 2 3 4 5 6 7 8 9 10 11

More information

皮肤病防治.doc

皮肤病防治.doc ...1...1...2...3...4...5...6...7...7...9...10... 11...12...14...15...16...18...19...21 I ...22...22...24...25...26...27...27...29...30...31...32...33...34...34...36...36...37...38...40...41...41...42 II

More information

性病防治

性病防治 ...1...2...3...4...5...5...6...7...7...7...8...8...9...9...10...10... 11... 11 I ...12...12...12...13...14...14...15...17...20...20...21...22...23...23...25...27...33...34...34...35...35 II ...36...38...39...40...41...44...49...49...53...56...57...57...58...58...59...60...60...63...63...65...66

More information

中国南北特色风味名菜 _一)

中国南北特色风味名菜 _一) ...1...1...2...3...3...4...5...6...7...7...8...9... 10... 11... 13... 13... 14... 16... 17 I ... 18... 19... 20... 21... 22... 23... 24... 25... 27... 28... 29... 30... 32... 33... 34... 35... 36... 37...

More information

全唐诗24

全唐诗24 ... 1... 1... 2... 2... 3... 3... 4... 4... 5... 5... 6... 6... 7... 7... 8... 8... 9... 9...10...10...10...11...12...12...12...13...13 I II...14...14...14...15...15...15...16...16...16...17...17...18...18...18...19...19...19...20...20...20...21...21...22...22...23...23...23...24

More information

5498 立 法 會 2013 年 3 月 27 日 李 國 麟 議 員, S.B.S., J.P. 林 健 鋒 議 員, G.B.S., J.P. 梁 君 彥 議 員, G.B.S., J.P. 黃 定 光 議 員, S.B.S., J.P. 湯 家 驊 議 員, S.C. 何 秀 蘭 議 員 李

5498 立 法 會 2013 年 3 月 27 日 李 國 麟 議 員, S.B.S., J.P. 林 健 鋒 議 員, G.B.S., J.P. 梁 君 彥 議 員, G.B.S., J.P. 黃 定 光 議 員, S.B.S., J.P. 湯 家 驊 議 員, S.C. 何 秀 蘭 議 員 李 立 法 會 2013 年 3 月 27 日 5497 會 議 過 程 正 式 紀 錄 2013 年 3 月 27 日 星 期 三 上 午 11 時 正 會 議 開 始 出 席 議 員 : 主 席 曾 鈺 成 議 員, G.B.S., J.P. 何 俊 仁 議 員 李 卓 人 議 員 涂 謹 申 議 員 陳 鑑 林 議 員, S.B.S., J.P. 梁 耀 忠 議 員 劉 皇 發 議 員, 大 紫

More information

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9 東 吳 大 學 企 研 所 資 訊 管 理 期 末 報 告 weberp 使 用 說 明 書 指 導 教 授 : 尚 榮 安 教 授 第 一 組 童 偉 哲 01353025 劉 彥 澧 01353028 史 璦 禎 01353031 吳 采 紋 98153143 1 目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功

More information

尿路感染防治.doc

尿路感染防治.doc ...1...1...2...4...6...7...7...10...12...13...15...16...18...19...24...25...26...27...28 I II...29...30...31...32...33...34...36...37...37...38...40...40...41...43...44...46...47...48...48...49...52 III...55...56...56...57...58

More information

Windows Acrobat 4.0 Acrobat Acrobat 3.x Acrobat Reader 3.x - 75 MB Acrobat Acrobat 4.0 Acrobat Reader 4.0 Acrobat 4.0 Acrobat 3.x Acrobat

Windows Acrobat 4.0 Acrobat Acrobat 3.x Acrobat Reader 3.x - 75 MB Acrobat Acrobat 4.0 Acrobat Reader 4.0 Acrobat 4.0 Acrobat 3.x Acrobat Windows Adobe Acrobat 4.0 1999 3 17 Adobe Acrobat Adobe R Acrobat R 4.0 Adobe Acrobat http://www.chinese-s.adobe.com/supportservice/main.html. Adobe Acrobat Acrobat Acrobat Acrobat Adobe Acrobat checksum

More information

DeskJet F2180 DeskJet F4185 Deskjet F4280 DeskJet D2460 OK N/A N/A DeskJet 1660 OK ( 無提供 Win 2000 驅動 ) N/A N/A PSC 1315 Photosmart 2575 Photosmart C13

DeskJet F2180 DeskJet F4185 Deskjet F4280 DeskJet D2460 OK N/A N/A DeskJet 1660 OK ( 無提供 Win 2000 驅動 ) N/A N/A PSC 1315 Photosmart 2575 Photosmart C13 DPR-1061/1020/2000 印表機相容測試清單 * 若您所查詢之印表機不在以下列示清單中的話, 代表該印表機為不支援或該型號尚未測試驗證, 建議先與印表機廠商確認您所使用的印表機是否可支援搭配列印伺服器及網路列印使用 相關資訊 : 1. 以下為實際通過 DPR-1061 測試的型號以多功能事務機為主, 並必須搭配 PS-Software 中的 PS-Link 軟體使用, 一般印表機 ( 噴墨,

More information

Microsoft Word - 選擇_無解答2_.doc

Microsoft Word - 選擇_無解答2_.doc 選 擇 題 : 1 ( ) 下 列 何 者 為 W W W 的 通 訊 協 定? (A)H T T P ( H y p e r T e x t T r a n s f e r P r o t o c o l ) (B)S M T P ( S i m p l e M a i l T r a n s f e r P r o t o c o l ) (C) F T P ( F i l e T r a n

More information

EX-Z80

EX-Z80 C 4 6 R P r p 快速入門基礎知識 什麼是數位相機 數位相機可以將影像儲存在記憶卡中 讓您能夠不限次數地拍攝和刪除影 像 拍攝 刪除 顯示 您可以使用各種不同方式處理拍攝的影像 將影像儲存在電腦上 列印影像 9 附加影像到電子郵件 快速入門基礎知識 1. + - 2. 1. 1 2 2. 3. 2 1 * * * * * *? [8] [4] [2] [6] [SET] 1. 2.

More information

CH01.indd

CH01.indd 3D ios Android Windows 10 App Apple icloud Google Wi-Fi 4G 1 ( 3D ) 2 3 4 5 CPU / / 2 6 App UNIX OS X Windows Linux (ios Android Windows 8/8.1/10 BlackBerry OS) 7 ( ZigBee UWB) (IEEE 802.11/a/b/g/n/ad/ac

More information

VIDEOJET connect 7000 VJC-7000-90 zh- CHS Operation Manual VIDEOJET connect 7000 zh-chs 3 目 录 1 浏 览 器 连 接 7 1.1 系 统 要 求 7 1.2 建 立 连 接 7 1.2.1 摄 像 机 中 的 密 码 保 护 7 1.3 受 保 护 的 网 络 7 2 系 统 概 述 8 2.1 实 况

More information

Logitech Wireless Combo MK45 English

Logitech Wireless Combo MK45 English Logitech Wireless Combo MK45 Setup Guide Logitech Wireless Combo MK45 English................................................................................... 7..........................................

More information

Touch Display Link ver 2.0

Touch Display Link ver 2.0 Touch Display Link 版 本 2.0 使 用 说 明 书 目 录 请 先 阅 读... 3 操 作 环 境... 4 安 装... 6 主 机...6 客 户 端...7 启 动 应 用 程 序... 8 主 机...8 客 户 端...9 屏 幕 的 查 看 方 法... 10 主 机 的 基 本 屏 幕 ( 主 机 菜 单 )...10 客 户 端 的 基 本 屏 幕...11

More information

内容目录 Linux Mint 简介...3 历史...3 特点...3 版本号和开发代号...3 如何获取帮助...4 安装 Linux Mint...4 下载 iso 文件...4 校验 MD5 值...4 刻录 iso 文件...5 引导 Mint 启动...5 安装 Mint...5 Min

内容目录 Linux Mint 简介...3 历史...3 特点...3 版本号和开发代号...3 如何获取帮助...4 安装 Linux Mint...4 下载 iso 文件...4 校验 MD5 值...4 刻录 iso 文件...5 引导 Mint 启动...5 安装 Mint...5 Min 官方 用户指南 Linux Mint 16 Cinnamon 版 编者 johiten 1 内容目录 Linux Mint 简介...3 历史...3 特点...3 版本号和开发代号...3 如何获取帮助...4 安装 Linux Mint...4 下载 iso 文件...4 校验 MD5 值...4 刻录 iso 文件...5 引导 Mint 启动...5 安装 Mint...5 Mint 桌面简介...8

More information

68003 (Project Unity TC)_.indb

68003 (Project Unity TC)_.indb 2014 8 31 2016 2 6 104 2015 4 24 105 2008 6 1 2014 7 29 2 5,000 1 106 5 2008 3 5% 5% 2012 10 11 5% 5% 20% 25% H 17.51% A 107 A0.07% A 0.06% A H 25% H 25% 30 10 2015 8 27 5% 108 5% 2008 12 1 5% 2012 9 23

More information

Microsoft Word - 版权页.doc

Microsoft Word - 版权页.doc 新 编 高 等 院 校 经 济 管 理 类 规 划 教 材 专 业 课 系 列 现 代 信 息 检 索 简 明 教 程 吴 新 博 编 著 北 京 内 容 简 介 本 书 从 介 绍 学 科 的 基 本 理 论 和 重 大 发 展 阶 段 入 手, 对 计 算 机 信 息 检 索 的 理 论 进 行 了 研 究 和 探 讨 教 材 系 统 介 绍 了 信 息 资 源 及 其 类 型 ; 信 息 检

More information

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se 1 SQL Server 2005 DBA Microsoft SQL Server SQL ServerSQL Server SQL Server SQL Server SQL Server SQL Server 2005 SQL Server 2005 SQL Server 2005 o o o SQL Server 2005 1 SQL Server 2005... 3 2 SQL Server

More information

User’s Manual

User’s Manual SNAP 500 打 印 机 用 户 手 册 1 用 户 手 册 SNAP TM 500 打 印 机 2015 年 8 月 24 日 AVERY DENNISON Manual Edition 2.5 2 SNAP 500 打 印 机 用 户 手 册 WARNING This device complies with Part 15 of the FCC Rules. Operation is subject

More information

Page i

Page i 况 1 1.1.1 1.1.2 1.1.3 2 2.1 2.1.1 2.1.2 2.1.3 2.1.4 Page i 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.3 2.3.1 Page ii 2.3.2 2.3.3 2.3.4 2.4 2.4.1 2.4.2 2.4.3 Page iii 2.5 2.5.1 2.6 2.6.1 2.6.2 3 3.1 3.1.1

More information

f2.eps

f2.eps 前 言, 目 录 产 品 概 况 1 SICAM PAS SICAM 电 力 自 动 化 系 统 配 置 和 使 用 说 明 配 置 2 操 作 3 实 时 数 据 4 人 机 界 面 5 SINAUT LSA 转 换 器 6 状 态 与 控 制 信 息 A 版 本 号 : 08.03.05 附 录, 索 引 安 全 标 识 由 于 对 设 备 的 特 殊 操 作 往 往 需 要 一 些 特 殊 的

More information

入學考試網上報名指南

入學考試網上報名指南 入 學 考 試 網 上 報 名 指 南 On-line Application Guide for Admission Examination 16/01/2015 University of Macau Table of Contents Table of Contents... 1 A. 新 申 請 網 上 登 記 帳 戶 /Register for New Account... 2 B. 填

More information

LinuxÓû§»ù´¡

LinuxÓû§»ù´¡ RedHat Linux 概 述 版 权 所 有, 2003 (c) 什 么 是 Linux? 它 是 一 种 UNIX 操 作 系 统 的 克 隆, 它 ( 的 内 核 ) 由 Linus Torvalds 以 及 网 络 上 组 织 松 散 的 黑 客 队 伍 一 起 从 零 开 始 编 写 而 成. 它 的 目 标 是 保 持 和 POSIX( 可 移 植 操 作 系 统 接 口 ) 的 兼

More information