2005年1月8日

[PDA] Zaurus C760 新手筆記 (6) - 中文化及其自動程序

放假日比較有空,把放了幾天沒完成中文化Zaurus 偽 C860 (SL-C760 的機器,灌上 SL-C860 1.10 JP 的 ROM,再用升級檔的方式,改至 1.40 JP 版) 給中文化了。一共試了兩個版本:第一種是使用 efont 字型;第二種是使用自製的 arial + mingliu 字型。看了一下,還是 mingliu 字型比較漂亮。(註:mingliu 字型就是 windows 下內附的新細明體。)

這是使用 efont 字型的結果,我把原來 CKeyboard 所附的 taipei 字型刪除了,改連結至 efont 字型。系統內附的 lcfont 字型當然是刪除了,helvetica 字型則是改連結至 efont 字型。

使用 efont 字型有個缺點,系統內附的字型幾乎都須刪除,不然就只看到一堆方塊字。最後我只留下 fixed 字型給 embeddedkonsole (終端機軟體) 使用。



這是使用 arial + mingliu 字型的結果,我把原來 CKeyboard 所附的 taipei 字型刪除了,改連結至 mingliu 字型。系統內附的 lcfont 字型當然是刪除了,helvetica 字型則是改連結至 arial 字型,另外 mingliu 字型的連結則是新增至 fonts 目錄。

比較特殊的是,我覺得在同點數的情形下,arial 字型總是看起來比較粗大,所以在連結時,我把點數偷加 20 後,再連結到 fonts 目錄。

使用 arial + mingliu 字型,似乎是不會受到系統內附字型的影響,共存時也不會有方塊字出現 (尚待廣泛的實驗)。

另外,從下面第三張圖可以發現,畫面上半是 mingliu 字型,下半則是 arial 字型。兩者共存的好像不錯。




底下我把整個中文化的程序詳錄於後:
  1. 先下載 efont 字型 (efont.tgz)中文化語系檔 (zh-TW-C700_0118_arm.ipk)CKeyboard 軟體 (中文輸入法程式)embeddedkonsole (終端機軟體)
  2. 如果想自製字型的話,請參考 [PDA] Zaurus C760 新手筆記 (5) - 製作 qpf 字型。其中 arial 字型建議要有 80, 100, 140, 160, 180, 220, 340, 460, 700 等幾個大小 (點數加 20 後,大小與原系統的 helvetica 字型匹配);而 mingliu 字型建議要有 110, 120, 130, 150, 160, 200 等 (這幾個大小在 mingliu 字型中,其實是預先描好的點陣字,其它大小的不會比較好看)。
  3. 如果要重灌 ROM 或是升級 ROM 的,請先看:[PDA] Zaurus C760 新手筆記 (2) - "重新開機" 及 "維護模式"[PDA] Zaurus C760 新手筆記 (3) - "DM 模式" 及 "NAND Back UP/Restore"
  4. 把文末最後附的兩段批次檔剪貼後存成 localize.sh/localize_efont.sh。如果有自製字型的話,只須前者;如果沒有自製字型的話,只須後者。
  5. 將檔案先都複製到 SD 卡上。整個目錄架構大概是這樣:
    • SD 卡根目錄
      • Backup 目錄
        • arial 目錄:內有 arial_* 等的自製字型
        • efont 目錄:內有從 efont.tgz 解開的 efont_*_50_t10.gpf (其它不符合這個規則的檔案不須要)
        • mingliu 目錄:內有 mingliu_* 等的自製字型
        • script 目錄:放下面的批次檔 localize.sh/localize_efont.sh。
        • zh -TW-C700_0118_arm:內為 zh-TW-C700_0118_arm.ipk 解開的檔案
          • opt
            • QtPalmtop
              • apps:...
              • i18n:...
    (註:ipk 檔只要把附檔名改為 tgz 後,就可以用 winrar 或是 winzip 之類的軟體解開。
    另外,原來的 embeddedkonsole.desktop 檔有問題,可以剪下面的檔案另存後替換。)

    剛剛下載的軟體 CKeyboard 及 embeddedkonsole 也放到 SD 卡上 (放那都可以)。
  6. 把 SD 卡插到機器上後,依 [PDA] Zaurus C760 新手筆記 (4) - 中文化前的準備 的內文,把 CKeyboard 及 embeddedkonsole 兩項軟體安裝好。
  7. 執行安裝好的 Konsole 軟體 (其實就是 embeddedkonsole)。下指令如後:
    • su
    • /mnt/card/Backup/script/localize.sh 或是
      /mnt/card/Backup/script/localize_efont.sh
  8. 重開機。
  9. 大功告成。應該就可以看到完整中文化的成果了。

