之前為了讓自己的 FreeBSD 全面 UTF-8 化,搞了很多東西,像是 samba、ftp(client好像都是Big5的),其中最麻煩的就是 BBS ,之前有兩個解決法,一個是用 X11 的 luit,另外一個就是用 screen 自己本身的 encoding。
我使用的是 luit ,主要原因是因為 screen 的 CJK 字寬判斷不是很好,還有他自己本身 utf-8 和 big5 之間的 map 錯誤很多,雖然說是裝好 screen 之後把這兩個地方修正一下就 ok 了,但是我個人習慣不好,喜歡沒事就 make update; portupgrade -a 一下,如果 screen 一有修改,字寬和map又爛掉一次,相當麻煩。比起來 luit 一裝起來就都沒什麼問題。但因為我自己不使用 X-Window,裝了 170MB xorg 只為了用一個 37KB 的 luit 感覺很蠢,而且配上我的壞習慣 portupgrade -a,xorg 每次要重裝就要裝超久的啊。(雖然說 portupgrade 都是在 screen 的一個小窗跑不會影響到我自己的東西)
screen encoding 的 mapping 問題主要是在 utf8encodings/18 這個檔案身上,偏偏這檔是一個 binary 檔,沒法塞進 misc/screen/files 裡面 patch 修正,如果把正確的 18 這個檔直接塞進 files 裡面,並修改 Makefile 叫他直接把 18 copy 進去,只要 make update 一次 Makefile 又被改掉了就沒用了。昨天 ijliao 長輩提供了一個方法,用 Master/Slave ports 解決,搞一個 chinese/screen 出來, master 還是原來的 misc/screen,這樣子不會影響到原來的 ports 也可以在 misc/screen 有任何 update 之後這邊也可以同步更新。
剛剛因為考完試心情大不爽,所以打算弄點東西發洩一下。研究了一下 chinese/tin 是怎麼做的,生出了一個 chinese/screen,裡面只有做兩件事,一個是把 files/18 換進 utf8encodings 裡面,另一個是將 mhsin 長輩的 screen patch 加進來,裝好之後跟原來用 luit maping 的差不多了,看來可以把 luit 丟掉了。
包出來的 port zh-screen.tgz,把這個檔解壓縮到 /usr/ports/chinese 下面,就有一個新的 /usr/ports/chinese/screen 了,再安裝這個 screen 就可以解決掉 18 和字寬的問題了。


arrow
arrow
    全站熱搜

    發表在 痞客邦 留言(3) 人氣()