TeX や LaTeX にフォントを追加する手順はいささかこみいっています。しかし、要領さえ呑みこんでしまえば簡単です(えてしてそういうものですね)。フォントの配布形式としては、メタフォントや Type1 フォントがあります。入手しやすいのはだいたい Type1 形式のほうです。とはいえ、メタフォントにははっきりとした強みがあります。 Type1 フォントや TrueType フォントの場合は、まったく同じ形のフォントをサイズに応じて拡大ないし縮小するだけですが、メタフォントで生成されるフォントはサイズ次第で形そのものを調整できるのです。この特徴がなぜ望ましいかといえば、小さめのフォントは幅を(比較的)広く、大きめのフォントは狭く取るのが理想的である、ということが主な理由として挙げられます。
ここでは Type1 フォントのみを取りあげます。入手しやすいこと、そしてインストールしづらいことが理由です。
まず LaTeX のフォントについて駆け足で解説しておきましょう。LaTeX が Type1 フォントを扱うときは、次のようなファイルを使うことになります。
.pl -- プロパティリスト(property list)。人間が読んで理解できる形式の TeX フォントメトリックファイル。
.vpl -- 仮想プロパティリスト(virtual property list)。人間が読んで理解できる形式の仮想フォントファイル。
.fd -- フォント定義(font definition)ファイル。フォントの「ファミリー」を定義する。
.tfm -- TeX フォントメトリック(TeX font metric)ファイル。メトリクスについては用語集を参照のこと。Type1 フォントが使う .afm ファイルに相当する。フォントのメトリクスは、TeX でページをきちんとレイアウトする際に必要。
.vf -- 仮想フォント(virtual font)。エンコーディングの詳細情報を含んでおり、インタープリタとして機能する。TeX ではフォントとして扱われる。一例として、foobar-exp.pfb という妙なフォントにいくつかの(例えば 20 個の)代用文字が含まれていると仮定し、このうちの数個をある仮想フォントが利用するケースを想定してみよう(それ以外の文字は foobar.pfb フォントから呼び出す)。そこへ dvips が「仮想フォント foo.vf に含まれている 65 番の文字をおくれ」とリクエストをよこしたとする。TeX のスキームでは常に 65 番が "a" であると、dvips は承知しているのである。TeX の要求を受けた仮想フォント foo.vf は、Type1 フォント foobar.pfb に含まれている 14 番目の文字を呼び出すことになる(Type1 フォント foobar.pfb から "a" の代用文字が呼ばれることもある)。仮想フォントの仕組みは実に柔軟で、さまざまなフォントファイルからフォントを生成できる。Adobe の「エキスパート」フォントなどを使うときに便利。
.pk -- 出力デバイスに合わせて作られるビットマップフォント。たいていは必要に応じて(Type1 フォントやメタフォントから)生成される。概して解像度が高く(300〜1200 程度)、プリンタへの出力用。解像度が高いことや、各フォントのサイズごとにひとつずつ必要となることから、使用するディスクスペースはかなり多い。よって .pk ファイルは保存されず、キャッシュされることになっている。
.mf -- メタフォントのファイル(metafont files)。メタフォントはフォントのデザインに広く利用されているグラフィクスプログラミング言語で(ただし画像も扱える)、TrueType や Type1 のスキームより優れた点がたくさんある。主な弱点といえば、そのふたつほど場所を選ばずに利用できるわけではないこと。また、WYSIWYG 流の組版にもあまり向いていない。もちろん、組版システムとして TeX を利用するなら、これはたいした欠点とはならない。
TeX のディレクトリ構造を把握しておくのはよいことです。知っておくべき主なディレクトリを挙げましょう。
$TEXMF/fonts -- フォントを格納するメインのディレクトリ。
$TEXMF/fonts/type1 -- Type1 フォントのディレクトリ。
$TEXMF/fonts/type1/ベンダー名 -- 該当ベンダーの形態ファイルを格納するディレクトリ。
$TEXMF/fonts/type1/ベンダー名/フォント名 -- 該当フォントを格納するディレクトリ。たいていはごく普通の英名がついており、TeX でフォントを命名する際の暗号めいたルールにならう必要はない。
$TEXMF/fonts/afm/ベンダー名/フォント名 -- 該当ベンダーの該当フォントを定義する afm ファイルのディレクトリ。
$TEXMF/fonts/tfm/ベンダー名/フォント名 -- afm ディレクトリと同様。ただし、こちらには tfm ファイルが格納される。
$TEXMF/fonts/vf/ベンダー名/フォント名 -- 同上。ただし仮想フォントが格納される。
$TEXMF/fonts/source/ベンダー名/フォント名 -- 同上。ただしメタフォントのファイルが格納される。
$TEXMF/dvips/config/psfonts.map -- dvips 向けのフォントマップファイル。機能も形式も Ghostscript の Fontmap ファイルに近い。
$TEXMF/tex/latex/psnfss -- フォント定義ファイルをすべて格納するディレクトリ。
まずフォントに適切な名前をつけてやる必要があります。命名法については、システムにインストールされた fontinst の付属文書を参照してください(TeTeX の関連文書を格納したディレクトリの中に fontinst のサブディレクトリがあるはず)。ごく簡潔にまとめてしまえば、フォント名の形式は FNW{V}E{n} となります。
F はベンダーを示す一文字の略称(m = Monotype、p = Adobe、b = Bitstream、f = フリー)。
N はフォント名を示す二文字の略称(例えば ag は "avant garde" の略)。
W はフォントのウェイト(r = レギュラー、b = ボールド、l = ライト、d = デミボールド)。
V は必要に応じて文字の傾きを指定する変数(i = イタリック、o = オブリーク)。
E はエンコーディングのタイプを示す略称(ほぼ例外なく 8a、すなわち Adobe 標準エンコーディング)。
n は必要に応じて字幅を指定する変数(n = 狭く)。
では、以下のように fontinst を実行してください。
latex `kpsewhich fontinst.sty` |
\latinfamily{フォント名}{}\bye |
for X in *.pl; do pltotf $X; done for X in *.vpl; do vptovf $X; done |
dvips の設定ファイル psfonts.map を編集しましょう。ファイルの形式を説明するには例を挙げるのが一番です。
marr8r ArialMT <8r.enc <farr8a.pfa marbi8r Arial_BoldItalicMT <8r.enc <farbi8a.pfa marb8r Arial_BoldMT <8r.enc <farb8a.pfa marri8r Arial_ItalicMT <8r.enc <farri8a.pfa marr8rn Arial_Narrow <8r.enc <farr8an.pfa |
以下の文書を LaTeX で処理してみましょう。
\documentclass{article} \begin{document} \usefont{T1}{pga}{m}{n}\selectfont \huge Testing a new font \dots the quick red fox jumped over the lazy brown dogs \end{document} |
texconfig rehash |
.sty ファイルを作成すれば、もっと手軽にフォントを使えるかもしれません。$TEXMF/tex/latex/psnfss にあるファイルをテンプレートとして使ってください。