top page > TeX > here

dvi ドライバーとフォント


概要

対象は次のようなものです.

  1. FreeBSD 4.9, 7.2, 8.4
  2. TeX 等は,FreeBSD の各々の version の最初の Release に対応する ports/packages

内容は次のようなものです.

  1. xdvi, ghostscript への日本語のフォントの指定法.
  2. dvipos への pfb フォントの指定法.

TeX の「内部」でのフォントの取り扱いについては触れません.

ここで述べる dvi ドライバーの制御法は,あくまで FreeBSD の ports/packages の状態での話です. compile option を変えることにより,違うやり方も実現できるようです.


目次

1. FreeBSD 4.9
1.1 xdvi
1.2 dvips
1.3 ghostscript 7
2. FreeBSD 7.2
2.1 xdvi
2.2 dvips
2.3 ghostscript 8
3. FreeBSD 8.4
3.1 xdvi
3.2 dvips
3.3 ghostscript 9

1. FreeBSD 4.9

1.1  xdvi

/usr/local/share/texmf/xdvi/vfontmap にて,フォントの TeX における名称と vfontcap における名称とが次のように結び付けられています.

% for ASCII pTeX
min     min    ← TeX での名称   vfontcap での名称
tmin    min
nmin    min
goth    goth
tgoth   goth
ngoth   goth

ASCII ptex を横書きで使う場合,"min" や "goth" は見掛けの上では「そのまま」です.

また,/usr/local/share/VFlib/2.25.6/vfontcap にて,フォント名とグリフを持ったファイルとが以下のように結び付けられています.

min:\
        :fc=kochi-mincho:
goth:\
        :fc=kochi-gothic:
(中略)
### Kochi fonts
kochi-mincho:\
        :fc=r-kochi-mincho:
kochi-gothic:\
        :fc=r-kochi-gothic:

r-kochi-mincho|Kochi Mincho:\
        :ft=freetype:\
        :ff=/usr/X11R6/lib/X11/fonts/TrueType/kochi-mincho-subst.ttf:
r-kochi-gothic|Kochi Gothic:\
        :ft=freetype:\
        :ff=/usr/X11R6/lib/X11/fonts/TrueType/kochi-gothic-subst.ttf:

これを変更したければ,このファイルを修正します. 別の書式のフォント,例えば TrueType Composit (.ttc) なども使えます.

~/.Xresources は,お好みで次のような指定をします.

XDvi*mfMode: ljfour:600
XDvi*shrinkFactor: 0
!XDvi*colorSpecial: on
!XDvi*expert: on
XDvi*cursorColor: red
XDvi*statusline: off
XDvi*font: 7x13bold
XDvi.mainTranslations: #override <Key>space:forward-page()

1.2  dvips

/usr/local/share/texmf/dvips/base/config.ps により,次のように printer の解像度を指定します.

*   Default resolution.
*
D 300     ← ここに dpi で指定します.

また同じファイルにて,使用する map file を次のように指定します. (拡張子は必ずしも map ではありません.)

*  Additional .map files
*
* p +cmfonts.map     ← * で始まる行はコメントです.
* p +lafonts.map
* p +cyrfonts.map
* p +eufonts.map
*
* These two lines are added to obtain good-looking PDF files.
* (Refer [ports-jp 12248])
p +psfonts.cmz
p +psfonts.amz

なお,psfonts.cmz, psfonts.amzdvips/bluesky/ にあります.

なお,psfonts.map はこれらの指定の有無にかかわらず必ず読み込まれます. このファイルは dvips/base/ にあります. 日本語のフォントは,この中で次のように規定されています.

rml      Ryumin-Light-H
gbm      GothicBBB-Medium-H

私の config.ps では以下のように設定しています. (すべての map ファイルは,既存のフォントに関しては psfonts.cmz, psfonts.amz の方を選んだのと同様の結果が得らるように,既存のものから修正しています.)

*  Additional .map files
*
p +cmfonts.map         ← コメントをはずすためには,* を消すだけでなく,p の前に空白をおかないこと.
p +lafonts.map
* p +cyrfonts.map      ← ここはコメントのまま.
p +eufonts.map
p +myfonts.map         ← 自前のフォントのための map file

目当ての Type1 フォントが map ファイルにて規定されていて,かつそれが存在する場合,dvips の実行中に次のように表示されます.

% dvips -o a.ps a.dvi
This is dvipsk 5.78 p1.4d Copyright 1996-2000 ASCII Corp.(www-ptex@ascii.co.jp)
%dvipsk 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
' TeX output 2009.08.19:1459' -> a.ps
<tex.pro><texps.pro><special.pro><color.pro>. <cmr5.pfb><cmbxsl10.pfb>
(以下略)

そうでない場合には,できあがった ps ファイルの中に

DVIPSBitmapFont

という項目で bitmap のフォントが作られます. map に関連した誤りの有無は,この項目の有無により確認できます.

なお,自前の config.ps, *.map および自前のフォントは ~/texmf を作ってその中に置いています.

1.3  ghostscript 7

ghostscript 7 では,フォントとして TrueType, OCF, CID が使えます.

