マクロツイーター

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

BXjscls も新しくなった(補足)

BXjscls が新しくなった話の補足として、BXjscls に含まれる文書クラス(BXJS クラス)の試験的機能について紹介する。

jafont=auto 設定

以前に述べたように、新しい BXJS クラス(の standard 和文ドライバ)では、jafont というオプションで使用する和文フォントのプリセットを選択できる。

% ヒラギノProNを選択
\documentclass[a4paper,xelatex,ja=standard,jafont=hiragino-pron]{bxjsarticle}

もちろん、jafont を指定しない場合は以前の版(v0.9pre)と同じ設定になるのであるが、その具体的な内容は以下のようになっている。

  • pLaTeX/upLaTeX では“無指定”。
  • pdfLaTeX では Type1 版*1の IPAex フォント。
  • XeLaTeX/LuaLaTeX では本物(TrueType 形式)の IPAex フォント。

ここで“無指定”というのは「DVIウェアのマップ設定に従う」(つまり「pxchfon等の“文書中でフォントマップを設定する機能”を用いない」)ということである。ところで、TeX Live の場合は、kanji-config-updmap コマンドを使って「DVIウェアのマップ設定の中の、標準和文フォント設定」を変更することができる。すなわち、

# ヒラギノProNを既定にする
kanji-config-updmap hiragino-pron

を実行すると、それ以降は、“無指定”は hiragino-pron と実質的に等価になるといえる。

この「kanji-config-updmap の設定に従う」という設定を (u)pLaTeX 以外のエンジンで実現するのが「jafont=auto」という設定である。すなわち、上記の kanji-config-updmap コマンド行を実行した後で

% "現在の既定"に従う
\documentclass[a4paper,xelatex,ja=standard,jafont=auto]{bxjsarticle}

という設定を用いると、それは jafont=hiragino-pron と等価になり、和文フォントとしてヒラギノ ProN が使われることになる。

注意事項

jafont=auto」は以下のような仕組みで実現している。

  • kanji-config-updmap コマンドで設定された値、すなわち“updmap の kanjiEmbed 変数”の値を調べる。
    • このために、updmap の設定ファイルを kpsewhich コマンドで探して、そのファイルの中身を読んでいる。
  • あとは jafont にその値が指定されたものと見做す。

要するに、“名前が同じ設定”を使っているだけで、updmap 側のマップファイルを実際に参照しているわけではないので、当該のエンジンでその“名前”のプリセットが用意されてなければ使えない*2し、使えた場合も、updmap のものと全く等価な設定であることは保証されないことに注意してほしい。あと、当然ではあるが、kanji-config-updmap がないシステム(W32TeX 等)では jafont=auto は機能しない。((現状では、“updmap の設定が取得できない”場合は jafont=auto の設定は黙って無視されるようになっている。この挙動は将来変更される可能性がある。))

*1:ipaex-type1 パッケージ。

*2:プリセット設定を行うパッケージ(zxjafont 等)で「そのオプションは無効」というエラーが出る。