ptetex3 のフォントの集中管理 †背景 †オリジナルの teTeX-3.0 には updmap(-sys) コマンドによる、 欧文フォントの集中管理機構があります。 TIPA のインストールなど、 新たなフォントを使う場合には、map ファイルをしかるべき場所に置き、 updmap(-sys) コマンドで登録すれば、dvips/dvipdfmx/xdvi/pdftex などのツールでの フォント設定がすべて完了します。
和文フォントには、このような機構を teTeX が準備してくれるはずもありませんので、 ptetex3 では iNOUE Koich! 氏の teTeXのupdmapをdvipdfmx用に改変する を使わせて頂いて、 dvips/dvipdfmx/xdvi の設定を一元化しています。
フォントの置場 †TeX で使う TrueType フォントや OpenType フォントの置場は、 $TEXMF/fonts/truetype や $TEXMF/fonts/opentype に決まっています。 しかし OS (X11) の使うフォントの置場は違うところにあるでしょう。 巨大なフォントファイルをコピーするのは無駄ですから、 シンボリックリンクをこの下に張ればよいでしょう。
dvipdfmx/xdvi がどうやってフォントを探しているかと言うと、 次のようなコマンドを内部的に実行しています。 kpsewhich -format="truetype fonts" msmincho.ttc kpsewhich -format="opentype fonts" hoge.otf xdvi でのディフォルトフォントの設定 †dvips や dvipdfmx では、「ディフォルトの明朝/ゴシックのフォント」 (Ryumin-Light と GothicBBB-Medium) を持っています。 実際に使われるフォントは、小塚であったりヒラギノであったりさざなみであったり、 ビューアの設定次第でいくらでも変化します。TeX の管轄外です。 ところが xdvi はディフォルトのフォントを持っていません。 それを指定するのが、次のコマンドです。 updmap-sys --setoption xdviRml mincho-font.ttf updmap-sys --setoption xdviGbm gothic-font.ttf dvipdfmx の設定で、Ryumin-Light や GothicBBB-Medium と指定されたものを、 xdvi の設定ではこの指定に従って置き換えます。
和文フォントの設定 †和文フォントの設定で、情報量が一番多いツールは dvipdfmx です。 iNOUE Koich! 氏の拡張では、この dvipdfmx の設定を元に、 dvips/xdvi の設定ファイルを生成します。
和文の map ファイルは $TEXMF/fonts/map/dvipdfm/(xなしです)以下に置きます。 例えば hoge.map というファイルを rml H !Ryumin-Light rmlv V !Ryumin-Light gbm H !GothicBBB-Medium gbmv V !GothicBBB-Medium のような内容で作り、root になって mktexlsr && updmap-sys --enable KanjiMap=hoge.map を実行すれば、dvipdfmx/dvips/xdvi の設定がまとめて完了します。 updmap-sys コマンドで設定が反映されるファイルは、以下の通りです。 $TEXMF-config/web2c/updmap.cfg (map ファイル名) $TEXMF-var/fonts/map/dvips/updmap/psfonts.map (dvips 用) $TEXMF-var/fonts/map/dvipdfm/updmap/kanjix.map (dvipdfmx 用) $TEXMF-var/fonts/map/xdvi/updmap/vfontmap (xdvi 用) 多重TEXMFツリー にあるように、updmap コマンドを使った場合は、 個人設定となって、$HOME 以下のファイルに保存されます。 当然ながら、dvips/dvipdfmx/xdvi でのフォント設定ファイルの書式は異なります。 updmap(-sys) がこの差異を吸収しているわけです。 dvips のフォント設定 †dvips のフォント設定には、極端な言い方をすれば、 どのようなフォント名を書こうとそのまま PS ファイルに出力されてしまいます。 それを解釈できるかどうかは、ghostscript や PS プリンタの 設定次第であるとも言えます。 updmap(-sys) との整合性を考えると、 dvipdfmx 用の map に書くフォント名は、 (本来はファイル名を書くところなのですが) 「(ghostscript に登録された PS フォント名)+拡張子」 であることが望ましいです。 フォントのファイル名と PS フォント名が一致していると、 dvips の設定も updmap(-sys) で一元管理できるということです。 ところで、dvips で出力した PS ファイルには、 和文フォントの実体は埋め込まれておらず、 たとえ ghostscript での設定により、画面上では表示できたとしても、 PS プリンタでは印刷できないことがあります。 こういう場合は、ghostscript 付属の ps2ps コマンドを利用することにより、 フォントを埋め込んだ(すなわち該当フォントを持たない PS プリンタでも印刷できる) PS ファイルに変換することができます。
フォントの埋め込み/非埋め込み制御 †updmap(-sys) の本来の仕事ではないのですが、 Mac OS X などで、ヒラギノや小塚といった高品質のフォントを持っている方は、 どのフォントを埋め込むかという制御に updmap を使われることがあるようです。 ヒラギノの時の map と小塚の時の map を、組織的に入れ換えれば OK のようなので、 iNOUE Koich! 氏の拡張に、さらに若干の拡張をして、 updmap-sys --setoption kanjiEmbed noEmbed (埋め込まない場合) updmap-sys --setoption kanjiEmbed hiragino (ヒラギノを埋め込む場合) のようなオプションを用意しました。 updmap-sys --enable KanjiMap=ptex-@kanjiEmbed@.map などと map ファイル名に @kanjiEmbed@ という文字列が含まれていれば、 その部分が kanjiEmbed で指定した noEmbed や hiragino といった文字列に 置き換わると言うものです。
map で許される書式/許されない書式 †dvipdfmx の map の書式は機能豊富で、 dvips/xdvi では処理できないものがあります。 .... 多書体の設定例 †
|