フォントは /usr/local/share/ghostscript/7.07/lib/CIDFnmap.jp にて,以下のように指定されています.

% Japanese Truetype Fonts (Kochi)
/Kochi-Mincho   (/usr/X11R6/lib/X11/fonts/TrueType/kochi-mincho.ttf) 1 ;
/Kochi-Gothic   (/usr/X11R6/lib/X11/fonts/TrueType/kochi-gothic.ttf) 1 ;
%
% Convenient aliases for PS files on Japanese PostScript printer
%
/Ryumin-Light-H         /Kochi-Mincho   ;
/GothicBBB-Medium-H     /Kochi-Gothic   ;

別の TrueType font を使うならば,ファイル名を指定している部分を変更します. (TrueType Composit,すなわち拡張子が .ttc であるものも使えます.)

一方 OCF および CID フォントですが,CIDFnmap.jp にて例えば次のように指定します.

/GothicBBB-Medium-H     /HeiseiKakuGo-W5   ;

そうすると,/usr/local/share/ghostscript/Resource/CIDFont/HeiseiKakuGo-W5 を読みに行きます.

~/.Xresources は,お好みで次のような指定をします.

GV*antialias: True

2. FreeBSD 7.2

ここは FreeBSD 4.9 との差異という形で記しますので,前節も併せて御覧下さい.

2.1  xdvi

フォントは /usr/local/share/texmf/xdvi/ptex/vfontmap にて,以下のように指定されています.

%/usr/local/share/texmf/dvipdfm/CIDFont/HiraMinPro-W3.otf
/usr/local/lib/X11/fonts/TrueType/ipam.ttf
        min
        tmin
(中略)
%/usr/local/share/texmf/dvipdfm/CIDFont/HiraKakuPro-W6.otf
/usr/local/lib/X11/fonts/TrueType/ipag.ttf
        goth
        tgoth

これを変更したければ,このファイルを /usr/local/share/texmf-config/xdvi/ptex/cp して,それを修正します.

# cd /usr/local/share/texmf-config/xdvi/
# mkdir ptex   ← 既に存在するなら不要.
# cd ptex
# cp /usr/local/share/texmf/xdvi/ptex/vfontmap .
# vi vfontmap  ← 修正する.
# mktexlsr     ← ファイルを追加,削除した場合には必ず実行すること.

2.2  dvips

dvips の動作を制御するファイルやフォントは /usr/local/share/ の下の,次の directory にあります.

texmf            ← config.ps, psfonts_jp.map, 一部の Type1 font [1] はここにある.
texmf-config     ← config.ps はここにある.
texmf-dist       ← Type1 font の大部分はここにある.[2] config.ps もある.
texmf-var        ← psfonts.map はここにある.
texmf-local      ← directory のみで,file は置かれていません.[3]

[1] cm-super は実体が /usr/local/share/fonts/ にあり,ここには symbolic link が作られています.

[2] Type1 font は,ここと texmf にしかありません. また,ams, cm は実体が /usr/local/share/fonts/ にあり,ここには symbolic link が作られています.

[3] 以前,「ユーザー全体のためのカスタマイズはここで行なう」と書いた資料を読んだ記憶がありますが,見つかりません. (ちなみに「ユーザー個々人のため」の方は ~/texmf です.)

config.ps は以下のところにあります.

/usr/local/share/texmf/dvips/ptex/config/config.ps
/usr/local/share/texmf-config/dvips/ptex/config/config.ps
/usr/local/share/texmf-dist/dvips/config/config.ps         ← これは効いていないのでは?

最初の二つは ja-dvipsk-tetex-5.95b_9 が展開するもので,内容はほぼ同一です. map に関連する箇所は以下の通りです.

* p +cmfonts.map
* p +lafonts.map
* p +cyrfonts.map
* p +eufonts.map
p +psfonts_jp.map    ← コメントにされず効いているのはこれだけ.

日本語のフォントは,/usr/local/share/texmf/fonts/map/ptex/dvips/psfonts_jp.map の中で次のように規定されています.

rml      Ryumin-Light-H
gbm      GothicBBB-Medium-H

一方,日本語以外のフォントを指定する *.map は,上記のようにコメントにされたままです. (これらのファイル自体がもう見つかりません.) しかし,変換自体はちゃんとされています. default である psfonts.map が効いているのでしょう.

目当ての Type1 フォントがある場合,無い場合はの動作は FreeBSD 4.9 と同様です.

FreeBSD 4.9 の環境を移すため,そこから ~/texmf を持ってきました. ただし,その中の配置は少し変える必要があります.

