TeX Alchemist Online

TeX を使って化学のお仕事をしています。

「ことばのおもみ」の自動測定

展示「ことばのおもみ」

現在,六本木の東京ミッドタウンで開催中の「単位展」が,面白いと評判のようです。

企画展「単位展 — あれくらい それくらい どれくらい?」

会期:2015年2月20日(金) - 2015年5月31日(日)

休館日:火曜日(5月5日は開館)

開館時間:11:00 - 20:00(入場は19:30まで)

主催:21_21 DESIGN SIGHT、公益財団法人 三宅一生デザイン文化財団

後援:文化庁、経済産業省、港区教育委員会

その中で,「ことばのおもみ」という展示があり,文字の「おもさ」を比較する体験ができるそうです。

使用フォントによる違い

しかし,これに対して使用フォントによって「おもさ」が違うのではないかという疑義も呈されています。

XeLaTeX + TeX2img + ImageJ による「おもさ」測定

そこで,XeLaTeX + TeX2img + 画像解析ツールImageJ の組み合わせによって,使用フォントの違いによる「おもさ」の違いを分析してみようという試みが,次の記事においてなされました。

acetaminophen.hatenablog.com

「ことばのおもみ」測定の自動化

この試みをさらに発展させ,フォントと「ことば」を与えれば,自動的に「ことばのおもみ」(黒いピクセルの個数や率)を測定してくれるRubyスクリプトを作ってみました。

Gist:「ことばのおもみ」自動測定スクリプト

これにより,ImageJ を用いて手動で測定する必要がなくなります。また,ImageJ が依存するJavaを別途インストールする必要がなくなるのも嬉しい点です。

動作環境

動作に次が必要です。

  • Ruby 1.9 以上
  • XeLaTeX
  • Ghostscript

動作確認は OS X 10.10 Yosemite + TeX Live 2014 で行いました。他のOSの環境でも,パスやコマンド呼び出しの書式などを少し修正すれば動くでしょう。

使用法

例えば

$ ./wordweight "ヒラギノ明朝 ProN W3" おもい

とすると,

  1. fontspecを用いた XeLaTeX ソースを生成
  2. そのソースを XeLaTeX でコンパイル
  3. 得られたPDFを Ghostscript でbmpファイルに変換
  4. その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}