日本語VF生成ツール makejvf ver.1.0

  makejvf は(株)アスキーで日本語化された dvips を使用する際に必要なVFファイルを生成するためのツールです。

このプログラムは以下の事項を確認の上、ご利用ください。

   1. 本プログラムに関しては株式会社アスキーに著作権があります。

   2. その使用が直接的な営利目的（例えば、利用者からプログラムの使用料
      金をとる等）でない限り、どのような方法、目的で使用されてもかまい
      ません。ただし、それにより生じた問題に関しては一切、株式会社アス
      キーでは責任を持ちません。

   3. 他者へのコピーは、その行為が営利目的でない場合に限り自由に行なっ
      て結構です。

   4. 本プログラムの使用または、使用不能から生ずるいかなる損害に関して
      も、株式会社アスキーは、一切責任を負わないものとします。


  dvips で日本語を扱う場合、DVIを作る際に使用する和文TFMに記述してある文字幅と、和文PSフォントの文字幅が異なるため、文字位置を調整するVF(Virtual Font)というファイルが必要になります。
  以前は`vftool'によりVFを生成して使用するようにしていましたが、vftool で生成されたVFを使用した場合、カナや約物(句読点、括弧等)の文字位置がPSフォントのデザイナーが想定した位置から微妙にずれた位置に出力されてしまいます。
  makejvf はこのようなずれを(できるだけ)なくしたVFを生成するためのものです。

----------------------------------------
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を参照して位置調整を行うようになっています。
----------------------------------------

コンパイルおよびインストール:

  コンパイルは make コマンドを実行するだけです。
  できた makejvf を実行パスの通ったディレクトリにコピーして使用してください。

必要なファイル:

  min10.tfm や goth10.tfm 等、pTeX で使用する和文TFMファイル。縦書き用(tmin10.tfm 等)も扱えます。
  vftool で必要としていた和文PSフォントのAFMファイルは必要ありません。

使用方法:

  % makejvf <和文TFMファイル名> <和文PSフォントTFM名>

  <和文TFMファイル名>:   pTeX で使用する和文TFMの名前。カレントディレクトリ
                         に用意しておく。この名前の拡張子を`.vf'にしたものが
                         VFファイルとして生成される。
  <和文PSフォントTFM名>: 実際に出力される和文PSフォントの文字幅情報を記述した
                         TFMの名前。makejvf により生成される。また、この名前
                         がVF中に記述される。

例:

  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 を別の名前にコピーして使用します。

※ここでは一般的に使用される min10.tfm を元にしてVFを作成する例を挙げましたが、min10.tfm は「“”」を文字枠の中心に配置するようになっており、前後に妙な空きができてしまいます。jis.tfm は「“」は右寄せ、「”」は左寄せに配置され、このほうがより一般的な組み方としてよろしいかと思います。


株式会社アスキー  テクニカルセンター  田中 禎之
sada-t@ascii.co.jp
www-ptex@ascii.co.jp
