TeX/Font

Type 1 フォント

Type 1 フォントとは、Adobe 社が開発したページ記述言語である PostScript 形式で記述されたフォントで、文字の拡大・縮小が簡単にできるアウトラインフォントです。PostScript プリンタに導入したり、コンピュータ上で使ったりすることができます。

TeX でももちろん使うことができます。特に、Type 1 フォントがインストールされているときれいな PS, PDF ファイル等を出力することができます。

拡張子は .pfb(バイナリファイル)、.pfa(ASCII ファイル)がよく使われます。

市販されている欧文用 PostScript フォント集

#amazon(484431937X,left,[TrueType フォントパーフェクトコレクション])

#amazon(,clear)

Type 1 フォントの使用例

他形式からの変換

METAFONT(.mf)などから Type 1(.pfb, .pfa)への変換方法を解説します。

TeX での Type 1 フォントの利用

TeX で Type 1 フォントを利用するためには、 若干の作業をしなければなりません。具体的な手順としては

  1. ファイル名の変更(Berry 則にもとづいて)
  2. .afm ファイルの生成と修正(.afm ファイルが付属していなければ) [pf2afm, type1afm]
  3. .tfm ファイルの生成 [afm2tfm]
  4. .vf ファイルの生成 [afm2tfm]
  5. .enc ファイルの生成 [afm2tfm]
  6. .fd, .map ファイルの作成
  7. .sty ファイルの作成

を行います([ ] 内は使用するプログラムの名前です)。

3-6(3-7)の作業を自動でやってくれるのが fontinst パッケージです。この後説明します。

準備

次のようなツールが必要になる場合があります。

インストール方法については上のページを参考にしてください。

ファイル名の変更

フォント名 を参考にしてファイル名を変更します。

.afm ファイルの生成

pf2afm(t1utils に付属)

$ pf2afm xxxx.pfb

を実行します。同じディレクトリ内にある複数の .pfb ファイルを処理する場合は次のようにすると簡単でしょう。

$ for i in *.pfb; do pf2afm $i; done

pf2afm を実行すると

.notdef character ocurred among kern pairs
you'd better check the resulting AFM file.

のような警告が出る場合がありますが、今は無視します。

type1afm(t1lib に付属)

$ type1afm xxxx.pfb

を実行します。同じディレクトリ内にある複数の .pfb ファイルを処理する場合は次のようにすると簡単でしょう。

$ for i in *.pfb; do type1afm $i; done

.tfm, .vf, .enc ファイルの生成

teTeX ディストリビューションに標準で付属する

を用い、.afm ファイルを元に、.tfm, .vf, .enc ファイルを生成します。おおまかな流れは以下の通りです。

  1. afm2tfm の引数に .afm ファイルを指定し、以下のオプションをつけて実行する(.tfm ファイルと .vpl ファイルができる)。
    • -p dviware(dvips, dvipdfm など)で用いるエンコーディングを記述したファイルを指定する。
    • -t TeX 側で用いるエンコーディングを記述したファイルを指定する。
    • -v .vpl ファイルのファイル名を指定する。
  2. vptovf を用いて .vpl ファイルから .vf, .tfm ファイルを作成する。

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

$ afm2tfm hoge8a.afm -p 8r.enc -t ec.enc -v hoge8t.vpl hoge8r.tfm

8r.enc は TeX Base 1 用のエンコーディングファイルです。ec.enc は EC フォント用のエンコーディングファイルです(T1 エンコーディングに近いものです)。

これで hoge8r.tfmhoge8t.vpl が作成されます。上を実行すると

hoge Hoge " TeXBase1Encoding ReEncodeFont " <8r.enc

のような出力が得られますので、これを

hoge Hoge " TeXBase1Encoding ReEncodeFont " <8r.enc <hoge.pfb

に変更して hoge.map に書き込んでおきます。

次に

$ vptovf hoge8t.vpl

を実行し、hoge8t.vf, hoge8t.tfm ファイルを生成します。これで .tfm ファイルは hoge8r.tfmhoge8t.tfm の2種類ができたことになります(両方とも必要です)。

テスト

テストするときには、次のようにします。

まず、.sty ファイルを作っていないのなら、プリアンブルで使いたいフォントを指定する必要があります。Type 1 フォントを使う場合 T1 エンコーディングのはずですから、その指定も一緒にしておきましょう。

\usepackage[T1]{fontenc}
\renewcommand*{\rmdefault}{bpn}

.sty ファイルを作っているのなら、それを読み込めばよいですね。

\usepackage{baldine721}

あとは表示させたい文章を打っていけばよいだけです。ただし、いくつもの書体で同じ文章を表示させることになるので、表示させたい文字列を定義しておくとよいでしょう。例えば次のようにします。

\def\fontdisplay{%
 ABCDEFGHIJKLMNOPQRSTUVWXYZ\\
 abcdefghijklmnopqrstuvwxuz\\
 0123456789\\
 ffi ffl\\
 \&
}

すると、

\begin{quote}
  \textit{\fontdisplay}
\end{quote}

とするだけで上の文字列が(この場合イタリックで)表示されます。

スモールキャップ体の場合は次のようにして小文字との大きさの比を見ておくとよいでしょう。

a\textsc{a}
b\textsc{b}
c\textsc{c}
d\textsc{d}
e\textsc{e}

fontinst パッケージ

fontinst パッケージを用いると、多くの作業を自動で行ってくれます。fontinst パッケージの概要については上のページをご覧ください。

参考


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS