マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

「踊れる TeX ネタに関するアレ」に関する何か (1)

2014/12/01 〜 2014/12/25

TeX & LaTeX Advent Calendar

〜たかが TeX、されど TeX
*  *  *

例の踊れるネタに関する解説。

あるいは、コレを解読しようとしたらアレがアレだったのでムシャクシャしてアレした、という話。

そのフォント、結構アレ

CTAN に“踊る人形”のフォントがあることは知っていた。*1というわけで、早速 CTAN に行って “dancing” で検索して、件のフォントの METAFONT ソースファイル名が dancers.mf であり、また TeX Live に含まれていることを確認した。

だけど、この dancers というフォント、かなり曲者なのである。CTAN の説明文にも

it works poorly in modern environments, and could do with expert attention

と書かれている通り、普通に (La)TeX を実行した時に行われる自動 MF 実行では、以下のような理由で正常な出力が得られないのである。

  • 解像度の指定が無視される。つまり MF 実行時の dpi の値*2に関わらず、常に“同じ(サイズの)ビットマップ”を生成しようとする。だから、dpi の値が大きいと、相対的に“形”の部分が小さくなって隙間だらけになってしまう。例えば、次のようなソースがあったとする。

    % plain TeX
    \font\dancers=dancers
    AAA{\dancers comE}BBB\bye
    

    これを 600dpi(TeX Live の既定)で PDF に変換すると以下のようになってしまう。

    取りあえず、解像度を 300dpi にして組版することにした。自分は pdfTeX を使っていたので、次の設定を加えた。

    \pdfpkresolution=300
    

    これで以下のような出力になる。(最適な値はもう少し小さいかも知れない。)

  • 前項の理由により、このフォントはサイズを変えると、字幅だけ変わって肝心の“形”のサイズが変わらない。なので結局デザインサイズの付近のフォントサイズでしかまともな出力が得られない。ところが何故か、デザインサイズが 128pt という変な値になっている。(理由は不明。*3

    だから、“普通に”以下のように LaTeX の設定をすると都合が悪い。

    \DeclareFontFamily{U}{dancers}{}
    \DeclareFontShape{U}{dancers}{m}{n}{<->dancers}{}
    

    何故かというと、LaTeX で普通に使われるのは 10pt 近辺のフォントサイズだからである。そこで、10pt を指定したときに 128pt(デザインサイズ)になるように、NFSS での拡大を指示しておく。

    \DeclareFontShape{U}{dancers}{m}{n}{<->s*[12.8]dancers}{}
    
解決、と思ったらアレ

これでようやく a〜z の字形を全て打ち出した“解読表”を作ることができる。これで大勝利!

というわけで、問題の図の解読をさっさと済ませようと思ったが、何やら様子がおかしい……。

こんな奴、どこにも居ないじゃないか!!*4 なんでナンデ!?

(続く)

*1:私も「美文書」を見たからかな?

*2:これは mode と mag の値から決定される。

*3:これは TFM の中身を(tftopl 等を使って)調べれば解る。

*4:〈d〉に似ているが腕の長さが全然違っていて、長さは〈t〉に近い。元の画像の解像度が低いといっても、同じフォントのレンダリング結果がここまで違うことはあり得ない。