ref: 合併cin檔 、 gcin同好會
准備工作:
一、找一台有正版嘸蝦米的windows,從c:\windows\system32\中複製出四個table檔:liu-uni.tab、liu-uni2.tab、liu-uni3.tab、liu-uni4.tab。
二、從GCIN同好會上下載轉檔用的兩個程式:uni2txt.sh和uni2txt.exe,以及四個vrsf提供的特殊字選字檔:liu-uni.vrsf、liu-uni2.vrsf、liu-uni3.vrsf、liu-uni4.vrsf。
三、安裝wine,因為uni2txt.exe是windows下執行的binary,執行uni2txt.sh時會使用wine來執行uni2txt.exe來將tab檔轉成txt檔。
四、從蝦米族樂園下載liu.box。此檔為utf-16格式,用途為EXTA/B字的擴充,並做一些修改:
(1)在xubuntu上下載的話,記得檢查locale,設為utf-8再下載,比較不會出錯。
export LC_ALL=zh_TW.UTF-8
export LANG=zh_TW.UTF-8 (以下這兩行是方便從console上直接看檔案內容用)
export LANGUAGE=zh_TW.UTF-8
(2)刪除檔頭的文字敘述直到 ree; 為止。
(3)將 ; 取代掉。
vi liu.box
:1,$s/;//g
五、將locale設定為utf-8環境:export LC_ALL=zh_TW.UTF-8
步驟:
一、執行gcin同好會上提供的uni2txt.sh,將tab檔轉為linux可用的cin檔。
bash uni2txt.sh
(1)如果有錯,自行除錯,沒有出現錯誤的話,會產生出*.unix、*.txt、noseeing*.cin、noseeing*.gtab。
(2)如果不想合併cin檔此處的gtab檔就可以使用了,直接進行步驟四。
二、合併cin檔。
cat noseeing.cin liu-uni2.unix liu-uni3.unix liu-uni4.unix liu-utf8.box | perl -nle '(print,$hash{$_}=1) unless defined $hash{$_}' > boshiamy-hyper.cin
檔名解釋
(1)合併的檔案可能是要解決字元重複性的問題所以是用noseeing.cin liu-uni2.unix liu-uni3.unix liu-uni4.unix來合併。
(2)liu-utf8.box由准備工作四來決定檔名,要記得改成符合的檔名。
(3)perl -nle '(print,$hash{$_}=1) unless defined $hash{$_}' > 就是把上述檔案stdout到>後面所接的檔案中。
(4) boshiamy-hyper.cin可以自己取,在同好會上用的是noseeing.cin。
三、使用gcin2tab將合併好的cin檔轉為gcin可用的gtab檔。
gcin2tab boshiamy-hyper.cin
(1)會產生*.gtab檔。
四、將gtab放入gcin的目錄中。
(1)同好會中直接放進~/.gcin/,這樣只能是單一使用者使用。
(2)因為是自己的電腦,所以放進/usr/share/gcin/table/中,這樣每個使用者都可以用了。
五、附錄:
#!/bin/bash
# uni2txt.sh version 0.0.1
wine ./uni2txt.exe liu-uni.tab liu-uni.txt
wine ./uni2txt.exe liu-uni2.tab liu-uni2.txt
wine ./uni2txt.exe liu-uni3.tab liu-uni3.txt
wine ./uni2txt.exe liu-uni4.tab liu-uni4.txt
# sed is used to remove byte-order mark
if [ -f liu-uni.txt ]; then
iconv -f UTF-16LE -t UTF-8 -c liu-uni.txt | \
tr -d "\r" | sed 's/^//' | awk '{print $1,$2}' > liu-uni.unix
tail -n 39 "$0" | sed 's/^%cname$/%cname 嘸蝦米/' > noseeing.cin
cat liu-uni.unix >> noseeing.cin
if [ -f liu-uni.vrsf ]; then
cat liu-uni.vrsf >> noseeing.cin
fi
gcin2tab noseeing.cin
fi
if [ -f liu-uni2.txt ]; then
iconv -f UTF-16LE -t UTF-8 -c liu-uni2.txt | \
tr -d "\r" | sed 's/^//' | awk '{print $1,$2}' > liu-uni2.unix
tail -n 39 "$0" | sed 's/^%cname$/%cname 簡體蝦/' > noseeing2.cin
cat liu-uni2.unix >> noseeing2.cin
if [ -f liu-uni2.vrsf ]; then
cat liu-uni2.vrsf >> noseeing2.cin
fi
gcin2tab noseeing2.cin
fi
if [ -f liu-uni3.txt ]; then
iconv -f UTF-16LE -t UTF-8 -c liu-uni3.txt | \
tr -d "\r" | sed 's/^//' | awk '{print $1,$2}' > liu-uni3.unix
tail -n 39 "$0" | sed 's/^%cname$/%cname 台簡蝦/' > noseeing3.cin
cat liu-uni3.unix >> noseeing3.cin
if [ -f liu-uni3.vrsf ]; then
cat liu-uni3.vrsf >> noseeing3.cin
fi
gcin2tab noseeing3.cin
fi
if [ -f liu-uni4.txt ]; then
iconv -f UTF-16LE -t UTF-8 -c liu-uni4.txt | \
tr -d "\r" | sed 's/^//' | awk '{print $1,$2}' > liu-uni4.unix
tail -n 39 "$0" | sed 's/^%cname$/%cname 日文蝦/' > noseeing4.cin
cat liu-uni4.unix >> noseeing4.cin
if [ -f liu-uni4.vrsf ]; then
cat liu-uni4.vrsf >> noseeing4.cin
fi
gcin2tab noseeing4.cin
fi
exit
%gen_inp
%ename liu
%cname
%selkey 123456789
%space_style 1
%keyname begin
a A
b B
c C
d D
e E
f F
g G
h H
i I
j J
k K
l L
m M
n N
o O
p P
q Q
r R
s S
t T
u U
v V
w W
x X
y Y
z Z
, ,
. .
' ’
[ 〔
] 〕
%keyname end
%chardef begin
1 comment:
有錯再修改囉~
Post a Comment