screen 補完計畫
回覆此文章 | 引用列表 (70) | 切換為遞減排序  
第 1 頁.共 1 頁 (1 - 10 of 10)
發表人 文章內容
Tiberius
張貼時間: 2005-11-21 15:44
更新! http://mail.cs.nchu.edu.tw/~s9256043/screen-4.0.2-uao-2.tar.gz

== 簡介

這次補完的對象是 SCREEN - THE terminal multiplexer
應該是這次補完浪潮 (?) 的尾聲了,因為我的使用需求都已滿足

壓縮檔內有三個檔案。

screen-4.0.2-cjkwidth-mhsin.diff 是 mhsin 製作的 Unicode 字寬判定修正碼 (解決中文全型符號被誤認成半型、顯示亂掉等問題),感謝 Eric 提供,讓我得以換掉第一版的 super dirty hack (爆)

screen-4.0.2-uao.diff 則會修正 Big5 字碼區 0x8140-0x9FFE 的文字不能正常解碼的問題。

18 就是給 screen 使用的新 Big5 - Unicode 轉碼表,此轉碼表為 Unicode 補完計畫 2.42 (據稱) 將會使用的轉碼表;與第一版差異之處,在於第二版重新規劃字碼排列順序,修正某些轉碼錯誤,同時完整支援 Unicode 補完計畫的 Big5 -> Unicode 與 Unicode -> Big5 單向對應字碼。

== 安裝方法

這個補完必須重新編譯/安裝 screen。首先自己動手 (或是使用套件管理工具) 取得 screen 的原始碼並且解壓
然後進入 screen 的原始碼目錄套用 patch、以新的轉碼表覆蓋原有轉碼表
~ $ tar zxf screen-4.0.2.tar.gz
~ $ cd screen-4.0.2

~/screen-4.0.2 $ patch < ../screen-4.0.2-uao.diff
~/screen-4.0.2 $ patch < ../screen-4.0.2-cjkwidth-mhsin.diff
~/screen-4.0.2 $ cp ../18 utf8encodings/
然後照舊進行編譯、安裝工作。

== 使用

首先確認連線程式設定在 UTF-8 編碼模式下。

以 Pietty 來說, 是功能表的 選項 -> 字元編碼 -> Unicode UTF-8
另外還要到 選項 -> 詳細設定 然後把 Window -> Translation -> Treat CJK ambiguous characters as wide 勾起來,否則中文特殊符號會破壞畫面排列。

而 Linux 的使用者可能必須更新 UTF-8 charmap, 才能讓 terminal 程式正確處理 CJK ambiguous characters 的寬度;
方法是: 下載 http://mail.cs.nchu.edu.tw/~s9256043/UTF-8.gz ,不必解壓,直接放到 /usr/share/i18n/charmaps 替換掉原本的 UTF-8.gz 檔 (可先備份),再來執行下列指令重新製作 locale 資料:

localedef -i zh_TW -f UTF-8 zh_TW.UTF-8

然後以 UTF-8 環境執行 screen
$ LANG="zh_TW.UTF-8" screen

接著將某個虛擬視窗的編碼改為 big5
<Ctrl>+<A> :encoding big5 <Enter>
$ export LANG="zh_TW.Big5"

再來隨便 telnet 一個 BBS 看看效果,如果排版沒亂日文也有出現的話,那就是成功了 ...
開新視窗做其他的事情,或是 detach 掛站吧!

(完)


[ 本文於 2005-11-27 12:08Tiberius 編輯第 5 次 ]
 作者資料
Tiberius
張貼時間: 2005-11-21 23:30
啊呀! 沒想到這麼快就傳到那邊去了 ^^;

我想可能會有些人覺得,現在繼續使用 Unicode 補完計畫的轉碼表產生新的文字內容並不適合,應該改用 Big5-2003 字集;但是我動手這個 patch 的目的是為了掛一些補完字集用比較多的 BBS,那些地方用 Big5-2003 會看不到很多東西 ^^;

有需要使用 Big5-2003 字碼表的話,可以參考下列網址,使用那邊提供的 18 檔:

http://www.csie.ntu.edu.tw/~r92030/project/big5/
http://groups.google.com/group/tw.bbs.comp.linux/msg/a578d468bf5756d9

第二篇文章所提到的字碼範圍問題,現在已經可以透過我的 patch (以及 defc1/defgr 設定) 修正,而第一個網址提供的 18 檔的確包含 0x8140-0xA0FE 範圍的轉碼資料,所以在 patch 過後可以正常使用無誤。

嗯,那就各取所需吧!
 作者資料
Tiberius
張貼時間: 2005-11-22 23:00
在 Linux 上面的 terminal emulator 通常是直接呼叫系統 glibc 的 wcwidth 或 wcswidth 函式取得字串的顯示寬度;這些函式所參考的寬度資訊都定義在 charmaps 裡,而 glibc 內附的 UTF-8 charmap 並未定義 CJK ambiguous width characters 的寬度,因此會將這些字元當成半形處理,破壞顯示效果。

因此直接對系統的 charmaps 寬度定義下手,將這些字元明確定義為全寬度字元:

http://mail.cs.nchu.edu.tw/~s9256043/UTF-8.gz

這是修改好的 UTF-8 charmap 檔。下載這個檔案之後,不必解壓,直接放到 /usr/share/i18n/charmaps 替換掉原本的 UTF-8.gz 檔 (可先備份),然後重新製作 locale:

