LAST MODIFIED: 2004/07/24 19:43:13 UTC
不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。
「japanese/teTeX でインストールされる xdvi は VFlib 版ですが、dvips が VFlib 版でないのはなぜでしょうか」という質問をいただきました。
まず、xdvi と dvips の現状について説明します。 japanese/xdvik-vflib は、 xdvik-22.40y1 をベースに、 http://www.nn.iij4u.or.jp/‾tutimura/tex/xdvi.html で公開されている日本語化パッチを追加したものです。 このパッチは、日本語フォントを表示するために VFlib、もしくは FreeType を使います。現在の ports ツリーに入っている日本語対応 xdvi は、これが唯一です。
一方、dvips は japanese/dvipsk と japanese/dvipsk-vflib があります。 前者は teTeX に含まれている dvipsk 5.92b に ASCII が配布している日本語化パッチを追加したもの、 後者は dvipsk 5.78 を日本語化し、さらに VFlib 対応パッチを加えたものです。 ただし、dvipsk-vflib はバージョン番号から予想できるように、 まともに保守されていません。VFlib 対応パッチが更新されていないため、 pTeX のバージョンアップからだいぶ取り残されてしまっています。
次に「VFlib 対応」とは何なのかを説明します。VFlib は、 日本語のアウトラインフォントを操作するライブラリのひとつです。
xdvi の場合、日本語フォントを使って画面に表示しなければなりませんから、 日本語対応させるには、VFlib のようなライブラリが必須です。 japanese/xdvik-vflib があるのに、japanese/xdvik がない、というのは そういう理由です。もっとも、現在 xdvik-vflib は、VFlib ではなく デフォルトで FreeType を使うように変更してあります。 port 名も japanese/xdvik に変更する予定です。
一方 dvips は、ちょっと事情が異なります。誤解されている方も多いかと思うのですが、 日本語 TeX を使う上で、dvips の VFlib 対応が必須というわけではありません。
dvips は、ASCII の日本語化パッチを追加すると Ryumin-Light や GothicBBB-Medium などのフォントの使用を認識して、PostScript ファイルにフォント名を書き込みます。正確な対応表は (japanese/teTeX をインストールしているなら) share/texmf/dvips/ptex/ptex-kanji.map にあります。
一方 VFlib に対応した dvips は、フォント名ではなく、 フォントを展開した画像データとして、PostScript ファイルを生成します。 つまり日本語の部分は画像になるわけです。
これは利点と欠点があります。フォント名だけを埋め込んで生成した PostScript ファイルはサイズが小さくなりますが、そのフォントを持っていないプリンタでは印刷できません。 Ryumin-Light や GothicBBB-Medium は日本語 PostScript プリンタなら大抵持っていますが、 欧文専用の PostScript プリンタでは出力できないファイルになります。 反対に、VFlib 対応版で生成したものは、欧文専用 PS プリンタでも出力できますが、 サイズが非常に大きくなります。
さて、japanese/teTeX でインストールされるものですが、 原則的に VFlib を使わない方を標準にしています。 こう判断した理由は、以下のとおりです。
dvips や xdvik が使っている VFlib は 2.25 と非常にバージョンが古く、 VFlib の構築にはたくさんの依存物が必要になる。
VFlib 非対応版 dvips が生成した PostScript ファイルでも、 Ghostscript で処理すれば、 日本語部分だけを画像化することは可能。
dvips の日本語化パッチは ASCII が保守していて pTeX のバージョンアップとともに新しくなっているが、 VFlib 対応パッチは積極的に保守されていない。 今後、pTeX がバージョンアップを続ければ、 VFlib 対応版 dvips だけ古い、という状態になってしまう。
よく使われているフォントを使っている限り、通常の利用において VFlib 対応のあるなしを意識することは稀だと思います。 PostScript プリンタを使っていて、プリンタが対応していないような 特殊な日本語フォントを使っている場合でも、Ghostscript を使ってフォントを展開することが可能ですので、 どうしても困るということはないでしょう。 PostScript プリンタを使っていないなら、どちらを使っても同じです。
簡単にまとめます。
japanese/xdvik-vflib は、 日本語フォントの表示に print/freetype2 を使います。 VFlib は使いません。
japanese/dvipsk は、日本語化された dvips です。 日本語フォントは、フォント名として扱います。 出力された PostScipt ファイルは、 そのフォントを持っている PS プリンタでのみ印刷可能なものになります。 japanese/teTeX でインストールされるのは、こちらのバージョンです。
japanese/dvipsk-vflib は、日本語化された VFLib 対応版 dvips です。 日本語フォントは、画像に展開して扱います。 出力された PostScipt ファイルは、 そのフォントを持っていない PS プリンタでも印刷可能です。 ただしバージョンが古く port も未整備なため、 現在は japanese/teTeX と共存できません。
ちなみに、昔の VFlib 対応版とはフォントの設定場所が異なります。 dvips は share/texmf/dvips/ptex/ptex-kanji.map を xdvi は share/texmf/xdvi/vfontmap を、日本語フォントの対応表として使います。
おそらく dvips の方を変更しなければならないケースはほとんどないでしょう。 xdvi は東風フォントを標準にしていますが、 vfontmap ファイルを書き換えれば、画面表示に使う日本語フォントを変更することができます。 これは画面表示のみに影響するもので、印刷とは無関係です。
「japanese/ptex は japanese/ptex-tetex に置き換えられる」とか 「japanese/ptex-tetex は texmf.cnf を書き換える必要がある」とか「dvips や xdvi が動かない」とかいうのは、根拠のない噂です。 japanese/teTeX が信用できない人は、 japanese/ptex 使うとか、自分でインストールするとかしましょう。
古い dvips や xdvi を入れたままにしている、 $TEXMFCNF とか $TEXMFMAIN とか $TEXMFLOCAL とかの環境変数を自分で定義している、 share/texmf に古いファイルが残っている、 あたりがインストールに失敗する典型例のようです。
teTeX の設定を理解している人向けの説明。
japanese/ptex-tetex は、texmf.cnf を $TEXMF/web2c-ptex にインストールします。 「$TEXMF/web2c にコピーしなきゃいけないんじゃないか」と考える人がいるかも知れませんが、 ptex-tetex はデフォルトの TEXMFCNF に手を入れてあって、 $TEXMF/web2c-ptex → $TEXMF/web2c の順に texmf.cnf を探すようになっています。 つまり、teTeX と pTeX とで、使っている kpathsea のデフォルト値 (ハードコードされている) が違っているわけです。 print/teTeX-base でインストールされる kpsepath などは、 $TEXMF/web2c を最初に見に行きますので、pTeX の場合のファイル検索順を 調べたい場合には、$TEXMFCNF を適切に設定しましょう。
NTT JTeX も同様に、$TEXMF/web2c-jtex を先に見に行くようにしてあります。 最初は統合しようと思っていたのですが、分離しておかないとアップグレードが難しくなりますし、 texmf.cnf がひとつだと、dvips を 2 個入れるというような芸当ができなくなるので、 今のような形になっています。
share/texmf-* がどう使われるかについては、texmf.cnf を読めば理解できると思います。
気づいたら半年くらいほったらかし。
users-jp 80203 でざっと説明してみる。 まあ ports が複雑なのも悪いんですが、maintainer がバラバラなのでなかなか難しいところです。 いろいろな人に問い合わせて、maintainer 変わってもらえる場合は引き受けて、 ダメって言われたものは別 ports を作ってます。 print/xdvi と print/xdvik とか、print/dvips と print/dvipsk-tetex とか、 似たようなものがぽこぽこあるのは、そんな理由。 日本語関係のは、これでもだいぶ数減らしましたけどね。
最近の (teTeX ベースになった) TeX 環境の設定は解説している資料が少ないような気がするので、 ハンドブックにでも入れようかと考え中。 「日本語 TeX って何を入れたらいいのか良くわかりません」っていう人は、 今入っている TeX 関連の package を全部消して、 念のため /usr/local/share/texmf も全部消して、 japanese/teTeX を入れましょう。 何も悩まなくても、日本語が使える xdvi と dvips が入るようになってます。 クラスファイルとかフォントとかいじっているなら、share/texmf のバックアップをとって、必要な部分だけ share/texmf-var にコピーしてください。
"ptex-tetex FreeBSD" とかで検索すると、japanese/ptex はもう使えなくなるとか、 入れ換えようとしてハマりましたとかいうのが引っかかるみたい。 得られる環境はほぼ同じですが、両者は (ports レベルの) 構造が根本的に違うものなので、 中途半端に入れ換えても動きません。そもそも、昔の print/teTeX や japanese/ptex は、構成要素を中途半端に入れ換えると不整合をおこしやすい構造を持っていて、 今回の ptex-tetex やら何やらは、それが嫌でつくったものなのです。
LAST MODIFIED: 2004/07/24 19:43:13 UTC