展示「ことばのおもみ」
現在,六本木の東京ミッドタウンで開催中の「単位展」が,面白いと評判のようです。
会期:2015年2月20日(金) - 2015年5月31日(日)
休館日:火曜日(5月5日は開館)
開館時間:11:00 - 20:00(入場は19:30まで)
主催:21_21 DESIGN SIGHT、公益財団法人 三宅一生デザイン文化財団
後援:文化庁、経済産業省、港区教育委員会
その中で,「ことばのおもみ」という展示があり,文字の「おもさ」を比較する体験ができるそうです。
愛なんて金の前には真っ二つだよ pic.twitter.com/4LcqVQJcwQ
— ぐるぐるうづまき (@guruguruuzumaki) February 28, 2015
これくっそわろた pic.twitter.com/Md9AHWIilw
— 泳ぐどんぐりฅ(◉ ᾥ ◉)ฅ (@appollollon_) February 26, 2015
使用フォントによる違い
しかし,これに対して使用フォントによって「おもさ」が違うのではないかという疑義も呈されています。
単位展ぽいなという写真はこれなんだけど、実際はフォントで変わるんだよなこれ。単位とは何か、つきつめきれてないとこが甘い pic.twitter.com/uqXDJq1s7R
— μなと (@ghost_orange) March 9, 2015
単位展、文字の重さ測るのについてはフォントも変えられたら面白いと思った。
— りなやんᵋ₍ ° ɷ ° ₎ᵌ (@3232R) March 20, 2015
XeLaTeX + TeX2img + ImageJ による「おもさ」測定
そこで,XeLaTeX + TeX2img + 画像解析ツールImageJ の組み合わせによって,使用フォントの違いによる「おもさ」の違いを分析してみようという試みが,次の記事においてなされました。
「ことばのおもみ」測定の自動化
この試みをさらに発展させ,フォントと「ことば」を与えれば,自動的に「ことばのおもみ」(黒いピクセルの個数や率)を測定してくれるRubyスクリプトを作ってみました。
これにより,ImageJ を用いて手動で測定する必要がなくなります。また,ImageJ が依存するJavaを別途インストールする必要がなくなるのも嬉しい点です。
動作環境
動作に次が必要です。
- Ruby 1.9 以上
- XeLaTeX
- Ghostscript
動作確認は OS X 10.10 Yosemite + TeX Live 2014 で行いました。他のOSの環境でも,パスやコマンド呼び出しの書式などを少し修正すれば動くでしょう。
使用法
例えば
$ ./wordweight "ヒラギノ明朝 ProN W3" おもい
とすると,
- fontspecを用いた XeLaTeX ソースを生成
- そのソースを XeLaTeX でコンパイル
- 得られたPDFを Ghostscript でbmpファイルに変換
- そのbmpファイルを解析して黒いピクセルの数・率を数える
という処理を行い,
Font name : ヒラギノ明朝 ProN W3 Font size : 100pt Word : おもい Resolution : 600dpi Total pixels : 2096661 Black pixels : 236544 Ratio : 11.28%
という出力が返ってきます。
書式
wordweight [-s size] [-r resolution] [-d] fontname words...
- -s size :フォントサイズを pt 単位で指定します。(デフォルト: 100)
- -r resolution :Ghostscript でbmpに変換する際の解像度(dpi)を指定します。(デフォルト:600)
- -d :デバッグ用に,作業用中間ファイルを削除せずに残します。
- fontname : "ヒラギノ明朝 ProN W3" のように,fontspecが認識するフォント名を指定します。
- words :「おもみ」を測定したい対象の単語を,1つまたは複数指定します。
内部処理
内部的には,次のような XeLaTeX ソースを生成してコンパイルすることでPDF化しています。
\documentclass{article} \usepackage{fontspec} \newfontfamily\theFont{ヒラギノ明朝 ProN W3} \pagestyle{empty} \usepackage[tightpage,active]{preview} \PreviewEnvironment{minipage} \parindent=0pt \begin{document} \setbox0=\hbox{\theFont\fontsize{100pt}{0pt}\selectfont おもい}% \ht0=88.0pt \dp0=12.0pt \begin{minipage}{\wd0}\box0\end{minipage} \end{document}