マクロツイーター

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

updmap-setup-kanji のアレな話

TeX Live で和文フォントの埋込の設定は updnap の kanjiEmbed(と kanjiVariant)オプションで行える。そして、この設定をより簡単に行うために TeX Live では updmap-setup-kanji(-sys) というコマンドが用意されている。例えば、IPAex フォントを埋め込む設定にしたい場合、次のコマンドだけで済んでしまう。(システムレベルの設定(updmap-sys での設定)を行いたい場合は updmap-setup-kanji-sys コマンドを代わりに使う。)((普通に updmap を使う場合、--setoption 付きで実行した後に何故かもう一度 updmap を実行する必要があったが、updmap-setup-kanji は一度だけ実行すればよい。))

> updmap-setup-kanji ipaex
Setting up ... otf-ipaex.map
(……この後 updmap が何回か走る)

引数に指定するのは kanjiEmbed オプションの値である。(非埋込は noEmbed。)また updmap-setup-kanji は必要なフォントがインストールされているかの検査を行うので、例えば次のように実物のフォントが無いのに morisawa を指定しようとしても失敗する。(後述の auto の動作にフォールバックする。)

> updmap-setup-kanji morisawa
morisawa not available, falling back to auto!
CURRENT family : ipaex
Standby family : ipa
Setting up ... otf-ipaex.map
(……略)

引数を auto にすると、「実際に使える設定の中のどれか」が自動的に選ばれる。無論そんな設定方法はアレである。*1

> updmap-setup-kanji auto
CURRENT family : noEmbed
Standby family : ipa
Standby family : ipaex
Setting up ... otf-ipaex.map
-jis2004 オプションがアレ

updmap-setup-kanji には -jis2004 というオプションがあって、これは丁度 updmap で kanjiVariant を -04 にする設定に相当する。そして、現状ではこの設定は「Pr6N/ProN 版のフォントを使う」ことを意味している(はずである)。つまり -jis2004 を付けると、使用されることになる実フォントファイルが変わる。ところが、現状の実装では、インストールされているかを検査するのに使う実フォントファイル名を -jis2004 を付けた時に変えるのを忘れているため、使用可能の判定を誤るという不具合がある。

例えばヒラギノの ProN 版(HiraMinProN-W3.otf 等)だけがインストールされていると仮定する。この状況で、-jis2004 付きの hiragino は使えるはずである。ところが実際にこの状況で

> updmap-setup-kanji -jis2004 hiragino

を実行すると設定は失敗してフォールバック動作になってしまう。

もっとも、昨日の記事にあるように「kanjiVariant を字形切替のオプションとする」という改修を行うと、-jis2004 オプションで使用するフォントは変化しないことになるので、この話はもはや問題でないのかも知れない。

それよりアレをなんとかしてください

これはコマンド名を変える以外に対処しようがないと思う……。


[2013-04-13 追記] コマンド名については、来る TeX Live 2013 から、「kanji-config-updmap」に変更されることになった。新しい版の updmap では kanjiVariant が「字形の変更」を意味しているので、本記事の「-jis2004 オプションがアレ」に書いた不具合は解消されている。

*1:具体的には hiragino, morisawa, kozuka, ipaex, ipa の順で「必要な実フォントがある」最初のものが選ばれる。どれも無い場合は noEmbed になる。ただし現在の設定が noEmbed 以外の(有効な)値の場合は変更されない。