日本語VF生成ツール makejvf ver.1.1a 株式会社アスキー・メディアワークス ptex-staff@ml.asciimw.jp makejvf は日本語対応 dvips を使用する際に必要なVFファイルを生成するためのツー ルです。 makejvf の使用および配布に関しては、付属の COPYRIGHT ファイルを参照してくださ い。 dvips で日本語を扱う場合、DVIを作る際に使用する和文TFMに記述してある文字幅と、 和文PSフォントの文字幅が異なるため、文字位置を調整するVF(Virtual Font)というファ イルが必要になります。makejvf はこのVFを生成するためのツールです。 また、縦書き時にはシングルクォート(‘’)、ダブルクォート(“”)をそれぞれシング ルミニュート(′とこれを180度回転させたもの)とダブルミニュート(″とこれを180度回 転させたもの)に変換して出力します。 ---------------------------------------- VFについて VF(Virtual Font)とは、フォントを合成して仮想的なフォントとして扱うためのファイ ルです。 欧文フォントではアクセント記号を持たないフォントに他のフォントのアクセント記号 を追加して1つのフォントとして扱ったり、任意のフォントの小文字部分を縮小した大文 字に置き換えて SmallCaps フォントのように扱うのに使用します。 VFファイルの中身はDVIファイルと似ており、各文字についての出力方法がDVI命令に よって記述されています。文字の位置を変えることも可能です。 dvips でのVFとTFMの関係は次のようになっています。 TeX がTFMを参照して組版 ↓ dvips がDVI中のTFMと同じ名前のVFを参照(なければ文字合成なし) ↓ VF中に記述されている各文字の定義(文字毎にフォントを設定できる)を参照 ↓ 文字定義に従って dvips が各文字を置換 dvipsで日本語を扱う場合、min10 や goth10 の文字位置と和文PSフォントの文字位置 の違いが問題になります。 例えば "(" のような、左に空きがある括弧類の場合、和文PSフォントでは左の空きも 含んだ文字として扱いますが、min10 や goth10 では左の空きは文字として扱わず、「空 き+"("」のような扱いになります。そのため min10 の "(" をそのままPSの "(" に置 き換えてしまうと、想定した位置より右に出力されてしまいます。 そこでVF中に「"(" は左にずらして置き換える」という記述をしておき、dvips がVF を参照して位置調整を行うようになっています。 ---------------------------------------- コンパイルおよびインストール: makejvf のインストール先を Makefile の DISTDIR に指定しておいて下さい。 make を実行すると makejvf が作られ、さらに make install を実行すると DISTDIR で指定したディレクトリにインストールされます。 必要なファイル: min10.tfm や goth10.tfm 等、pTeXで使用する和文TFMファイル。縦書き用(tmin10.tfm 等)も扱えます。 使用方法: % makejvf <和文TFMファイル名> <和文PSフォントTFM名> <和文TFMファイル名>: pTeX で使用する和文TFMの名前。カレントディレクトリ に用意しておく。この名前の拡張子を`.vf'にしたものが VFファイルとして生成される。 <和文PSフォントTFM名>: 実際に出力される和文PSフォントの文字幅情報を記述した TFMの名前。makejvf により生成される。また、この名前 がVF中に記述される。 オプション: -C 長体(左右の幅を縮めた書体)のTFMを元にVFを作成する場合に使用します。 長体VF作成時に-Cを付けないと、単に小さいフォントのTFMとして扱われて しまいます。 -K <和文PSフォントTFM名> 非漢字部のPSフォントTFMを指定します。これにより、1書体で漢字部と非 漢字部で異なるフォントが使用できます。 -b <数値> ベースライン補正の数値を指定します。文字の高さを1000として整数で指定、 プラスで文字が下がり、マイナスで文字が上がります。 -m 縦書き時にクオート類(’”)をミニュート(′″)へ変換します。 ---以下2つは正式にサポートされているオプションではありません--- -a PSフォントのAFMファイル名を指定します。 かな詰めフォント作成時に使用します。 -k <数値> かな詰めマージンを指定します。文字幅を1000として整数で指定。 -aオプションと共に使用します。 例1: min10 をリュウミン-Lとして使用する場合: % makejvf min10.tfm rml (min10.vf と rml.tfm が生成される) こうして生成されたVFおよびTFMを $TEXMF 以下の検索パスが通る場所に置きます。 さらに、rml が出力機のリュウミン-Lであることを宣言するために、$TEXMF/dvips 以下 にある psfonts.map に次のような記述を追加します。 rml Ryumin-Light-H これで min10 を使用した箇所が dvips によりリュウミン-Lに置きかえられます。 Ryumin-Light-H を ShinGo-Bold-H にすれば新ゴ-Bに、FutoMinA101-Bold-H にすれば 太ミンに置きかえられます。 このようなVFおよびTFMを多数作成することで多書体の使用が可能になります。なお、 元になるTFMは min10.tfm を別の名前にコピーして使用します。 例2: 非漢字部に見出しミン、漢字部に太ゴを使用する場合: % makejvf -K midashimin-ma31 jcomic.tfm futogo-b 漫画の台詞のような、かなを明朝書体、漢字をゴシック書体で使用する例です。 jcomic.tfm にはあらかじめ min10.tfm をコピーしておきます。psfonts.map には次の ような記述を追加します。 midashimin-ma31 MidashiMin-MA31-H futogo-b FutoGoB101-Bold-H これで jcomic.tfm を使用すると、生成された jcomic.vf によって非漢字部は見出しミ ン、漢字部は太ゴで出力されます。