這裡介紹如何使用 FIGlet 產生以純文字 ASCII 字元畫出來的大型文字。

FIGlet 是一個可以產生各種 ASCII Art 大型字體的工具,可用來製作文字介面程式用的 banner,支援的字型非常豐富,對於終端機的程式來說很實用。

安裝 FIGlet

若在 Debian 或 Ubuntu Linux 中,可以使用 apt 安裝 FIGlet 這個工具:

sudo apt-get install figlet

若是 CentOS Linux,則在啟用 EPEL 之後,使用 yum 安裝:

sudo yum install epel-release
sudo yum install figlet

基本用法

直接執行 figlet 指令,並指定文字的內容即可產生大型文字:

figlet "G. T. Wang"
  ____     _____  __        __                
 / ___|   |_   _|        / /_ _ _ __   __ _ 
| |  _      | |      / / / _` | '_  / _` |
| |_| |_    | |_     V  V / (_| | | | | (_| |
 ____(_)   |_(_)    _/_/ __,_|_| |_|__, |
                                        |___/

figlet 也可以像一般的 Linux 指令一樣,從標準輸入取得文字內容:

LANG=C date | figlet
 __  __               __  __              _  ___  
|  /  | ___  _ __   |  /  | __ _ _ __  / |/ _  
| |/| |/ _ | '_   | |/| |/ _` | '__| | | (_) |
| |  | | (_) | | | | | |  | | (_| | |    | |__, |
|_|  |_|___/|_| |_| |_|  |_|__,_|_|    |_|  /_/ 
                                                  
 _  __    _________   _ ____     ____ ____ _____   ____   ___  _  ___  
/ |/ /_ _|___ / ___|_/ | ___|   / ___/ ___|_   _| |___  / _ / |( _ ) 
| | '_ (_) |_ ___ (_) |___   | |   ___  | |     __) | | | | |/ _  
| | (_) | ___) |__) || |___) | | |___ ___) || |    / __/| |_| | | (_) |
|_|___(_)____/____(_)_|____/   ____|____/ |_|   |_____|___/|_|___/

若執行 figlet 指令,不加任何參數的話,會進入互動式的環境,使用者每輸入一行文字,就會輸出轉換的結果:

figlet

figlet 互動式操作環境

選擇字型

FIGlet 的字型是可以選擇的,我們可以使用 figlist 這個指令列出 FIGlet 內建的所有字型:

figlist
Default font: standard
Font directory: /usr/share/figlet
Figlet fonts in this directory:
banner
big
block
bubble
digital
ivrit
lean
[略]

figlist 指令的輸出中,我們可以看出 FIGlet 預設的字型目錄是 /usr/share/figlet(所以也可以直接到這個目錄下查看可用的字型),而預設的字型則為 standard

若要指定字型,可以使用 -f 參數,例如使用 banner 這個字型:

figlet -f banner "G. T. Wang"
 #####         #######        #     #                      
#     #           #           #  #  #   ##   #    #  ####  
#                 #           #  #  #  #  #  ##   # #    # 
#  ####           #           #  #  # #    # # #  # #      
#     # ###       #    ###    #  #  # ###### #  # # #  ### 
#     # ###       #    ###    #  #  # #    # #   ## #    # 
 #####  ###       #    ###     ## ##  #    # #    #  ####

下載字型檔

除了系統上預設安裝好的字型之外,在 FIGlet 的官方網站上也有非常多的字型可以下載使用,建議可以從它的範例網頁中挑選喜歡的字型,然後再下載對應的字型檔。

假設我們想要使用 isometric1,就先下載該字型檔:

wget http://www.figlet.org/fonts/isometric1.flf

接著在含有這個字型檔的目錄,執行 figlet 並以 -f 參數指定字型名稱:

figlet -f isometric1 "GTW"
      ___           ___           ___     
     /           /           /__    
    /::          :         /:/ _/_   
   /:/:          :       /:/ /__  
  /:/  :         /::     /:/ /:/ _/_ 
 /:/__/_:__     /:/:__ /:/_/:/ /__
 :  / /__/    /:/  /__/ :/:/ /:/  /
  : :__     /:/  /       ::/_/:/  / 
   :/:/  /     /__/         :/:/  /  
    ::/  /                     ::/  /   
     /__/                       /__/

細部調整選項

FIGlet 預設會讓每個字母黏在一起,如果想要讓每個字母分開,看得更清楚的話,可以加上 -k 參數:

figlet -k "G. T. Wang"
  ____      _____   __        __                   
 / ___|    |_   _|         / /__ _  _ __    __ _ 
| |  _       | |       / / // _` || '_   / _` |
| |_| | _    | | _     V  V /| (_| || | | || (_| |
 ____|(_)   |_|(_)    _/_/  __,_||_| |_| __, |
                                             |___/

如果在終端機螢幕上,想要讓輸出的文字置中,可以加上 -c 參數:

figlet -c "G. T. Wang"

置中對齊

終端機的畫面寬度會直接影響到 FIGlet 的排版,FIGlet 預設的終端機的寬度為 80,如果您所使用的終端機寬度不是 80 的話,可以加上 -t 參數讓 FIGlet 自動偵測終端機的寬度,或是使用 -w 新寬度 的方式指定新的寬度。

以下是一些有趣的指令,其將 figlet 所產生的文字,送給 tr 進行取代,產生出不同的效果:

figlet -f lean | tr ' _/' ' ()'
figlet -f lean | tr ' _/' './'
figlet -f lean | tr ' _/' ' //'
figlet -f lean | tr ' _/' '/  '

參考資料:iT邦幫忙