                 VFフォントの新しい応用法と補助漢字
                     makevjf-1.0-fkr を使って

                           1999/02/13

                 福井 玲（fkr@tooyoo.l.u-tokyo.ac.jp）

makejvf-1.0-fkr は(株)アスキーによって作られた makejvf-1.0 （日本語化
された dvips を使用する際に必要なVFファイルを生成するためのツール）に
改造を加えて、区点コード16区（「亜....」）以降の文字について、任意のフォ
ントの任意のコードの文字をマップしたVFファイルを作るためのプログラムで
す。

dvi driverとしては、アスキーの ptex用の dvips が使えます。

具体的な応用例としては、JIS X 0212-1990 （補助漢字）のうち、区点コード
16区以降の文字を、JIS第１・第２水準のフォントの16区以降にマップしたVF
フォントを作ること、ハングルなど、256個以上の文字を含むフォントを同様
にマップして１つのフォントとして扱えるようにすること、などが考えられま
す。このようにすることの利点としては、

・256個以上の文字を含むフォントを、サブフォントに分割することなく、全
  体を１つのフォントとして扱える。

・フォントの切り替えは和文の書体の切り替えをするだけですむ。

・補助漢字を扱う場合、TeXのレベルでは、普通の漢字フォントとまったく同
  様に扱われるので、例えば、漢字と１バイト文字との間の四分アキなども自
  動的に入る。

などがあげられます。なお、アスキー版TeXプログラムに依存しているという
点は欠点と言えば欠点かも知れません。また、今のところ xdvi が使えないの
も欠点です（dvips -> gs なら使えます）。


プログラムのコンパイル

make makejvfh

   makejvfh ができます。これは HeiseiMin-W3-G??.mf による補助漢字をマッ
   プしたVFフォントを作るプログラムです。

make makejvfk

   makejvfk ができます。これは wsmjf?.mf によるハングルフォントをマッ
   プしたVFフォントを作るプログラムです。

make または make makejvf

   オリジナルのアスキー版と同じ makejvf ができます。ただし、小さなバグ
   の修正とオプションの追加がしてあります。

make all

   以上の makejvf, makejvfh, makejvfk をすべて作ります。

なお、上記以外のフォントをマップしたVFフォントを作りたい場合は、ソース
ファイルの中の write.h を参考にすれば、比較的簡単にできると思います。


makejvfhを使った補助漢字VFフォントの作り方

まず、安岡＠京大さんのところから補助漢字のメタフォントソースファイル
（ftp://ginkaku.kudpc.kyoto-u.ac.jp/fonts/jisx0212mf.tar.Z）を頂いてき
て、HeiseiMin-W3-G??.mfのファイルを適当なTeXで使えるディレクトリにコピー
します。例えば、

  tar xvzf jisx0212mf.tar.Z -C /usr/local/share/texmf/fonts/source
  mktexlsr

次に、もとにする日本語jfmファイルを、別の名前でこれから作業を行なう場
所にコピーします（ここではmin10.tfmを例にとります）。

  cp min10.tfm hjm10.tfm

makejvfh を使って補助漢字VFファイルを作ります。

  makejvfh hjm10 rml

これによって hjm10.vf と rml.tfm が作られます。rml.tfm のほうは dvips
などを使っている場合、既に入っているはずであり、ここで作られる rml.tfm 
は不要です。ただし不要だからと言って、rml の指定を省くことはできません。
1区から15区までの各種記号類などは、もとの min10 と同じものが書き込まれ
るからです。したがって、仮にゴチック体の補助漢字フォントが利用できると
すれば、上の例の min10 の代りに goth10 を使い、

  cp goth10.tfm hjg10.tfm
  makejvfj hjg10 gbm

のようにします。

次に、テスト用のファイルを作ります。例えば、次のようなものです。

------------------- file: test1.tex ---------------------
\font\hjm=hjm10
\def\hj#1{{\hjm\char\jis"#1}}

森\hj{6C3F}外，\hj{6247}小平，金思\hj{4A33}

森鴎外，登小平，金思樺

２行目は間違いですが、文字のバランスを見るためのものです。

\end
---------------------------------------------------------

  ptex test1
  dvips test1

うまくいけばこれで使えるようになるはずです。なお、pLaTeXで使う場合には、
pLaTeXに附属する jy1mc.fd を参考にして、次のようなファイルを作ります。

-------------------- file: jy1mch.fd ---------------------
\ProvidesFile{jy1mch.fd}
\DeclareKanjiFamily{JY1}{mch}{}
\DeclareRelationFont{JY1}{mch}{m}{}{OT1}{cmr}{m}{}
\DeclareRelationFont{JY1}{mch}{bx}{}{OT1}{cmr}{bx}{}
\DeclareFontShape{JY1}{mch}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*hjm
    <10.95><12><14.4><17.28><20.74><24.88> hjm10
    <-> hjm10
    }{}
\DeclareFontShape{JY1}{mch}{bx}{n}{<->ssub*gt/m/n}{}
\endinput
---------------------------------------------------------

また、上の定義内容にあわせて、min5, min6, min7, min8, min9についても上
とまったく同じ手続きによって hjm5, hjm6, hjm7, hjm8, hjm9 を作っておき
ます。

実際に使うには次のようにします。

------------------- file: test2.tex ---------------------
\documentclass{jarticle}
\def\hj#1{{\kanjifamily{mch}\selectfont\char\jis"#1}}
\begin{document}
森\hj{6C3F}外，\hj{6247}小平，金思\hj{4A33}

森鴎外，登小平，金思樺

２行目は間違いですが、文字のバランスを見るためのものです。

\end{document}
---------------------------------------------------------

文字の大きさについて

普通の和文用に使っているフォントと、上のようにして作った補助漢字とで文
字の大きさのバランスがとれないことがあります。そのときは makejvfh の-s 
オプションを使ってください。-s の次にどのような比率で拡大縮小するかを
実数で指定します。例えば次のようです。

  makejvfh -s 1.09 hjm10 rml
  makejvfh -s 0.95 hjm10 rml

なお、makejvfhについては、手許のプリンターで試験した結果として、（まだ
実験不足でいい加減ですが）-s を指定しない場合、-s 1.07 が指定されたの
と同じ結果になるようにしてあります。


その他

以上の記述は、主に HeiseiMin-W3-G??.mf を利用する方法について書きまし
たが、このVFファイルを使えば、ほとんどそのままで HeiseiMin-W3 の 
PostScript フォントにも使用できるそうです（内山 孝憲さんの御教示による）。
また、ttf2pkによって作られる補助漢字を使うこともできるそうです。

--------------------------------------------------------------------
福井  玲   東京大学大学院人文社会系研究科 附属文化交流研究施設
           東洋諸民族言語文化部門
FUKUI Rei  fkr@tooyoo.l.u-tokyo.ac.jp
           http://www.tooyoo.l.u-tokyo.ac.jp/fkr.html
