#:g1: braille-banner

Posted 2012-12-11 20:50:00 GMT

この投稿はCommon Lisp Libraries Advent Calendar 2012の12日目の記事です。
昨年の暮れ、Unicodeに点字があることを発見し、点字関係で遊んでいたのですが、点字をドットに見立ててTwitterなどで『謹賀新年』と出したらウケるかなと思って作りました。

braille-bannerとは

Unicodeの点字をドットに見立ててバナーを表示するというものです

パッケージ名braille-banner
本拠地サイトg000001 / braille-banner
ドキュメント×
Cliki×
Quicklisp×

大体の仕組みですが、k14フォントのbdfを読んで、点字フォントで表現できるよう2x4の塊に分解し、点字フォントでバナーとして再構成します。『謹賀新年』を出すのが最終目標だったので、ビットパターンから点字への変換が手抜きで、Unicodeの文字名を利用したりしています。

インストール

GitHubに置いているだけなのでQuicklisp一発ではインストールできません。手元にソースを持ってきてQuicklispのlocal-projectsディレクトリ等に展開する必要があります。展開した後にQuicklispの登録ライブラリを初期化して読み込みます。
Unix系OSの場合
シェル側:

$ cd quicklisp/local-projects 
$ wget https://github.com/g000001/braille-banner/archive/master.tar.gz
$ tar xvf master.tar.gz
Common Lisp側:
(asdf:initialize-source-registry)
(ql:quickload :braille-banner)

使ってみる

;; Ubuntu 12.4 x86_64

(braille-banner:string-to-braille "おれの怒りが有頂天") ;=> "⠀⠀⢢⢀⠀⠤⡀⠀⠀⠐⡄⢀⣀⠀⠀⠀⠀⠀⣀⢤⠤⡀⠀⠀⠠⢤⠧⡤⡤⠤⡄⠀⠀⠈⣆⠔⠢⡀⠀⠀⠀⠀⢢⠀⢀⠢⠑⠀⠠⠤⢤⠧⠤⠤⠤⠀⠐⢲⠒⠒⡲⠒⠒⠀⠐⠒⠒⢲⠒⠒⠒⠀ ; ⠀⠐⢺⢁⡠⢄⠉⠀⠠⠔⡷⠁⠀⡇⠀⠀⠀⡜⠀⡜⠀⠈⡆⠀⠀⢚⡲⣁⠬⠪⣀⠀⠀⠀⡏⠀⠀⡇⠀⠀⠈⠒⡞⠉⡆⢑⡄⠀⠀⢀⢾⣒⣒⣲⠀⠀⠀⢸⠀⢸⠭⠭⡇⠀⠀⠒⠒⣺⡒⠒⠂⠀ ; ⠀⠤⣺⠁⢄⣀⠇⠀⢀⠜⡇⠀⠀⡇⢀⠀⠀⢇⠜⠀⢀⡰⠁⠀⠈⡅⢰⠈⠆⡐⢄⠀⠀⠀⠁⠀⡰⠁⠀⠀⠀⡰⢁⢠⠃⠀⠀⠀⠐⠁⢸⠒⠒⢺⠀⠀⠀⢸⠀⠸⡭⢭⠇⠀⠀⠀⡰⠁⠱⡀⠀⠀ ; ⠀⠀⠈⠀⠀⠀⠀⠀⠀⠈⠃⠀⠀⠈⠁⠀⠀⠀⠀⠈⠁⠀⠀⠀⠈⠀⠈⠒⠒⠃⠈⠀⠀⠀⠀⠊⠀⠀⠀⠀⠀⠁⠀⠁⠀⠀⠀⠀⠀⠀⠘⠀⠀⠚⠀⠀⠀⠉⠒⠉⠀⠀⠑⠀⠐⠊⠀⠀⠀⠈⠒⠀"

(braille-banner:string-to-braille "破壊力ばつ牛ン") ;=> "⠐⢲⠒⢢⠤⡧⡤⠀⠀⢰⠐⣒⣺⣒⡒⠀⠀⠀⠀⡇⠀⠀⠀⠀⠐⡄⡀⠀⢱⣠⡑⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⡆⢸⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀ ; ⢀⡮⢤⢸⡤⠯⡄⠀⠈⢹⠉⠧⢧⠧⠇⠀⠈⠉⠉⡏⠉⠉⡇⠀⢰⠁⠈⠉⢹⠀⠀⠀⠈⠒⠉⠀⠀⠈⡆⠀⠀⠜⠉⢹⠉⠉⠀⠀⠀⠀⠈⠂⠀⢠⠃⠀ ; ⠀⣇⣸⡜⢘⢜⠀⠀⠠⠜⣊⢭⠻⡩⠋⠀⠀⢀⠜⠀⠀⠀⡇⠀⠘⡔⢠⠒⢺⢄⠀⠀⠀⠀⠀⣀⡠⠔⠁⠀⠈⠉⠉⢹⠉⠉⠉⠀⠀⢀⠀⣀⠔⠁⠀⠀ ; ⠀⠁⠚⠊⠁⠀⠑⠀⠀⠀⠐⠊⠉⠈⠒⠀⠐⠁⠀⠀⠀⠒⠁⠀⠀⠁⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀"

(braille-banner:string-to-braille "いくえ不明") ;=> "⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡱⠀⠀⠀⠀⠀⠈⠒⠂⠀⠀⠀⠐⠒⠒⠒⡖⠒⠒⠀⢰⠒⢲⠀⡖⠒⡆⠀ ; ⠀⡇⠀⡀⠈⠑⡄⠀⠀⠀⡔⠊⠀⠀⠀⠀⠀⠈⠒⡪⠋⠀⠀⠀⠀⢀⡠⢺⠢⢄⠀⠀⢸⠒⢺⠀⡗⠒⡇⠀ ; ⠀⠱⡜⠀⠀⠈⠃⠀⠀⠀⠈⠢⡀⠀⠀⠀⠀⡠⠚⢢⠀⠀⠀⠀⠈⠁⠀⢸⠀⠀⠑⠀⢸⠒⠺⢠⠓⠒⡇⠀ ; ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠁⠀⠀⠉⠉⠁⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠐⠁⠀⠐⠃⠀"

まとめ

動作は一応、SBCL・Allegro CL・ECL・CCL・LispWorks・ABCLで確認しています。CCLはターミナルだとどうも出力が変みたいです。
ちなみに、これで昨年Twitterに『謹賀新年』は出してみましたが、あまりウケてませんでした。

comments powered by Disqus