フォント・DB 管理コマンド

これらは毎日打つコマンドではなく、TeX 環境の 整合性を保つための保守ツール です。updmapkanji-config-updmap は「どのフォントを PDF に埋め込むか」を管理し、mktexlsrfmtutil は TeX が頼る データベースと事前生成フォーマット を更新します。フォントやパッケージを手で入れたとき、あるいは「ファイルが見つからない」ときに出番が来ます。

保守ツールは「探す」「埋め込む」「起動する」を直す

TeX の故障は大きく三つに分けると見通しがよくなります。ファイルを置いたのに見つからないなら 探索データベース、PDF のフォントが思ったものにならないなら フォントマップ、エンジンが起動時に .fmt を読めないなら フォーマットファイル の問題です。mktexlsrupdmapfmtutil はそれぞれこの三つを直す道具です。闇雲に全部を叩くより、どの層が壊れているかを先に決めると、共有環境や CI を汚しにくくなります。

updmap — フォントマップを管理

DVI ドライバ(dvipsdvipdfmx)や pdftex は、TeX 上のフォント名と 実際のフォントファイル の対応、そして埋め込み方法を フォントマップ から知ります。updmap は、有効化されたマップファイルと設定をまとめて、その合成マップを再生成するコマンドです。新しいフォントのマップを有効にしたあとに走らせます。updmap-sys はシステム全体(管理者権限)、updmap はユーザ個人の設定(システム設定を上書き)に作用します。

設定は --setoption キー 値updmap.cfg に書き込み、マップは --enable Map foo.map / --disable で出し入れします。変更後に updmap(または updmap-sys)を実行すると反映されます。実務上の注意は、ユーザ設定とシステム設定を混ぜないことです。共有マシンや CI では updmap-sys に統一し、個人の試行錯誤だけ updmap に留めると、別の人の PDF だけフォントが変わる事故を避けられます。

terminal
updmap-sys --enable Map myfont.map   # マップを有効化 / enable a map
updmap-sys                           # 合成マップを再生成 / regenerate the maps

kanji-config-updmap — 埋め込む日本語フォントを選ぶ

日本語(CJK)の埋め込みフォントは、dvi→pdf 変換(dvipdfmx)の段階 で決まります。それを選ぶ手軽な道具が kanji-config-updmap(texjporg)。内部では updmapjaEmbed(旧 kanjiEmbed)オプションを設定し、よく使われる和文フォントを探して切り替えます。status で現在の設定を確認、auto で自動選択、フォント名を渡せばその系統(例:ipaexhiragino-pronnoto-otc)に切り替わります。

terminal
kanji-config-updmap-sys status   # 現在の和文フォントを表示 / show the current font
kanji-config-updmap-sys ipaex    # IPAex フォントを埋め込む設定に / embed IPAex

mktexlsr / texhash — ファイル DB を更新

TeX は kpathsea ライブラリと ls-R というファイル名データベースを使い、巨大な texmf ツリーから目的のファイルを高速に探します。手でファイルを texmf ツリーに置いた だけでは TeX はそれを認識しません。mktexlsr(別名 texhash)で ls-R を再構築すると、新しいファイルが見つかるようになります。

terminal
mktexlsr        # ls-R を再構築(= texhash)/ rebuild ls-R (same as texhash)

fmtutil — フォーマットを再生成

pdflatex などは、起動時に フォーマットファイル(.fmt、例:latex.fmt を読み込みます。これは「フォーマット(LaTeX など)を読み込んだ直後のエンジン状態」を丸ごと保存したもので、毎回ゼロから読み直さずに 素早く起動 するための仕組みです。fmtutil はこの .fmt を再生成します。フォーマットに関わる変更をしたときや、.fmt が壊れ「format file が見つからない」エラーが出たときに使います。fmtutil-sys はシステムツリーに作用し、fmtutil --byfmt latex で 1 つだけ、fmtutil-sys --all で全部を作り直します。ふつうのパッケージ追加で毎回実行するものではなく、エンジン起動時の異常を直す最後の保守手段だと考えます。

terminal
fmtutil --byfmt pdflatex   # pdflatex の .fmt を作り直す / rebuild just pdflatex
fmtutil-sys --all          # すべてのフォーマットを再生成 / rebuild every format

直す順番を決める

  • kpsewhich mypackage.sty で見つからなければ、TEXMF の置き場所と mktexlsr を確認します。
  • PDF の日本語フォントだけがおかしいなら、まず kanji-config-updmap-sys status で現在の jaEmbed を見ます。
  • 欧文フォントを追加した直後だけおかしいなら、対象の .mapupdmap-sys --enable Map ... で有効化したかを確認します。
  • I cannot find the format file のようにエンジン起動前で止まるなら、fmtutil --byfmt でそのフォーマットだけ作り直します。

いつ使うか

  • フォントを手で入れたupdmap(日本語の埋め込みは kanji-config-updmap)。
  • ファイルやパッケージを texmf に手で置いたmktexlsrtexhash)。
  • フォーマット関連を変えた/.fmt が壊れたfmtutil
  • ふだんは TeX Live マネージャ tlmgr がこれらを自動で呼ぶので、手で叩くのは保守のときだけです。