註:為什麼我在中化文語系這部份不直接採用安裝的方式呢?如果有試過的朋友應該知道,因為版本的不符,多少有些不相容的地方。所以我採用比對後再選擇性的安裝到機器上。
底下是前面提到的三個檔案,剪貼後另存成文字檔即可。但須注意, Zaurus 為 UTF-8 的 UNIX 系統,所以要用諸如 Ultraedit 的軟體轉成 UTF-8 UNIX 格式的案檔案。如果有人可以提供空間的話,我想直接把下面的檔案弄成可以直接下載是方便一點。

下面分別是三個檔案 (localize.sh/localize_efont.sh/embeddedkonsole.desktop),每條分隔線間,是個獨立的檔案。
#!/bin/bash

# 這是 localize.sh 檔
# ----------------------------------------------------------------------
# 請存成 UTF-8/UNIX 模式,Zaurus 才能正確讀取
# ----------------------------------------------------------------------
# 這個版本適用於使用自製的 arial 及 mingliu 字型
# ----------------------------------------------------------------------
# 目錄結構:
# SD Card
#       |- Backup
#               |- arial
#                       |- arial_*
#               |- mingliu
#                       |- mingliu_*
#               |- zh-TW-C700_0118_arm
#                       |- opt
#                               |- QtPalmtop
#                                       |- i18n
#                                               |- ja
#                                                       |- *.qm
#                                       |- apps
#                                               |- *.desktop
# ----------------------------------------------------------------------

#
# 將 fonts 目錄下的 lcfont 及 helvetica 字型刪除,改連結 helvetica 至 arial
# 其中因同 pt 的字型,arial 總是看起來比較大,所以加 20 pt 後連結至 fonts 目錄

SRC="/mnt/card/Backup/arial/arial_*"
TGT="/home/QtPalmtop/lib/fonts"

cd "$TGT"

rm -f lcfont*
rm -f helvetica*

for i in $SRC ; do
  BN=`basename $i`
  SIZE=`echo "$BN" | sed -e "s/^\([^_]*\)_\([^_]*\)\(_.*\)$/\2/"`
  TAIL=`echo "$BN" | sed -e "s/^\([^_]*\)_\([^_]*\)\(_.*\)$/\3/"`
  # $SIZE +20
  ln -s "$i" "helvetica_`expr $SIZE + 20`$TAIL"
  # $SIZE
  #ln -s "$i" "helvetica_`expr $SIZE`$TAIL"
done

#
# 新連結 mingliu 字型

SRC="/mnt/card/Backup/mingliu/mingliu_*"
TGT="/home/QtPalmtop/lib/fonts"

cd "$TGT"

rm -f mingliu*

for i in $SRC ; do
  BN=`basename $i`
  TAIL=`echo "$BN" | sed -e "s/^\([^_]*\)_\([^_]*\)\(_.*\)$/_\2\3/"`
  ln -s "$i" "mingliu$TAIL"
done

#
# 將原 CKeyboard 附的 taipei 字型刪除,改連結至 arial/mingliu 字型

rm -f taipei*

# if (1) arial as helvetica, (2) $SIZE +20 and (3) arial as taipei 
#ln -s helvetica_180_50_t10.qpf taipei_100_50_t10.qpf
#ln -s helvetica_180_50_t10.qpf taipei_120_50_t10.qpf
# if (1) arial as helvetica, (2) $SIZE  and (3) arial as taipei 
#ln -s helvetica_160_50_t10.qpf taipei_100_50_t10.qpf
#ln -s helvetica_160_50_t10.qpf taipei_120_50_t10.qpf
# if (1) mingliu as taipei and (2) mingliu as taipei 
ln -s mingliu_160_50_t10.qpf taipei_100_50_t10.qpf
ln -s mingliu_160_50_t10.qpf taipei_120_50_t10.qpf

#
# 比對 zh-TW-C700_0118_arm 套件所附的語系檔,只把有須要的部份複製進來

SRC="/mnt/card/Backup/zh-TW-C700_0118_arm/opt/QtPalmtop/i18n/ja"
TGT="/home/QtPalmtop/i18n/ja"

cd "$TGT"

