jabannerとかいうのを作ってみている。

要は日本語表示可能なbanner

で、bannerってなによ、というとこういうの↓

$ banner hoge


#     #  #######   #####   #######
#     #  #     #  #     #  #
#     #  #     #  #        #
#######  #     #  #  ####  #####
#     #  #     #  #     #  #
#     #  #     #  #     #  #
#     #  #######   #####   #######

引数の文字列をAAライクに文字列で表示するっていう。
ディストリによっては標準で入ってたりするコマンド。
Mandrivaは入ってなかった...。urpmi banenrでインストール可能。


こいつが日本語表示できたらおもしろいかも...とか思ってソース引っ張ってきたら.hファイルに文字の形そのままでchar[]が定義されてるっていうね...
さすがに単純拡張で日本語表示するのは無理と諦めて、一から作ってみている。
というか殆ど完成したというね。
一応、情報特別演習と言う授業で自分のテーマにしてやってたんだけど。(まだ終わってないけど。情報特別演習は。


まぁ、当然フォントデータに頼らんと日本語は文字種多すぎてやってられない訳ですが、一方フォントデータ直接なんぞいじってられないということで、libgd頼り。
つーことで必須:libgd
実行例はこんな感じ。

$ jabanner ほげ

                                       ##
                                     ## #
   ##                   #          ## # ##
   #    ############    #          ## #
  ##          ##       ##          ##
  ##          ##       ##          ##
  ##          ##       ##   ############
  ##          ##       ##   ############
  ##    ############   ##          ##
  ##          ##       ##          ##
  ##          ##       ##          ##
  ##          ##       ##          ##
  ##          ##       ##          ##
  ##    ########       ##          #
  ##    ##    ###      ##          #
  ##   ##     ####     ##         ##
  ##   ##     ## ##    ##        ###
   #    ##   ###  ##    #      ####
   ##    ######         #     ###


フォントはUmePlus


あと濃淡を検知してアンチエイリアスっぽくしたもの↓

$ jabanner -a ほげ

                                     ?:70
                                   =:D7=#
   #7   ????????????    M?         #0?M M7
  =#?   ###########D   =#=         #0 M:??
  7#:         7#       7#:         #0
  0#          7#       0#          #0
  DM          7#       DM   ############=
  MD    ??????D#???=   MD   7777777#D777:
  #0    ###########D   MD          #0
  #0          7#       #0          #0
  #0          7#       #0          #0
  #0          7#       #0          #7
  #0     :=??=7#       #0         :#7
  MD    7#######       MD         :#?
  DD   =#0:  =D#D:     DM         ?#=
  0M   7#     0#MM=    DM         D#
  7#:  7#:    DM:M#=   7#:       7#7
  ?#=  :#D=::7#7 :M7   ?#=    =7M#0
  :#7   ?M####0        :#?    M#D=
   =:     ===:          ?:    ::

あとのオプションは--helpで。

$ jabanner --help
使用法: jabanner [オプション]... 文字列...

文字列をバナーを表示します

長いオプションに必須の引数は短いオプションにも必須です.
  -a, --antialias            アンチエイリアスする
  -c, --chars=STRING         テキスト化に利用する文字列["#MND80Z7I?+=~:,. "]
  -d, --delay=NUMBER         スクロールの遅延(マイクロ秒)[10000]
  -f, --font=FILE            フォントファイル(.ttf)[/usr/share/fonts/TTF/japanese/umeplus-gothic.ttf]
  -h, --help                 このメッセージを表示する
  -m, --margin=NUMBERs       余白(上,右,下,左の順)[0,0,0,0]
  -r, --rotate=NUMBER        文字列の角度(度数法)[0]
  -s, --size=NUMBER          フォントサイズ(ポイント)[16]
  -v, --version              ヴァージョンを表示する
  -w, --width=NUMBER         表示幅(<0:自動調整,0:制限無し)[-1]
  -x, --x                    右から左へスクロールする(use ncurses)
  -y, --y                    上から下へスクロールする(use ncurses)
  -X, --X                    左から右へスクロールする(use ncurses)
  -Y, --Y                    下から上へスクロールする(use ncurses)
  -z, --z                    手動スクロール(use ncurses)

と、まぁ、そんないらねコマンド作って自己満足してます。はい。


多少有用かな?とか思えるときはXに頼らずフォント叩けるので、日本語表示できない端末でも日本語を表示できる。
つまり完全CUIな時でも文字化けしたlsの結果が読めるという!!



...ごめ、そんだけ。



で、無駄に公開とかしてみたいと思う一方、はてなってファイルスペースないのね...。
なんだろ。base64とかにしてここに張り付ければいいのかな(w
1248行ぐらいあれば...(w