Friday, May 23, 2008

[MAC] Leopard的screen中文字元寬度修正

在MAC的Leopard使用Terminal上PTT時,經常會整個畫面亂掉。
最主要的原因是:
PTT在universal header的部份有用到"《"跟"》"
EX : 【板主:muzume/nemesis0】夢シ未S ゾアアズやペ 看板《JapanStudy》
因為"《"跟"》"這兩個字的寬度不對,所以造成整個頁面會亂掉。

解決方式如下:
1. 下載screen的source code。

http://www.freshports.org/sysutils/screen
這邊可以找到screen的下載點。

2. Leopard上一定要安裝XCODE。(Leopard的安裝光碟上會有)
3. patch修正0x300a和0x300b的寬度

tar xvfz screen-4.0.3.tar.gz
cd ~/screen-4.0.3
vi encoding.c


--- encoding.c.orig 2007-12-09 09:26:01.000000000 +0800
+++ encoding.c 2007-12-09 09:27:17.000000000 +0800
@@ -860,7 +860,8 @@
(c >= 0xfe30 && c < = 0xfe6f) || /* CJK Compatibility Forms */
(c >= 0xff00 && c < = 0xff5f) || /* Fullwidth Forms */
(c >= 0xffe0 && c < = 0xffe6) ||
- (c >= 0x20000 && c < = 0x2ffff)));
+ (c >= 0x20000 && c < = 0x2ffff))) ||
+ (c == 0x300a || c == 0x300b) ;
}
#endif

4. Leopard下compile screen時,找不到sys/stropts.h錯誤訊息的patch

vi pty.c


--- pty.c.orig 2007-12-09 09:30:14.000000000 +0800
+++ pty.c 2007-12-09 09:30:30.000000000 +0800
@@ -34,7 +34,7 @@
#endif

/* for solaris 2.1, Unixware (SVR4.2) and possibly others */
-#ifdef HAVE_SVR4_PTYS
+#if !defined(__APPLE__) && defined(HAVE_SVR4_PTYS)
# include
#endif

5. configure and make

cd ~/screen-4.0.3
./configure
./make

6. 取代掉原來的screen

sudo mv /usr/bin/screen /usr/bin/screen.org
sudo cp ~/screen-4.0.3/screen /usr/bin/screen

7. 執行screen

screen -U


==
Reference :
http://blog.vgod.tw/2007/12/09/leopard%E7%9A%84%E7%B5%82%E7%AB%AF%E6%A9%9F%E5%92%8Cscreen%E4%B8%AD%E6%96%87%E5%AF%AC%E5%BA%A6%E4%BF%AE%E6%AD%A3/

No comments:

Post a Comment