具体例

まずは,この節で用いるperl scriptをダウンロードしてください.(2002/5/1 更新)

漢字と仮名で別々のフォントを使う

和文の60%〜70%が仮名です,そのため,仮名を入れ替えるだけで,がらりと紙面が変わります.市販のフォントの中にも仮名のみのフォントがあります.このようなフォントの利用をする為のVFの作り方を説明します.(makejvfで作った場合,非漢字部が全て変わってしまいます.ここで作るVFは1区の踊り字と平仮名,片仮名のみを仮名フォントに変更します.)

漢字と仮名で別々のフォントを使う為のVFを作成するにはmakeovp1.plを用います.カレントディレクトリにmakeovp1.plがあるとしてperl makeovp1.plとすることで,comic.ovpが作成されます.これでovpファイルが生成されましたので,ovp2ovf comic.ovpとしてovp2ovfでovfファイルを作ります.出来た,comic.ovfをcomic.vfにリネームします.comic.ofmは必要ありませんので削除してください.これで仮名以外の部分はgbm.tfmに割り当てられたフォントを,仮名の部分はrml.tfmに割り当てられたフォントを用いるcomic.vfが得られました.jis.tfmをコピーしてきて,comic.tfmにリネームすれば,TeXで利用出来ます.

makeovp1.plのカスタマイズの仕方を説明します.下記の部分を変更することで割り当てるフォントを自由に変えられるでしょう.

$font_name="comic";#TFM name for TeX
$psfont_kanji="gbm";#Kanji TFM name for DVIware
$psfont_kana="rml";#Kana TFM name for DVIware

comic, rml, gbmを適宜変更して下さい.rml, gbmの部分をそれぞれfoo, varに変更した場合,rml.tfmをコピーしてきてリネームしてfoo.tfm, var.tfmを作る必要があります.さらにdvipsやdvipdfmxのフォントマップにfoo, varのエントリを追加して下さい.

JIS外字の利用(Shift JISエンコーディングVFの作成)

JIS外字(⊂機種依存文字)をTeXで利用する為には色々な方法が考え出されています.一つの解決方法としてCMapに90ms-RKSJ-{H, V}を使うという方法が考えられます.jis.tfm, min10.tfmなどを使った場合,区点で13区のNEC外字の部分は出せるはずですが(フォントに依る),94区以上の所にあるIBM外字はjis.vf, min10.vfにおいて定義されていない為,使えません.VFを単純に120区94点まで拡張すれば,dvips(k)のSJISオプションを利用することにより使えるはずです.しかし,この場合dvipdfmxではPDFに変換することが出来ません.そこでVFの段階でSJISエンコーディングに変換してしまうものを作ればdvipdfmxで利用出来ます.この場合,dvips(k)では出力出来ませんが,udvipsで出力出来ます.

Shift JISエンコーディングVFの作成にはmakeovp2.plを用います(このページのトップにあります).カレントディレクトリにmakeovp2.plがあるとしてperl makeovp2.plとすることで,sjis.ovpが作成されます.ovp2ovf sjis.ovpとしてovp2ovfでovfファイルを作ります.出来た,sjis.ovfをsjis.vfにリネームします.sjis.ofmは必要ありませんので削除してください.jis.tfmをコピーしてきて,sjis.tfmにリネームすれば,TeXで利用出来ます.出力する為には,さらにrml.tfmをコピーしてきてリネームしてsjisrml.tfmを作る必要があります.また,dvipdfmxのマップファイルにはsjisrml 90ms-RKSJ-H Ryumin-Lightなどと記述して下さい.

makeovp2.plのカスタマイズの仕方を説明します.下記の部分を変更することで割り当てるフォントを自由に変えられるでしょう.

$font_name="sjis";#TFM name for TeX
$psfont="sjisrml";#TFM name for DVIware

sjis, sjisrmlを適宜変更して下さい.sjisrmlの部分をfooに変更した場合,rml.tfmをコピーしてきてリネームしてfoo.tfmを作る必要があります.さらにdvipsやdvipdfmxのフォントマップにエントリを追加して下さい.CMapはRKSJが付いた物を使用します.

おまけ:sjis.zip min10.tfm, jis.tfmなどの基本的なTFMをベースにしてSJISエンコーディングにしたVFです.(2003/5/1 追加)

拗促音の調整

拗音の位置の調整書体に依っては仮名の拗促音が大きすぎると感じられることがあるかもしれません.これを調整する方法を以下に述べます.もちろん,これは書体のデザイナの意図しないことですので,自分の責任で注意深く利用することが肝心です.このようなVirtual Fontを作成する為にはmakeovp3.plを用います(このページのトップにあります).カレントディレクトリにmakeovp3.plがあるとしてperl makeovp3.plとすることで,altjis-v.ovpが作成されます.これでovpファイルが生成されましたので,ovp2ovf altjis-v.ovpとしてovp2ovfでovfファイルを作ります.出来た,altjis-v.ovfをaltjis-v.vfにリネームします.altjis-v.ofmは必要ありませんので削除してください.jis-v.tfmをコピーしてきて,altjis-v.tfmにリネームすれば,TeXで利用出来ます.