localedef -i zh_TW -f UTF-8 zh_TW.UTF-8

之後以 zh_TW.UTF-8 locale 執行 terminal emulator 時,就應該能正常顯示 BBS 常用的各種特殊符號了。
 作者資料
Eric
本作者未註冊
張貼時間: 2005-11-25 15:39
感謝您的 patch

不過這個表好像有些小問題, 我碰到的是「十」和「底」輸入以後會轉錯碼的問題.
時會變成蘇州碼中的字 (〡〢〣〤〥〦〧〨〩〸〹〺)
「底」似乎也對應錯了 (其他人看不到?), 您可以試試看確認一下.

剛與 piaip 討論後, 試驗他的表是正常的 (也有經過幾次修訂), 您可以試試看, 不知道使用的表是哪裡不同.
http://www.csie.ntu.edu.tw/~piaip/utf8/screen/
 作者資料
Eric
本作者未註冊
張貼時間: 2005-11-25 17:04
對了, 剛剛又發現兩個字有問題:
八 和 電.
 作者資料
Tiberius
張貼時間: 2005-11-25 20:02
to Eric:
screen-4.0.2-uao.tar.gz 小弟在 2005-11-22 22:05 重新上傳過,換上 uao 製作群提供的 2.42 版轉碼表內容。
當初一時失誤未將檔案更名或是加上日期,小弟十分抱歉! 如果下載時間比較早的話,可以更新試試看。

我這邊用新版轉碼表測試的結果,您提到的這幾個字都沒有發生問題?
不知道詳細的情形是怎樣,可否來信詳談: tiberiusteng at msn dot com

另外也感謝您提供 piaip 那邊的 patch 位址,看到幾個先前沒注意到的地方
或許小改之後就不必手動加上 defgr / defc1 的設定了!


[ 本文於 2005-11-25 20:47Tiberius 編輯第 2 次 ]
 作者資料
OOO
本作者未註冊
張貼時間: 2006-01-22 01:53
剛剛發現雙色字會被當亂碼結果沒東西輸出,其實被砍一半的大五碼漢字也會消失XD,有辦法改成輸出?嗎^^?
 作者資料
Jackie
本作者未註冊
張貼時間: 2006-05-15 20:39
話說那個mhsin的patch........
我試用之後原本還以為怎會沒效果.......
翻了原始碼才發現原來要改locale...
因為小弟習慣設成en_US.utf8
只要要上bbs的那些window才改成其他的locale

不過除了改locale外其實mhsin還提供 "cjkwidth on" 這個設定...
只是這裡的文章沒寫....mhsin的網站上我也不知道他把這東西放哪裡^^"

所以提出來給其他人參考
 作者資料
cojad
張貼時間: 2006-11-22 22:31
請教一下....我照以上的方法重新編譯了Screen了
大部分的字元都可以正常顯示了
字寬問題也得到完全的解決了

可是有些字元的對應上有問題
不曉得該要怎麼處裡
目前發現以下的對應問題
1.雙線框字元都變成問號了
2.日文對應都錯了....(雖然還是看到日文但是不知所云了)
3.¥¢£->¥ ¢ £ (全形符號對應成半形符號+空白?..不知道該算bug還是不算.... )
4.少部分的填色方塊
_ˍ▁▂▃▄▅▆▇█ -> _�▁▂▃▄▅▆▇█
5.~->∼(這兩個符號第一個是正常的big5,第二個則是screen轉成utf8之後的....轉utf8之後的這個∼在PieTTY中若是有上色了話,會變成方框...也不知道該算誰的bug....

一圖勝過千言萬語...
我還是貼上我的PieTTY圖好了
http://file.cojad.com/pic/utf8screen/en_USwithoutScreen0.png
http://file.cojad.com/pic/utf8screen/screen0.png
http://file.cojad.com/pic/utf8screen/en_USwithoutScreen1.png
http://file.cojad.com/pic/utf8screen/screen1.png
http://file.cojad.com/pic/utf8screen/en_USwithoutScreen2.png
http://file.cojad.com/pic/utf8screen/screen2.png
http://file.cojad.com/pic/utf8screen/en_USwithoutScreen3.png
http://file.cojad.com/pic/utf8screen/screen3.png

不曉得這樣可不可以幫得上忙...
如果要聯絡我了話...我的Mail是 xcojad at gmail dot com


[ 本文於 2006-11-22 22:36cojad 編輯第 3 次 ]
 作者資料
cojad
張貼時間: 2006-11-23 01:59
找到問題了....我重新編譯了5,6次測試不同的18檔案...結果都沒有任何改變
後來重新configure才發現原來18本身並沒有被編譯進去到screen執行檔內,而是執行階段的時候才被screen讀取
而configure的預設讀取資料夾在/usr/share/screen/utf8encoding
由於我在分享主機內沒有修改資料夾內18的權限
所以就直接去config.h裡面找到這行
# define SCREENENCODINGS "/usr/share/screen/utf8encoding"
改到我自己的家目錄內去了...

所以現在顯示結果都正常囉...!!
感謝你整理好的patch!!
 作者資料

回覆此文章  
第 1 頁.共 1 頁 (1 - 10 of 10)
您擁有的權限: 閱讀文章 , 回覆主題
前往:

[Validated with XHTML 1.0] tBoard Development (© 2002-2004 by Tiberius Teng)
Queries: 16 Reuses: 1 Time: 0.16
[Images provided by ForumImages]