dvips/ptex/config.ps    ← dvips/base/ から移動.
fonts/map/*.map         ← dvips/base/ から移動.

これで,フォントの使い方に関しては FreeBSD 4.9 の環境と同じ結果になりました.

2.3  ghostscript 8

ghostscript 8 では,フォントとして TrueType と PS CID が使えます. (ghostscript 7 では使えた OCF は使えなくなっています.)

TrueType フォントは,/usr/local/share/ghostscript/8.64/Resource/Init/cidfmap にて以下のように指定します.

/Ryumin-Light << /FileType /TrueType /Path (Ryumin-Light.ttf) /SubfontID 0 /CSI [(Japan1) 3] >> ;
/GothicBBB-Medium << /FileType /TrueType /Path (GothicBBB-Medium.ttf) /SubfontID 0 /CSI [(Japan1) 3] >> ;

dvips によりできる ps file のフォントは Ryumin-Light-H, GothicBBB-Medium-H です. なのに,なぜこれで正常に動作するのか,疑問ではあります.

この二つのファイルは,/usr/local/share/ghostscript/fonts/ にて次のように symbolic link されています.

GothicBBB-Medium.ttf@ -> /usr/local/share/fonts/TrueType/ipag.ttf
Ryumin-Light.ttf@ -> /usr/local/share/fonts/TrueType/ipam.ttf

別の TrueType フォントを指定するには,cidfmap を変更せずにこの symbolic link を変える方法と,cidfmap を変更して直接フォントを指定する方法があります. 後者の場合,絶対パスで指定してもうまく行かなかったので,フォントを /usr/local/share/ghostscript/fonts/ に置くか,そこに symbolic link を作る必要があります.

一方 PS CID フォントですが,cidfmap にて例えば次のように指定します.

/GothicBBB-Medium  /HeiseiKakuGo-W5 ;

そうすると,/usr/local/share/ghostscript/8.64/Resource/CIDFont/HeiseiKakuGo-W5 を読みに行きます. ただし,directory CIDFont/usr/local/share/ghostscript/8.64/Resource/ にて

CIDFont@ -> /usr/local/share/fonts/CIDFont

のように symbolic link されたものであり,フォントのファイルの実際の置き場はそちらになります.

3. FreeBSD 8.4

ここは FreeBSD 7.2 との差異という形で記しますので,前節も併せて御覧下さい.

3.1  xdvi

フォントは /usr/local/share/texmf/xdvi/ptex/vfontmap にて,以下のように指定されています.

%/usr/local/share/texmf/dvipdfm/CIDFont/HiraMinPro-W3.otf
/usr/local/share/fonts/std.ja_JP/Ryumin-Light
        min
        tmin
(中略)
%/usr/local/share/texmf/dvipdfm/CIDFont/HiraKakuPro-W6.otf
/usr/local/share/fonts/std.ja_JP/GothicBBB-Medium
        goth
        tgoth

この二つのファイルは,/usr/local/share/fonts/std.ja_JP/ にて次のように symbolic link されています.

GothicBBB-Medium@ -> /usr/local/share/font-ipa/ipag.otf
Ryumin-Light@ -> /usr/local/share/font-ipa/ipam.otf

前節と同様に vfontmap を操作すればフォントを変更できますが,後述のように,この symbolic link を変更した方が楽です.

3.2  dvips

見落としていなければ,FreeBSD 7.2 と本質的に変わっておりません.

3.3  ghostscript 9

ghostscript 9 では,フォントとして TrueType, OpenType, PS CID が使えます.
フォントは /usr/local/share/ghostscript/9.06/Resource/Init/cidfmap にて以下のように指定します.

(1) TrueType, OpenType フォント
  次のようにファイル名を指定します.

/Ryumin-Light << /FileType /TrueType /Path (Ryumin-Light) /SubfontID 0 /CSI [(Japan1) 6] >> ;
/GothicBBB-Medium << /FileType /TrueType /Path (GothicBBB-Medium) /SubfontID 0 /CSI [(Japan1) 6] >> ;

ファイルは /usr/local/share/ghostscript/fonts/ 以外には探しに行きませんので,実体でも symbolic link でも良いから,そこに置いて下さい.

この例では,二つのファイルは次のように symbolic link されています.

GothicBBB-Medium@ -> /usr/local/share/fonts/std.ja_JP/GothicBBB-Medium
Ryumin-Light@ -> /usr/local/share/fonts/std.ja_JP/Ryumin-Light

すなわち,xdvi, gs ともに,最終的には std.ja_JP にて設定された symbolic link を介して同じファイルを使うように設定されています. 従って,フォントを変更する場合にはこの link を換える方が楽です.

(2) PS CID フォント
  次のようにファイル名を指定します.

/GothicBBB-Medium  /HeiseiKakuGo-W5 ;

そうすると,/usr/local/share/ghostscript/9.06/Resource/CIDFont/HeiseiKakuGo-W5 を読みに行きます.

FreeBSD 7.2 の場合と異なり,directory CIDFont はここに実体があります.
また,この CIDFont の中に directory fonts があり,それは /usr/local/share/fonts/CIDFont への symbolic link です.

ファイル名を ( ) で囲めば,CIDFont からの相対パスで指定することができます.

/GothicBBB-Medium    (/fonts/HeiseiKakuGo-W5) ;

あるいは,絶対パスで指定することもできます.

/GothicBBB-Medium    (/usr/local/share/fonts/CIDFont/HeiseiKakuGo-W5) ;

参考資料

[1] /usr/local/share/ghostscript/9.06/doc/Use.htm#CIDFontSubstitution