for i in $TGT/* ; do
  if [ -f "$SRC/`basename $i`" ] ; then
    rm $i
    cp "$SRC/`basename $i`" .
    echo -n
  fi
done

#
# 比對 zh-TW-C700_0118_arm 套件所附的捷徑檔,只把有須要的部份複製進來

SRC="/mnt/card/Backup/zh-TW-C700_0118_arm/opt/QtPalmtop/apps"
TGT="/home/QtPalmtop/apps"

cd "$TGT"

for i in $TGT/* $TGT/.* ; do
  BN=`basename $i`
  if [ -d "$i" ] ; then
    if [ -d  "$SRC/$BN" -a "$BN" != "." -a "$BN" != ".." ] ; then
      cd "$BN"
      for j in $i/* $i/.* ; do
        BN2=`basename $j`
        if [ -f "$SRC/$BN/$BN2" -a "$BN2" != ".order" ] ; then
          rm -f "$j"
          cp "$SRC/$BN/$BN2" .
        fi
      done
      cd ..
    fi
  elif [ -f "$SRC/$BN" -a "$BN" != ".order" ] ; then
    rm -f $i
    cp "$SRC/$BN" .
  fi
done
#!/bin/bash

# 這是 localize_efont.sh 檔
# ----------------------------------------------------------------------
# 請存成 UTF-8/UNIX 模式,Zaurus 才能正確讀取
# ----------------------------------------------------------------------
# 這個版本適用於使用 efont 字型
# ----------------------------------------------------------------------
# 目錄結構:
# SD Card
#       |- Backup
#               |- efont
#                       |- efont_*_50_t10.qpf
#               |- zh-TW-C700_0118_arm
#                       |- opt
#                               |- QtPalmtop
#                                       |- i18n
#                                               |- ja
#                                                       |- *.qm
#                                       |- apps
#                                               |- *.desktop
# ----------------------------------------------------------------------

#
# 將 fonts 目錄下的檔案都刪除,從 ROM 新連結 fixed 字型及 fontdir 檔

SRC="/usr/QtPalmtop.rom/lib/fonts"
TGT="/home/QtPalmtop/lib/fonts"

cd "$TGT"

rm -f *

ln -s $SRC/fontdir fontdir

for i in $SRC/fixed_* ; do
  ln -s "$i" `basename $i`
done

#
# 建立 efont 字型的連結,字型放置於 $SRC 處

SRC="/mnt/card/Backup/efont/efont_*"
TGT="/home/QtPalmtop/lib/fonts"

cd "$TGT"

for i in $SRC ; do
  BN=`basename $i`
  SIZE=`echo "$BN" | sed -e "s/^\([^_]*\)_\([^_]*\)\(_.*\)$/\2/"`
  TAIL=`echo "$BN" | sed -e "s/^\([^_]*\)_\([^_]*\)\(_.*\)$/\3/"`
  # $SIZE +20
  #ln -s "$i" "helvetica_`expr $SIZE + 20`$TAIL"
  # $SIZE
  ln -s "$i" "helvetica_`expr $SIZE`$TAIL"
done

#
# 將原 CKeyboard 附的 taipei 字型刪除,改連結至 efont 字型

rm -f taipei*

ln -s helvetica_160_50_t10.qpf taipei_100_50_t10.qpf
ln -s helvetica_160_50_t10.qpf taipei_120_50_t10.qpf

#
# 比對 zh-TW-C700_0118_arm 套件所附的語系檔,只把有須要的部份複製進來

SRC="/mnt/card/Backup/zh-TW-C700_0118_arm/opt/QtPalmtop/i18n/ja"
TGT="/home/QtPalmtop/i18n/ja"

cd "$TGT"

for i in $TGT/* ; do
  if [ -f "$SRC/`basename $i`" ] ; then
    rm $i
    cp "$SRC/`basename $i`" .
    echo -n
  fi
done

#
# 比對 zh-TW-C700_0118_arm 套件所附的捷徑檔,只把有須要的部份複製進來

SRC="/mnt/card/Backup/zh-TW-C700_0118_arm/opt/QtPalmtop/apps"
TGT="/home/QtPalmtop/apps"

cd "$TGT"

for i in $TGT/* $TGT/.* ; do
  BN=`basename $i`
  if [ -d "$i" ] ; then
    if [ -d  "$SRC/$BN" -a "$BN" != "." -a "$BN" != ".." ] ; then
      cd "$BN"
      for j in $i/* $i/.* ; do
        BN2=`basename $j`
        if [ -f "$SRC/$BN/$BN2" -a "$BN2" != ".order" ] ; then
          rm -f "$j"
          cp "$SRC/$BN/$BN2" .
        fi
      done
      cd ..
    fi
  elif [ -f "$SRC/$BN" -a "$BN" != ".order" ] ; then
    rm -f $i
    cp "$SRC/$BN" .
  fi
done
[Desktop Entry]
Comment=A Terminal Window
Exec=embeddedkonsole
Icon=konsole/Terminal
Type=Application
Name=Konsole
Name[de]=Kommando zeile
Name[hu]=Terminal
Name[it]=Terminale
Name[pt]=Terminal
Name[es]=Terminal
Name[zh_TW]=終端機
Name[ja]=終端機
Name[ko]=콘솔


沒有留言: