dvipdfm の日本語化

14 Sep 2001

目次

以下は別のファイルに分けてあります


このページについて

ここは dvipdfm で日本語を通そうというページです。

dvipdfm は PDF への出力を可能にする DVI ドライバです。 TeX/LaTeX から生成される DVI ファイルを PDF へ変換します。 dvipdfm は欧文の Type 1 フォントへの対応はだいぶできているようですが、 そのままでは日本語をうまく取り扱えませんでした。 そこで、dvipdfm をとりあえず日本語も通すようにするパッチを作ってみました。 目的をもう少し具体的に言うと、 アスキー pTeX の拡張に対応したり、和文フォントを CID-keyed フォントでちゃんと扱うようにしようということです。

ブラウザで最優先する言語を Japanese [ja] にしておかないと

Only Japanese version is available.
とだけ書かれたページにいってしまいます。 サーバから
Content-Type: text/html; charset=iso-2022-jp
を送りたいだけなのですが、設定ができない方は申し訳ありません。

新着情報

2001-09-14:
初期化が充分でないというバグがありましたので修正しました。

2001-09-13:
少し細かい事ですが、vf を使う場合に文書中で使用 (参照) されていないフォントが埋め込まれてしまうことがあるようです。 誤って埋め込まれるフォントには .notdef しか含まれていないのですが、 このせいで若干ファイルサイズが大きくなってしまいます。 PDF ファイル中に無駄なものが存在するというだけで、 表示その他には障害はでません。

2001-09-11:
out2uni.c を更新。 gcc-3.0/glibc-2.2 の環境で最適化オプションを付けるとコンパイルできないという問題があったため修正。

2001-09-09:
レシピを更新。

2001-09-07:
FreeBSD の ports に加わりました (japanese/dvipdfm)。

過去の情報


配布物

ソース

make するのに必要なものについては `INSTALL.jis' を参照して下さい。 dvipdfm のソースは `The dvipdfm page' から取得して下さい。

日本語化パッチ (2001-09-14):

これらは dvipdfm-0.13.2c に対するものです。 他のバージョンでうまくいくかは一切確認していません。 古いパッチが必要な方は私のところまで。

そのほか:

なにか問題があったらまず `トラブルシューティング' を見て下さい。

バイナリ

dvipdfm のソースコードに対する差分として配布しているので、 基本的には自分でコンパイルする必要があります。 しかし、パッチをあてた状態で作った dvipdfm のバイナリを配布して下さる方がいますので、 特にコンパイラ等の開発環境が利用できない方はそちらの方へお願いします。 Solaris 2.6, Digital UNIX 4.0F でも動作したそうですが、 ファイルサイズが異様に大きくなるそうです (zlib あたりかもしれません)。 FreeBSD/Alpha でも動きました。 big-endian と little-endian で問題がでることはないと思います。

できる事とできない事

アスキー pTeX で動作確認を行なっています。 NTT JTeX でも、角藤さんが配布しておられる virtual font (vf-n2bk.tar.gz) があれば大丈夫だという報告を頂きました。

必要最小限のことはできるのではないでしょうか。 dvipdfm 本体にはほとんど手を入れていないので、 パッチを当ててもハイパーリンクなどの部分も問題なく使えると思います。 足りない機能のうちおそらく最も重要なものは和文フォントを PDF 文書に埋め込むことができない事です (PostScript Type1 の Symbol フォントとしてごまかす場合を除く)。

対応していない主な機能:

ちゃんと読める PDF を作りたいだけなら充分だと思います。

注意事項

日本語化パッチなど私の手による配布物の利用や再配布に関しては dvipdfm と同じ条件が適用されます。 このサイトで配布されているものに起因して生じる弊害等について、 私は一切責任を負いませんので御了承下さい。

私は C についての知識はほとんど持ち合わせていません。 このパッチは perl の知識を頼りに、半分は私の C の勉強の目的で作られました。 PDF, TeX についても充分な知識を持っているわけではありません。 変な事をやっているかもしれないのでおかしい所があったら教えて下さい (結構怪しい)。 これまで Fortran 77 と Perl くらいしか使った事がないので、文字列の処理、 ポインタ、動的なメモリ領域の確保/解放などについて充分な知識と経験がありません。 特にこれらの部分が怪しいです。