TeX/Font

TeX におけるフォントの機構

TeX におけるフォントの仕組みは若干複雑で、(p)TeX の標準のフォント*1 しか使っていないという人も多いのではないでしょうか。最近は Times, New Century, Palatino といったパッケージが用意されていますので、これを使っている人もいることでしょう。以下では、TeX 用に用意された(欧文)フォントを作成、インストールするために必要になる、「TeX におけるフォントの機構」を簡単に解説します。

参考

.tfm ファイル

TeX が組版を行うときは、字形の情報は必要ありません。「一つ一つの文字に外接する四角形を順に並べていく」というのが大体のイメージです。そのため、文字の

の情報があれば組版できます。「深さ」は聞き慣れない言葉ですが、ローマ字の場合を考えてみてください。ローマ字は基準線(baseline)の上に並べていきますが、`g' などは基準線より下に出ます。その、基準線より下に出ている部分が文字の「深さ」です。

実は、これだけでは情報が足りません。

に関する情報も必要です。上の言葉について、詳しくは他のページで調べてみてください。

これらの情報は全て .tfm(TeX Font Metric file)に収められています。したがって、TeX で組版する際には .tfm(だけ)があればよいということになります。実際に組版されたものを目で見る(xdvi や PDF, PS で見る)ためには上の情報だけでは無理ですので、文字の形を収めた何らかのファイルが必要になります。

.tfm ファイルの作成

TeX が組版をするには、まず .tfm ファイルが必要ですので、.tfm ファイルが用意されていないフォントの場合は、自分で作成しなければなりません。例えば Type 1 フォントを入手すると .afm(Adobe Font Metric file)がついてきますが、これを .tfm に変換する必要があります。TrueType, OpenType フォントは、内部にメトリックと字形に関する情報を含んでいますので、何らかのツールを使ってメトリックの情報を抽出し、.tfm ファイルにする必要があります。ここでは具体的な方法は述べません。詳しくは

を参照してください。

エンコーディング

コンピュータ上で文字を扱う場合には、それぞれの文字に番号を与えて管理しています。この番号のことを「文字コード」といいます。それぞれの文字コードと、実際のフォントに含まれるグリフ(字形)との対応関係を「エンコード」といいます。

文字コードはシステムによって異なります*2。TeX で用いるフォントの文字コードも一種類ではありませんので、エンコーディングも複数存在することになります。

NFSS2 におけるエンコーディング

エンコード解説
OT1Knuth 教授が定義した、本文用のエンコード。1つのセットは128文字で構成されている。
T1TUG(TeX Users Group)のメンバーが定義した、OT1 を拡張したエンコード。1つのセットは256文字で構成される。
TS1Text Symbol 用のエンコード。主に記号が収められている。

OT1 と T1 エンコーディングの大きな違いは、構成する文字数です。128文字ではアクセントつきのローマ文字を全て収録することができないので、文字と記号を組み合わせてそれを表現しますが、256文字ならばそれらを収録できますので、アクセントつきのローマ文字をそれぞれ用意することができます。欧文系人文学では T1 エンコーディングが必須といってもよいでしょう。

Berry 則におけるエンコーディング

エンコード解説
8aAdobe Standard エンコーディング。Type 1 フォントは普通このエンコーディングである。
8rTeX Base 1 エンコーディング。仮想フォント用のエンコーディング(後述)。
7tTeX Text エンコーディング。OT1 に対応する。
8tCork エンコーディング。T1 に対応する。

仮想フォント(virtual font)

仮想フォント(virtual font)とは、次のような問題を解決するための仕組みです。

  1. 複数のフォントを単一のフォントとして扱う
  2. 今扱っているフォントのあるコードに対応するグリフ(字形)がどのフォントのどのコードに対応するか

仮想フォントは実際には字形の情報は含んでおらず、(上の問題からも明らかなように)エンコーディングを拡張したようなものです。既に述べた TeX におけるフォントの機構からもわかるように、TeX は仮想フォントを用いません。TeX が出力した .dvi ファイルを見たり、変換したりするときに用いられます。

仮想フォントの拡張子は .vf です。

エンコーディングの対応

TeX が用いるエンコーディングと、一般に配布されているフォントのエンコーディングは同じだとは限りません。例えば Type 1 フォントは Adobe Standard エンコーディング(TeX では 8a エンコーディング)ですので、そのまま TeX で扱うことはできません。このような場合、仮想フォントを用いてエンコーディングを対応させます。その際に TeX Base 1 エンコーディング(8r)を間に挟みます。TeX Base 1 エンコーディングとは、さまざまフォントのエンコーディングを、仮想フォントを通じて共通に使えるようにする目的で準備されているものです。

おおよその手順は次のようになります。なお、ここでは Type 1 フォントの例で説明します。Type 1 フォントの多くはアクセントつきのローマ文字を含んでいますので、TeX 側のエンコーディングは OT1(7t)ではなく T1(8t)を用います。

  1. TeX では T1(8t)を使用する
  2. dviware(xdvi, dvipdfm, pdftex)では最終的に 8r エンコーディングを使用する
  3. 仮想フォントで 8t と 8r の差を埋める

Type 1 フォントには .afm(Adobe Font Metric file)がついてきますから、それを 8r.enc などのエンコーディングを記述したファイルを使って .tfm, .vf ファイルを生成し、.tfm, .enc, .pfb などの対応を記述した .map ファイルを作成したうえで適切な場所にインストールすれば TeX で使えるようになります。

参考


*1 Computer Modern、明朝体、ゴシック体。
*2 日本語なら Shift-JIS, EUC-JP などがあり、よく「文字化け」を起こします。これは文字コードが異なるためです。

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