------------- jx11dvi.doc by 沢田石 順 -------------------------------- ■ はじめに □ OS/2 で 日本語DVI ファイルをpreview したい !! 1997年の12月より XFree86 for OS/2で 日本語xdvik 20-aを使いたくて メイクにトライしてきましたが果たせず。日本語xdvik-20cも xdvi.exeが メイクできるところにまでいくのですが、どういじっても未だに core dump していまいます。   萩原さんがOS/2に移植されたxdvik-18fは、 http://katayama-www.cs.titech.ac.jp/~hagiwara/os2/in-this-directory.html にあるのですが、いろいろやっても日本語DVIの表示ができておりません。みな さまはどうでしょう?? そんなわけで、萩原さんの xdvi は欧文の DVI を previewすることに使わせていただいております。 さて VFlib 2.23p0が FreeTypeに対応したのでghostscriptをリビルドして、 Webにおいて一息ついていたところ、ふと角川先生が VFlib 対応の dvi viewer を公開されていることを思い出しました。さっそくトライしましたところ、 ソースを少々するだけで、めでたくコンパイルでき、webに置かせていただく次 第です。 角川先生、本当にありがとうございました。 jx11dviは日本語ghostscriptを使用している方であれば、"■インストール" の項のみ読めばおそらくそれで足りるので、実際の使用まで、速くて10分ほど で可能だと思います。 vfontcapって何? という方は、この文書は最初から順番にすべてに目を通し web pageなどから必要な情報を入手する必要があります。 ■ jx11dvi dvi2nwp.lsz-1.44\Doc.euc より引用 # TeX プリンタドライバ&プレビューアー # dvi2nwp.lsz # バージョン 1.44 19 June 1995 # # VFlib 対応 & 他のプリンタ対応 & pTeX 対応 # by 角川裕次 kakuawa@se.hiroshima-u.ac.jp # 広島大学工学部第二類(電気系)助手 #作成可能なプレビューアー/プリンタドライバの名前は、以下の通りです。 # jx11dvi --- X11 用のプレビューアー # dvi2nwp --- NWP537 プリンタドライバ # dvi2lp9000 --- LP-9000 プリンタドライバ # dvi2escpage --- ESC/Page プリンタドライバ # dvi2ndg6470 --- NDG 6470 プリンタドライバ # dvi2escp09 --- ESC/P09 プリンタドライバ # dvi2escp24 --- ESC/P24 プリンタドライバ このように dvi ビューアーの他にプリンタドライバもメイク可能なのですが、 dviの印刷は dviprtもghostscriptもOS/2で使用できるので jx11dvi.exe のみ コンパイルしました。 vfontcapさえうまく設定できれば、使用法はいたって簡単です。pk fontsの 自動作成機能がないので、フォントの不足があれば作成するなどの対処が 必要になります。jx11dvi はとてもシンプルな作りですが 日本語 DVIを OS/2で直接previewできることの意味は大きいと思います。 ■ インストールの前提 □ vfontcapの設定 日本語ghostscriptやVFlib対応 X serverを使用している方はそのまま vfontcap を使用できます。設定方法についてはここでは解説しません。私のweb page http://www2s.biglobe.ne.jp/~vtgf3mpr/ のghostscriptのページで解説がありますので、そちらを参照ください。角川先生 によるVFlib 2.2x の正式文書(man.ps/man.dvi)は ftp://gull.se.hiroshima-u.ac.jp/pub/VFlib/ にあります。VFlib 2.22なら VFlib-2.22-PL8.tar.gz、VFlib 2.23ならば TypeHack-19980604.tar.gzですが、後者は VFlib 3.4など膨大なソースを 含んでおりますので、前者を入手されることをお薦めします。 ただし、man.dvi は今回同梱させていただきました。 あるいは私のwebのghostscriptパッケージ(ライブラリの方)にVFlib 2.33p0 の正式な解説書や Q and A を同梱させていただいておりますので、 日本語ghostscript(6月13日にメイクしたものが現時点で最新版)を使ってみた い方はこちらをダウンロードするのもいいでしょう。 vfontcap は truetypeでもfreetypeでもどちらでも結構です。 OS/2付属のFHSG-W5.TTF and DFHSM-W3.TTF は vfontcap を freetypeとすると 使用できないことが確認されています。 □ 日本語 TrueTypeフォント: (TrueType以外の日本語フォントも使用できますが) DynaLabのものは使用できないものがおおいようです。リコーのHGシリーズや Win3.1/95付属のものなど動作確認されています。動作確認ができている日本語 TrueType fontsについては、man.ps/man.dviを参照のこと。 □ XFree86 for OS/2がインストールされていること 申すまでもありませんが、日本語対応サーバ(私のWebにある)でなくても、日本語 dviを表示できます。 □ TeXのフォントが導入されていること jx11dvi はポストスクリプトフォントを使用できません。 Computer Modern fonts(等)の pk files/tfm filesと日本語フォントのtfm files が導入されている必要があります。EC fontsの使用したい場合はファイル名に対応 するためにソースを適切に修正する必要があります。 TeXを導入済なら、cmr10.pk, cmr10.tfm, min10.tfm等がそろっているので話は 簡単です。1つだけ注意点があります。 ★cmr10.pkなどの pk fontsのディレクトリ配置が texmf/fonts/pk/dpi360/cmr10.pk /pk/dpi180/cmr10.pk このようにディレクトリ名が "dpi.数字"のところに解像度に応じて導入されて いるか、あるいは texmf/fonts/pk/cmr10.360pk /cmr10.240pk と、ディレクトリ内に"フォント名・解像度.pk"として存在している必要があり ます。 もしも、texmf/fonts/360/cmr10.pk /180/cmr10.pk このようになっている場合は、コンパイルしなおすかディレクトリ名を 変更する必要があります。 インストールの前提が満たされていれば、簡単に環境設定ができます。 日本語ghostscriptがうまく動作していれば次に進みましょう。 ■ 導 入 □ lha x jx11dvi.lzh として展開: dvi2nwp.lsz-1.44以下に解凍されます 1) PK fontsがtexmf/pk/dpi360/cmr10.pk と、dpiNNNというディレクトリ にDOSの8.3規約に従うファイル名で格納していれば、 jx11dvi-dosname.exe を jx11dvi.exeとリネームして、PATHの通った ところに移動。 cmr10.NNNpkという形式ならば、jx11dvi-longname.exe を同様に jx11dvi.exeと改名して移動。 NNN: dpiをあらわす自然数 2) NWFADJ/*.nwfadj を適当なディレクトリにコピー 3) 全くオリジナルそのもののvfontcap が同梱されていますので、 初めての方は参考にして下さい。 4) man.dvi を同梱していますので、後でお読みください。 □ 環境変数設定 set VFONTCAP=i:/gs5.10/kanji/vfontcap などと既に設定していると思います。 jx11dviは何も設定しないと、私がコンパイルした時のデフォルトの定数を 用います。ディレクトリは";"で区切って複数設定できます。 環境変数 意 味 デフォルト(改行していても 実際は一行です) ----------------------------------------------------------------------------- PK_FONT_DIR pkフォントの dpiNNNの親ディレクトリ j:/texmf/fonts/pk JFM_DIR 欧文文字と日本語の tfmファイル .;j:/texmf/fonts/public/ptex/ tfm;j:/texmf/fonts/public/cm/ tfm;j:/texmf/fonts/ec/tfm;j:/ texmf/fonts/tfm;j:/texmf/ fonts/public/latex/tfm NWFADJ_DIR NWFADJ/*.nwfadjのコピー先 j:/texmf/fonts/nwfadj --------------------------------------------------------------------------------- ★ PK_FONT_DIR: k:/texmf/pk/dpi360/cmr10.pk /dpi400/cmr10.pk このようになっていれば、dpiNNNの親ディレクトリを。 set PK_FONT_DIR=k:/texmf/pk l:/texmf/pk/cm/cmss12.288pk,cmr7.155pk このように longnameの PK fontsとして配置され ている場合は、 set PK_FONT_DIR=l:/texmf/pk/cm として下さい。 □ vfontcapファイルの改行コードは気にしなくてよし 私のWebにおいている日本語ghostscriptは vfontcapの改行がDOS式でも Unix式でも大丈夫ですが、 X serverは Unixの改行でないとエラーに なります。この度の jx11dvi は改行コードの問題はありません。 よって日本語ghostscriptと共有できます。 □ vfontcapのmin|min5|min6|min7.... の別名定義を確認 jx11dvi(VFlib対応 X serverもそうですが)は、日本語フォントの名前を 対応する tfmファイル名の basenameで dviファイルから読み込みます。 従って、環境変数 VFONTCAPで指定されたファイル(例としてvfontcapで以後は 考える)に当該 日本語フォント名がなければなりません。 通常、pLaTeXでは明朝に min10.tfm等を、ゴシックに goth7.tfm等を 用いて DVIファイルを生成します。すなわち、vfontcapの中に、 min10, goth7 等のエントリ名があり、なおかつ正しく日本語フォントの 実体を示していなければなりません。 ghostscriptのkcofig.psで /Ryumin-Light 4300000 (mincho) VFlibkanji /GothicBBB-Medium 4300200 (gothic) VFlibkanji /Ricoh-HG-Gyosyo 4300203 (gyosho) VFlibkanji このようになっているとします。 vfontcapでフォントの実体が、次のように r-ricoh-ttw-heisei-mincho-w3|Ricoh TrueTypeWorld Heisei Mincho W3:\ :ft=freetype:\ :ff=c\072/fonts/tt/hgrhm3sj.ttc: となっており、次の如く別名定義が連鎖していれば、 ricoh-heisei-mincho-w3:\ :fc=r-ricoh-ttw-heisei-mincho-w3: mincho:\ :fc=ricoh-heisei-mincho-w3 kconfig.psの gothicは、hgrhm3sj.ttcに対応しているわけです。ところが 上述のごとく、jx11dvi は vfontcapのみに依存してますから、 goth|goth5||goth6|goth7|goth8|goth9|goth10|goth12|goth17|Gothic Font:\ :fc=ms-mincho: もしも、min/goth(等)の tfm の basename(min10, goth12, etc)の別名定義 がこのように ms-mincho などとなっていれば、hgrhm3sj.ttc を使用せずに (もしきちんと設定されていればの話ですが)MS明朝(msmihco.ttf等)を使う ことになります。ms-minchoに対応するフォントが実際に存在してないと、もち ろんエラーになります。 このようにghostscriptでは kconfig.psで、mincho と指定することで hgrhm3sj.ttcが読み込まれていたのに、jx11dviでは別のフォントが使用され たりエラーになることがあるので注意してください。 この例では、 :fc=mincho とすることで解決します。 余談ですが、ghostscriptですと、 /Ryumin-Light 4300000(r-ricoh-ttw-heisei-mincho-w3) VFlibkanji としてもちゃんと動作してくれます。 □ 日本語の書体が3つ以上ある場合 上にあるごとく、私は行書体もTeXで使っていますので、kconfig.psに /Ricoh-HG-Gyosyo 4300203(gyosho) VFlibkanji という行を追加しています。このgyoshoは vfontcapでは ff=c\072/fonts/tt/fgclcgym.ttc に対応しているわけですが、ghostscriptでこの書体を使用するために 行書のための tfmファイルを作成しています。私の場合は、gyo10.tfm gyo12.tfm, tgyo7.tfmなど。(tfmファイルは単に goth10.tfmなどを gyo10.tfmにコピーするだけでよい) よって、vfontcapには、tfmのbasenameに対応する gyo|gyo5|gyo6|gyo7|gyo8|gyo9|gyo10|gyo12|gyo17:\ :fc=gyosho: というような行がなければなりません。ghostscriptで日本語多書体を使用 する場合は、vfontcapにこのような行を作る必要性はありませんでしたが、 kconfig.psを用いない、jx11dviではここのところにも注意が必要です。 もう一度繰り返しますが、この例ですと gyo.tfm, gyo5.tfm等がpLaTeXに よって使用されいなければなりません。ここではpLaTeXで日本語多書体 を作成するためのスタイルファイルやfd fileの作成方法についての解説 はしません。多書体の使用法については、dvipskのVFlib対応のパッチを 作成された中山氏の http://math.shinshu-u.ac.jp/~nakayama/howto/tex/tex.html Happy TeXingがとてもわかりやすいです。pLaTeX, dvipsk, ghostscript の三者において多書体を使えるようになることを私が保証します。 □ VFlibの機能を利用して多書体を用いる場合 これは上述のことと似ていますが、少々意味合いが違います。上の話は 日本語フォントの実体が三種類あり、それに対応した三種類のフォント名 という意味でした。つまり、明朝体などのフォントは回転もしないし、 斜めにもなっていない"生"の形で使用する場合のこと。 ここでは、明朝体を"太く"したり30度斜めにしたり、時計周りに60度 回転したりのことを述べます。そのために必要なことは以下のごとくです。 1. 斜体や回転に対応した tfmファイルの作成 前述の話は1つのフォントの実体の形になんら手を加えないために、 tfmファイルは、単にコピーするだけで問題ありませんでした。しかし 回転、斜体化、太さの変更などをしますと、 font metricが変化しま すので、単にコピーするだけではうまくありません。 VFlib-2.22-PL8.tar.gz or TypeHack-19980604.tar.gzを入手する 必要があります。 どちらでもかまいませんが、後者ですと TypeHack-19980604\VFlib2-2.23.0\jTeX にある解説とスクリプトを熟読して、tfmファイルを作成して下さい。 pdkshやbashがあれば、スクリプトを少し修正するだけで簡単に たくさんの tfmファイルを作成できます。Unixのシェルスクリプトを OS/2のパッチファイルに修正してもいいでしょう。Makefileも使う のでGNU makeも必要ですね。 さて、vfontcap にはこんな一連の行がありますね。 #Ricoh Heisei-Minco W3 Font rchmnmaa:\ :fc=ricoh-heisei-mincho-w3: rchmnmab|sl15min:\ :sl#15:fc=ricoh-heisei-mincho-w3: rchmnmac|sl25min:\ :sl#25:fc=ricoh-heisei-mincho-w3: rchmnmad|sl33min:\ :sl#33:fc=ricoh-heisei-mincho-w3: man.ps/man.dviに記載されているように、例えば、rchmnmabは この例ですと、上述の私のkconfig.ps/vfontcapであれば、 Ricohの平成明朝(w3)を15度回転したもので、これに対応して rchgomab5.tfm, rchgomab7.tfm,rchgomab10.tfm,rchgomab12.tfm などを作成したらいいわけです。方法については角川先生の 説明書に書いてありますので省略します。 このような tfmファイルを作っても、pLaTeXで使うための方法が わからない場合は既述のごとく 中山氏の web をごらん下さい。 ★ VFlibによる拡大・縮小・回転等が実際にどのように見えるのかを 手っ取り知りたい方は、 http://www2s.biglobe.ne.jp/~vtgf3mpr/xvf/xvf.htm にある4つの表示例を見て下さい。 そのページにある、" ■ ダウンロード"のところの http://www2s.biglobe.ne.jp/~vtgf3mpr/xvf/X-VFutil.lzh には X windowsに日本語TrueTypeフォントを表示したりする ためのVFlibのユーティリティが入っています。そのうちの一つ ktest.exeを用いて、jx11dvi を使用する前の vfontcap の設定 チェックをすることを強くおすすめします。例えば、上述の ごとく vfontcapに記載があり、すべて正しく設定されていれば、 > ktest -f rchmnmad (or sl33min) により、リコー平成明朝体が右に33度傾いて表示されます。 ktest -h で使用法が表示されます。最初は漢字が表示されない のでマウスの右ボタンをどんどんクリックして、コードを進め るといずれは表示されます。私がwebにおいたVFlibユーティリティ はFreeType対応なので、非常に美しく表示してくれます。 VFlibはghostscriptを普通に使っている限りは、その機能のごく 一部しか用いていないと思います。この機会に、man.ps(dvi)を 熟読して、いろいろと試してみてはいかがでしょうか。 この文書に部分的に示している vfontcapファイルの例ですと、 ktest -f で、mincho, min, min10, min12, ricoh-heisei-mincho-w3 のどれを指定しても同様に、"普通の"リコー平成明朝が表示される のですが、jx11dvi は min10, min12などというフォント名でのみ アクセスすることに留意のこと。 ktest -f で、 min10, goth10, tmin10, tgoth12とかを指定してちゃんと表示で きればあとは簡単。 いよいよです。 ■ 使用法 コマンドラインで、 > jx11dvi -s 4 -p 360 man このようにしますと、360dpiの解像度を 1/4に縮小した man.dviが表示されます。 マウスの左右がページの前後移動に対応しており、"q"で終了します。 "-s"と"-p"以外はあまり使わないと思いますが、コマンドラインで jx11dviとだけ タイプするとオプション一覧が表示されます。 としますと、 Usage: jxdvi [-s ] [-p ] [-l] [-rv] [-fg ] [-bg ] [-hl ] [-bd ] [-ms ] [-core] [-A4, -B4, -B5, -LETTER, -A4L, -B4L, -B5L or -LETTERL] [-2up] [-i] [-vfconf ] [=] [-display host:display] [host:display] [-pp page] dvi_file と表示されます。角川先生はすべてについて詳しく解説はしてないので、 -s: shrink(縮小度)の値は1ならそのまま、2, 3, 4, 5と数値が大きく なるとより小さくなります。デフォルトは 3 にしています。 -p: pixelsで 360 を使用すると 360 dpiのフォントが使用されます。 cmr10.pk等はどんな解像度でもそろっているわけではないので 現実的には、自分が持っているフォントにあわせることになるでしょう。 通常は118, 300, 360のいずれかが適当です。デフォルトは300です。 -vfconf VFONTCAPFILE: vfontcapの指定。これは環境変数より優先される のでいろいろな設定を試してみることが容易です。ファイル名は もちろん vfontcapである必要はありません。 > jx11dvi -vfconf c:/xx/tt-fonta.cfg man などとします。 -hl: ページ境界色 -bd: ウインドウ境界色 -core: コアダンプの許可? -bg: 前景色 -fg: 背景色 -rv: 前景色と背景色の反転 -ms: マウス色 -A4, -B4, -B5,,,: ページサイズ -2up: これは印刷のオプションなので関係ないようです。 -i: これもはページ毎に印刷の有無を問うもので関係なし -l: landscape mode. これは指定しても関係ないようです。 以上。 ■ jx11dvi の 限 界 ○ 下位ディレクトリの再帰的検索に対応していない ○ 欧文 PK fonts のうち、EC fonts等は、名称を決定するアルゴリズムを追加して コンパイルしないと使用困難のようだ。 ○ ポストスクリプトフォントの使用不可で、EPSなどの画像の表示が出来ない。 ですから、[p]LaTeX2eで \usepackage{times} のごとく dvipskで変換してghostscriptで表示・印刷することを前提と したDVIファイルは表示できません。 少なくともこのような制限がありますが、動作はとても軽快なので ここから先は、ご自分でコンパイルする方のためです。 ■ ソースの入手先 VFlib-2.23p0(+ VFlib 3.4 + α): ftp://gull.se.hiroshima-u.ac.jp/pub/VFlib/TypeHack/TypeHack-19980604.tar.gz jx11dvi ftp://gull.se.hiroshima-u.ac.jp/pub/VFlib/dvi2nwp.lsz-1.44.tar.gz FreeType 1.1 ftp.freetype.org:/pub/freetype/freetype-1.1.full.tar.gz VFlib-2.23p0をFreeType1.1対応にするパッチ  http://itohws03.ee.noda.sut.ac.jp/~matsuda/VFlib-FT/VFlib2.23-FT1.1.diff ■ メイクの手順 1) FreeType 1.1 のビルド: pdkshやbashの環境でなくても可 arc/os2/Makefile.emx, lib\arch\os2\Makefile.emxの CFLAGSをチェック freetype-1.1\test にて、 > make -f arc/os2/Makefile.os2 これでFreeType Utilitiesが生成され、lib/libttf.a ができます。 必要なのは、lib/libttf.aだけです。 2) VFlib2.23p0 with FreeType 1.1 のビルド bash/pdkshの環境でないといろいろと工夫が必要になります。 シェルスクリプトをOS/2用に修正して、Makefile.in, Imakefile.in make-sub.in 等を手直しして、configureすると、一応 Makefilesが 生成されますが、libtool がうまくうごいてくれないので、configure でできたMakefiles and make-sub を修正しました。 a. jx11dvi.lzhの TypeHack-19980604\VFlib2-2.23.0\make-sub TypeHack-19980604\VFlib2-2.23.0\src\Makefile TypeHack-19980604\VFlib2-2.23.0\tools\Makefile これらのファイルをTypeHack-19980604.tar.gz を解凍した当該 ディレクトリにおく。 b. これらのファイルの先頭にある記載のごとくFreeType のディレクトリを指定 c. パッチ ( VFlib2.23-FT1_1.diff )をあてる。 d. freetype-1.1\lib以下にあるオブジェクトファイルをこのディレクトリに コピー。つまり、freetype-1.1\libには6つあるようにして下さい。 freetype.o ftxcmap.o ftxgasp.o ftxkern.o ftxpost.o ftxwidth.o e. TypeHack-19980604\VFlib2-2.23.0\srcにて > make これで、VFlib.a と ttindex.exe等が生成されます。 f. TypeHack-19980604\VFlib2-2.23.0\toolsにて vftest.c を Shift JIS に変換。 $ nkf -s vftest.c > tmp $ mv tmp vftest.c $ make.cmd (make.cmd はXFree86 for OS/2 付属のバッチファイル) これで ktest.exe等が生成。使用法は、-h オプションで表示されます。 3) jx11dvi のコンパイル: やはり pdksh/bash の環境で a. dvi2nwp.lsz-1.44.tar.gzを展開 b. dvi2nwp.lsz-1.44\src にて $ cp CONFIG/config.h.jx11dvi ./config.h $ patch -p1 < dvi2nwp-os2.diff          *.h, *.c の修正箇所は #ifdef __EMX__ と #ifdef __DOSNAME__ のところです。 c. Makefileを自分用に修正  先頭行にある記載のごとくおこなって下さい。-D__DOSNAME__を CFLAGSに  付加するか否かが最も重要かと思います。    d. Make 一発で容易にコンパイルに成功するでしょう。 ■ おわりに  VFlib 2.23p0 という革命的とも言える有用なライブラリを開発され、公開して くださっている角川 裕次先生と松田一朗様(FreeType対応コード)に深謝いたし ます。  この度、ghostscriptとXFree86 for OS/2の X serverにつづいて、日本語DVI を表示するアプリを使用できるようになりとても嬉しく思います。  VFlib は既に 3.4.0 が公開されております。私の場合、3.3はOS/2でライブラリ もバイナリもメイクはできていますが、まだ使えておりません。まずは、3.3を きっちりと使用できるようになることを目標にします。 1998年6月15日 沢田石 順 jsawa@ibm.net / GGB02155@niftyserve.or.jp http://www2s.biglobe.ne.jp/~vtgf3mpr/ YOKOHAMA, JAPAN