さて,拗促音の位置ですが,縦組に於いては図の3種類があると思います.この図について説明します.右側には,基本となるサイズの「ぁ」を赤色で表示しています.85%に縮小した「ぁ」をそれぞれの揃えの位置に重ねて青色で表示してあります.枠はそれぞれの仮想ボックスです.左側は基本のサイズの「ぁ」と縮小したものの仮想ボックスを消したものです.このmakeovp3.plにより生成されるovpファイルは,右上揃えが一番にしっくり来るように思えましたので,右上揃えのものを生成します.このとき,ベースラインの調整量は正方形のフォントを仮定して計算しています.横組の場合はTeXの文字の配置の性質上このような調整をする必要はありません.

makeovp3.plのカスタマイズの仕方を説明します.

$font_name="altjis-v";#TFM name for TeX
$psfont_kanji="rmlv";#Kanji TFM name for DVIware
$scale=0.90;
$direction=1;#Direction 0: YOKO 1: TATE

altjis-vを変更することでVFの名前が変更出来ます(対応するTFMを作る必要があります).rmlvの部分をfooに変更した場合,rmlv.tfmをコピーしてきて(縦組の場合,横組の場合はrml.tfm)リネームしてfoo.tfmを作る必要があります.さらにdvipsやdvipdfmxのフォントマップにエントリを追加して下さい.$scaleは拗促音の縮小率です,この場合は90%になります.適宜変更して下さい.$direction=1は縦書きであることを意味しています,縦書きの場合,右上揃えにするためにベースラインをずらしています.横書きの場合は必要ないので,$direction=0とします.

和字 Revision 9の利用

朗文堂より発売されている「和字 Revision 9」を使う為のVFを制作する過程を通じ,pTeX拡張のDirection命令をovp2ovfで扱うことを説明します.

縦書き用のVFの場合,1バイト仮名フォントや一部のTrue Typeを使用する為にはpTeX拡張のDirection命令(DVI Code: 255)を使用する必要があります.しかし,OmegaではDirection命令を解釈出来ないので,当然のことながらovp2ovfではこの命令を用いたVFを作成することができません.以下のような手順で作成することにしました.

  1. OVPの段階では
    (CHARACTER H 2421
       (CHARWD R 0.962216)
       (MAP
          (SPECIALHEX FF00)
          (SELECTFONT D 2)
          (MOVEDOWN R 0.846750)
          (MOVELEFT R 0.481108)
          (SETCHAR H EC9F)
          )
       )
    
    上記のような記述をします.
  2. これをOVFに変換すると,大体以下のようになります.
    F2:	Map
    00 00 00 10:	16バイト読み込む
    00 00 24 21:	文字コード0x2421
    00 0F 65 3D:	CharWd=0.962216
    EF 02:	Special 2バイト読み込む
    FF 00:	2バイトのデータ
    AC:	Selctfont 2
    A4 0D 8C 4A:	Movedown 0.846750
    96 F8 4D 62:	MOVELEFT R 0.481108
    81:	SetChar 2バイト
    EC 9F:	文字コード0xEC9F=シフトJISコードの縦書き用「ぁ」
    
  3. OVFのコードから「Special 2バイト読み込む」の部分の「EF 02」を除去した上で「16バイト読み込む」の部分を「14バイト読み込む」と「EF 02」の分の2バイト分を減らしてやります.変換後は以下のようになります.
    F2
    00 00 00 0E:	14バイト読み込む
    00 00 24 21
    00 0F 65 3D
    FF 00:		Direction Yoko (pTeX拡張)
    AC
    A4 0D 8C 4A
    96 F8 4D 62
    81
    EC 9F
    

2から3へ変換するためのスクリプトがovf2jvf.plです.それでは和字リビジョン9用のVFを作成する手順を説明します.Virtual Fontを作成する為にはmakeovp5.plを用います(このページのトップにあります).カレントディレクトリにmakeovp5.plがあるとしてperl makeovp5.pl aoi-v aoikanji-v aoikanaとすることで,aoi-v.ovpが作成されます.これでovpファイルが生成されましたので,ovp2ovf aoi-v.ovpとしてovp2ovfでovfファイルを作ります.さらにperl ovf2jvf.pl aoi-v.ovfとするとaoi-v.vfが出来ます.aoi-v.ofmは必要ありませんので削除してください.jis-v.tfmをコピーしてきて,aoi-v.tfmにリネームすれば,TeXで利用出来ます.dvipskやdvipdfmx用のaoikana.tfm, aoikanji-v.tfmはrmlv.tfmをコピーしてリネームして下さい.

齋藤修三郎

←戻る ↑インデックスへ