2010年12月9日 星期四

自製可多重開機USB隨身碟-進階版(三)

經過前二篇文章介紹的內容修改過後的 gfxboot 佈景主題,套用到我們自製的隨身碟後,我想效果應該是大部份人都可以滿意的,範例如下圖:


細看主選單的部份,我們在 Grub4dos 的 menu.lst 內設定的 "Reboot" 被自動翻譯成 "重新開機",而 "Halt" 並沒有翻成 "關機",那是因為在字典檔裡並沒有 "Halt",但是卻有 "Power Off",解決的方法就是將 Grub4dos 內 menu.lst  中的 "Halt" 字串改成 "Power Off",如果不想那麼麻煩,這裡提供另一種方法:
  1. 在 /data-boot 目錄下建立一份文字檔,檔名為 translations.語系 ,例如繁體中文為 translations.zh_TW
  2. 在這份文字檔內加上要翻譯的字串,例如
  3. Halt
    關機
    
  4. 用以下指令,將這份文字檔插入至 message 內
  5. gfxboot --add-files translations.zh_TW

完成後就如下圖所示


說真的,如果您的要求不是太高的話,到目前為止,應該可以製作出一顆具有您自己獨特風格的多重開機隨身碟,如果還是不滿意的話,那就只好接著再往下看囉。

變更佈景主題的字體

為了在圖片上能看出明顯的差異,這裡我用華康行書體作示範,步驟有些麻煩,操作要有點耐心。
  1. 華康字體副檔名為 .ttc,是字型集合檔,必需使用工具將它拆成 .ttf 檔,先下載 Windows 版的 TTCTools,解壓至 C:\TTCTools 目錄下,複製 DFT_S5.TTC ( 華康行書體 ) ,到這個目錄下,進到命令列使用以下指令拆解成 .ttf
  2. breakttc DFT_S5.TTC
    拆解完成後,會產生 FONT00.TTF 及 FONT01.TTF 二個字型檔,二個都是華康行書體,FONT01.TTF 在字型名稱後有個 (P),這二個字型檔有啥差異,說實在我並不清楚,因此我只取用 FONT00.TTF 並將它改名為 DFT_ST.TTF 後複製到 OpenSUSE 的家目錄內,用 OpenSUSE 的系統設定工具將字型安裝起來。

  3. 在 OpenSUSE 的 Theme 目錄下進行一次 make 動作,make 完先不要做 make clean,然後在家目錄內新增一個可執行的批次檔  ( chmod 755) mkblfont ,內容如下:
    #佈景主題目錄
    THEME_PATH=/home/kalvin/Theme/GreenEyes
    #PO檔目錄
    PO_PATH=$THEME_PATH/po
    #說明檔目錄
    HELP_PATH=$THEME_PATH/help-boot
    #字型檔目錄,可以用 find / -name *.ttf 詢找
    FONT_PATH=/usr/local/share/fonts/d
    #字型檔檔名
    FONTNAME=DFT_R5
    #產生的字型檔名
    FNT=xing
    #額外的字元
    Add_Char=繁简灣湾 
    
    cat $PO_PATH/en.tr \
     $PO_PATH/zh_CN.tr \
     $PO_PATH/zh_TW.tr \
     $HELP_PATH/en/*.html \
     $HELP_PATH/zh_CN/*.html \
     $HELP_PATH/zh_TW/*.html >tmp.txt
    
    echo $Add_Char >>tmp.txt
    
    #prop 字元寬度
    #size 字體大小
    #space_width 字距
    #dy 和字高有關
    #bold 1=粗體 
    gfxboot-font -v \
    -t tmp.txt \
    -p $FONT_PATH  \
    -c big5 -f $FONTNAME:prop=2:size=19:space_width=0:bold=0 \
    $FNT.fnt >$FNT.log
    
    有程式撰寫經驗或熟 Linux 的朋友,一眼就能看出上面那段 script 的用意,對於不熟的朋友,我就大概解釋一下,# 註解符號下的目錄需視您的環境變更,然後使用 cat 指令將繁體中文、簡體中文、英文的字典檔(.PO)和說明檔(.html)內的所有文字抓出到一個暫存的 tmp.txt 檔內,並將佈景主題內會用到的額外字元附加到這份暫存檔內,最後使用 gfxboot-font 指令來產生佈景主題使用的字型檔,值得一提的是,我曾經看過有人是將常用漢字約3500個全部放入一份文字檔,再用 gfxboot-font 來生成字型檔,我是覺得沒那個必要啦,只要抓用得到的字來生成字型檔就好了,生成的檔案會必較小。

    執行完這份 script 後,就會生成字型檔及log,以本例來說就是 xing.fnt 和 xing.log,log 檔是用來讓您檢視字型檔資訊用的,.fnt 就是我們要取用的字型檔,在把它放入原始檔前,可以用以下命令來測試效果:
    #修改 gfxboot.cfg 內指定的預設字型
    gfxboot --change-config font.normal=xing.fnt
    #插入字型檔到 message 內
    gfxboot --add-files xing.fnt
    #測試預覽
    gfxboot --preview
    
完成後的成果如下圖:


看起來是不是就又更上一層樓了呢? 不過,以上的做法只對繁體中文有效,為什麼呢?因為,我手邊的華康字型檔不是 Unicode 的,繁體中文和簡體中文是分開的,如果要讓簡體中文也有同樣的效果,那麼在步驟 1 時,還得要再拆一個簡體中文的華康行書體 ( 英文字體也是一樣 ),然後在 mkblfont 內稍做修改,底下是我實際上在使用的 script ,貼出來讓大家參考好了:
#佈景主題目錄
THEME_PATH=/home/kalvin/Theme/GreenEyes
#PO檔目錄
PO_PATH=$THEME_PATH/po
#說明檔目錄
HELP_PATH=$THEME_PATH/help-boot
#字型檔目錄
FONT_PATH=/usr/local/share/fonts/d:/usr/share/fonts/truetype:
#字型檔檔名
FONTNAME=DFT_R5
#產生的字型檔名
FNT=yuan
#額外的字元
Add_Char=繁简灣湾

cat $PO_PATH/en.tr \
 $PO_PATH/zh_CN.tr \
 $PO_PATH/zh_TW.tr \
 $HELP_PATH/en/*.html \
 $HELP_PATH/zh_CN/*.html \
 $HELP_PATH/zh_TW/*.html >tmp.txt

echo $Add_Char >>tmp.txt

#prop 字元寬度
#size 字體大小
#space_width 字距
#dy 和字高有關
#bold 1=粗體 
gfxboot-font -v -l 18 \
-t tmp.txt \
-p $FONT_PATH  \
-c ISO-8859-15 -c big5 -c gbk -r \
-f DejaVuSans:size=16 \
-f $FONTNAME:prop=2:size=16:space_width=5:dy=-1 \
-f DFGB_Y5:prop=2:size=16:space_width=5:dy=-1 \
$FNT.fnt >$FNT.log
加上這篇,自製可多重開機USB隨身碟-進階版一共發了三篇,結束了嗎?我覺得是看人啦,有的人這樣應該就滿足了,有些人...像我,可能就還會想東搞西搞的,其實 gfxboot 能搞的花樣還真不少咧,下一篇該寫些什麼呢?嗯,讓我想想先...

沒有留言:

張貼留言