MacPorts の pTeX における和文多書体環境の整えかた

Written by たちゃな@巫研 < tatyana at miko dot org >

=更新履歴=
公開 (Dec 23, 2006)
欧文多書体環境の実現方法を追加 (Dec 30, 2006)
fontforge による和文斜体の実現方法を削除 (Aug 31, 2009)
lcdf-typetools @2.92_0 における variants 指定方法の変更に対応 (Oct 31, 2011)

もくじ

はじめに

現在一般に流通している pTeX ディストリビューションでデフォルト設定されている和文フォントは大概の場合、 明朝 (rml) とゴシック (gbm) の2種類だけです。 大多数のエンドユーザ環境では バリエーションに富んだ和文フォントが用意されていないため、 フォントの設定が必要最小限にとどめられているのでしょう。

一方、Mac OS X にはヒラギノ6書体が搭載されており、 他の環境と同じ感覚で使っていたのでは、残る4書体が無駄になってしまいます。 これは少々勿体ないと言わざるを得ません。もちろん、 フォントを必要以上に使うのは決して好ましいことではありませんが、 状況に応じて適切に使い分けることができるなら、 それはドキュメントの魅力を増すことにもつながるでしょう。

本稿では MacPorts の pTeX を題材に、和文多書体(ヒラギノ基本6書体のほか、 ユーザ定義の和文フォントを含む)を利用可能にするための基本的な方法について、 簡単に説明します。 MacPorts 以外の pTeX でも、 ptetex3 ベースのディストリビューションであれば、 多少の手直しで適用できると思います。

おすすめの設定

JIS X 0208 範囲内の文字しか利用しない場合の和文多書体環境の実現方法

JIS X 0208 範囲内の文字、 つまり、JIS 第一・第二水準の漢字しか利用しないという場合には、 以下の方法で多書体環境を実現することができます。

morisawa.sty によるヒラギノ5書体の利用

MacPorts の pTeX では、morisawa.sty を用いることで一応はヒラギノ5書体を利用できます。 本来これはモリサワの基本5書体を出力するためのスタイルファイルですが、 MacPorts では PDF へのフォント埋め込みを徹底するため、 デフォルトでヒラギノによる代替出力となるようにフォントのマッピングをおこなっています。 (この仕様が好ましくない場合には、morisawa-hiraginoEmbed.map の代わりに morisawa.map を用いてください。)

morisawa.sty の使用例を以下に示します。

\documentclass{jsarticle}
\usepackage{morisawa}

\begin{document}
{\kanjifamily{rml}\selectfont これはリュウミンのふりをしたヒラギノ明朝W3です。}
{\kanjifamily{fma}\selectfont これは太ミンのふりをしたヒラギノ明朝W6です。}
{\kanjifamily{gbm}\selectfont これは中ゴシックBBBのふりをしたヒラギノ角ゴW3です。}
{\kanjifamily{gbm}\fontseries{bx}\selectfont これは太ゴB101のふりをしたヒラギノ角ゴW6です。}
{\kanjifamily{jun}\selectfont これはじゅんのふりをしたヒラギノ丸ゴW4です。}
\end{document}

otf.sty との関係

ヒラギノを出力することが目的ならば、 morisawa.sty を使うよりも otf.sty の deluxe, expert オプションを使ったほうが、 より良い出力結果が得られます。 たとえば、morisawa.sty では組方向に合わせた縦組み・横組み専用仮名、 ルビ用仮名の使い分けといった芸当はできません。 また、使用できる書体も5書体にとどまります。 こうした理由から、morisawa.sty の新規利用はお勧めしません。 今後は状況の許す限り otf.sty を使ったほうが良いでしょう。

任意のフォントを追加したい場合

任意の和文 TrueType/OpenType フォントを TeX で利用するには、 幾つかの方法があります。 ここでは makejvf を使って TFM ファイルと VF ファイルを用意する方法について説明します。

以下実例として、 AXIS フォント (AXIS Regular) を TeX で扱えるようにする方法を示します。

フォントのインストール

まず、 タイププロジェクトのサイトから AXIS Regular フォントの試用版をダウンロードしてください。 試用版では Adobe Japan 1-3 の文字セットのうち常用漢字以外の漢字が省かれていますが、 正規登録を済ませた個人であれば、私用・商用を問わず無料で利用できるとのことです。

アーカイブを展開することで AXIS-R-Joyo.otf が得られます。 $TEXMF-LOCAL ディレクトリ以下に fonts/opentype というディレクトリを作成し、 その中にフォントファイルを配置しておきます。

$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/opentype
$ sudo install -m 0644 AXIS-R-Joyo.otf /opt/local/share/texmf-local/fonts/opentype

TeX 用 TFM ファイルの用意

最初に、TeX が DVI ファイルを出力する際に用いるフォントメトリックファイルを用意します。 このフォントメトリックに基づいて AXIS フォントの各文字が紙上に配置されていくことになります。 ファイル名は好きに決めて構いません。ここでは Axis-R-Joyo-H.tfm とします。 内容は jis.tfm をコピーしたものです。

pTeX 上で和文の組版をおこなう際のフォントメトリックとしては min10.tfm が歴史的に長く使われてきましたが、 このフォントメトリックには癖があり、 新規の利用はお勧めしません。 jis.tfm は JIS X 4051 「日本語文書の行組版方法」に沿った組版をおこなうことのできるフォントメトリックファイルで、 jsclasses においても標準的に使われています。 (勿論、必要があれば他のフォントメトリックを用いて頂いて構いません。)

$ mkdir -p ~/Desktop/tmp
$ cd ~/Desktop/tmp
$ cp /opt/local/share/texmf/fonts/tfm/ptex/jis.tfm ./Axis-R-Joyo-H.tfm
$ cp /opt/local/share/texmf/fonts/tfm/ptex/jis-v.tfm ./Axis-R-Joyo-V.tfm

DVIware 用 VF/TFM ファイルの生成

次に、DVIware が DVI ファイルを表示・印刷する際に用いる仮想ファイルとフォントメトリックファイルを makejvf で生成します。 makejvf は、2007 年 2 月 10 日以降の pTeX パッケージには標準で含まれています。

makejvf の使い方としては、第一引数に pTeX の使う TFM 名(=先ほど用意した TeX 用 TFM ファイル)、第二引数に DVIware の使う TFM 名を指定します。

$ makejvf Axis-R-Joyo-H.tfm axis
$ makejvf Axis-R-Joyo-V.tfm axis-v

これにより、DVIware 用 VF/TFM ファイル(Axis-R-Joyo-H.vf と axis.tfm)が生成されますので、 先ほどの TeX 用 TFM ファイル(Axis-R-Joyo-H.tfm)とともに、TeX のディレクトリツリーに追加します。

$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/tfm/axis
$ sudo install -m 0644 Axis-R-Joyo-H.tfm Axis-R-Joyo-V.tfm axis.tfm axis-v.tfm \
    /opt/local/share/texmf-local/fonts/tfm/axis

$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/vf/axis
$ sudo install -m 0644 Axis-R-Joyo-H.vf Axis-R-Joyo-V.vf \
    /opt/local/share/texmf-local/fonts/vf/axis

ここで DVIware の挙動について簡単におさらいしておきましょう。 まず、DVIware は DVI ファイルを読み込んだ際、文書中に AXIS フォント (Axis-R-Joyo-H) が使われているのを発見すると、 そのフォント名と同名の VF ファイル (Axis-R-Joyo-H.vf) を探しにいきます。 VF ファイル中には、フォントを印字すべき領域に対して、 実際にどのフォントのどのグリフを印字するのか、 および、グリフの印字位置をどれだけ補正する必要があるのか、などといった情報が含まれます。 たとえば今回の場合には、印字するフォントとして "axis" という名前のフォントを使いなさいという定義が VF ファイル内に書き込まれています。 また、jis フォントメトリックでは括弧や句読点の類は通常の半分の幅で組版がおこなわれますが、 フォントファイル側ではそうしたグリフも全角幅として収録されている関係上、 印字する際には適宜位置を補正してやらなければなりません。 VF はそうした役割を担います。
その後、DVIware が最終的に "axis" フォントを印字する際には、 axis.tfm のフォントメトリックに書かれた情報も参照したのち、 ようやく印字がおこなわれるという仕組みになっています。

フォントのマッピング

DVIware が "axis" というフォントを AXIS-R-Joyo.otf で印字できるようにするため、以下の内容でフォントマップファイルを用意してください。

[axis.map]
axis   H AXIS-R-Joyo.otf
axis-v V AXIS-R-Joyo.otf

これも今までのファイルと同様に、TeX のディレクトリツリーに追加します。

$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/map/dvips/axis
$ sudo install -m 0644 axis.map /opt/local/share/texmf-local/fonts/map/dvips/axis

スタイルファイルの用意

文書作成時に AXIS フォントを手軽に使えるよう、 以下のようなスタイルファイルを用意しておくと便利です。

[axis.sty]
\NeedsTeXFormat{pLaTeX2e}
\ProvidesPackage{axis}[2006/01/01]
\DeclareKanjiFamily{JY1}{axis}{}
\DeclareKanjiFamily{JT1}{axis}{}
\DeclareFontShape{JY1}{axis}{m}{n}{<-> s * [0.961] AXIS-R-Joyo-H}{}
\DeclareFontShape{JT1}{axis}{m}{n}{<-> s * [0.961] AXIS-R-Joyo-V}{}
\newcommand{\axisdefault}{axis}
\DeclareRobustCommand\axisfamily
  {\not@math@alphabet\axisfamily\relax
   \kanjifamily\axisdefault\selectfont}
\def\textaxis#1{\relax\ifmmode\hbox\fi{\axisfamily #1}}
\endinput
$ sudo install -m 0755 -d /opt/local/share/texmf-local/ptex/platex/axis
$ sudo install -m 0644 axis.sty /opt/local/share/texmf-local/ptex/platex/axis

なお、 スタイルファイル内でフォントのサイズを 0.961 倍しているのは、 jsclasses との兼ね合いからです。 jsclasses では、最終的な仕上がりの際に 明朝とゴシックのフォントが写植の 13 級のサイズになるよう、 スタイルファイル内でフォントのサイズを 0.961 倍しています。 そのため、jsclasses を利用する場合にはユーザの追加したフォントのサイズも 同様に 0.961 倍しておかないと、 デフォルトのフォントよりも一回り大きく印字されてしまいます。 (jsclasses を利用しない場合には等倍のままで構いません。)
ちなみに、min10 のフォントメトリックでは和文と欧文を混植した際のバランスを取るため、 10pt の和文フォントは TFM 内部で事前に 0.962216 倍され、約 9.6pt のフォントとして設定されています。 jis のフォントメトリックも min10 に倣い 0.962216 倍に設定されています。 一方、otf.sty 添付の TFM では min10 に迎合することなく、等倍のままの設定 (10pt) となっています。 otf.sty は、その管轄下にあるフォントに関しては スタイルファイル内部にて適切な倍率 (jsclasses 未使用時には 0.962216 倍、使用時には 0.961 を上掛けして約 0.92469 倍) となるよう対策が施されており、 ユーザが普段この違いを気に掛ける必要はありませんが、 万一、TeX 用 TFM ファイルの雛形として(jis.tfm ではなく)otf.sty 添付の TFM を用いた場合には、 スタイルファイル側で設定するフォントの倍率は 0.961 倍ではなく、 0.92469 倍としなければならない点に注意してください。

このスタイルファイルを TeX 文書のプリアンブルにてインクルードすることにより、 {\axisfamily こういったコマンドで} \textaxis{AXIS フォントを出力} できるようになります。

本文用のフォントとして使いたい場合には、TeX 文書のプリアンブルで以下のように書けば良いでしょう。

\documentclass{jsarticle}
\usepackage{axis}

\renewcommand{\mcdefault}{axis}

\begin{document}
...

変更の反映

最後に mktexlsr と updmap-sys をおこない、変更を反映させてください。

$ sudo mktexlsr
$ sudo updmap-sys --enable KanjiMap axis.map

出力結果

sample.pdf
ちなみに、行末の中点が末端方向に寄ってしまうのは jis.tfm の癖です。
これが好ましくない場合には、TeX 用 TFM ファイルの雛形に jisn.tfm を使うと良いでしょう。

混植をおこないたい場合

TeX における VF(仮想フォント)の機構は、 その名のとおり複数のフォントを組み合わせ、あたかも一つのフォントセットとして扱ったり、 複数のグリフを合成して新しいグリフを作成したりすることが可能です。 これを活用することで、たとえば漢字と仮名で別々のフォントを使う(混植する)ことが可能になります。

以下サンプルとして、漢字部分のフォントにヒラギノ、仮名部分のフォントに AXIS を混植する、 MyFont-H という仮想フォントを生成してみることにします。

TeX 用 TFM ファイルの用意

jis.tfm をベースに MyFont-H.tfm という名前で TFM ファイルを用意します。

$ cd ~/Desktop/tmp
$ cp /opt/local/share/texmf/fonts/tfm/ptex/jis.tfm ./MyFont-H.tfm
$ cp /opt/local/share/texmf/fonts/tfm/ptex/jis-v.tfm ./MyFont-V.tfm

DVIware 用 VF/TFM ファイルの用意

makejvf の -K オプションを使うことで、仮名書体を指定できます。 ここでは漢字フォントに hmgothr-h、仮名フォントに axis を指定しています。

$ makejvf -K axis   MyFont-H.tfm hmgothr-h
$ makejvf -K axis-v MyFont-V.tfm hmgothr-v
$ rm axis*.tfm hmgothr*.tfm (これらの TFM は既にあり、今回生成されたものは不要です)

$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/tfm/myfont
$ sudo install -m 0644 MyFont*.tfm /opt/local/share/texmf-local/fonts/tfm/myfont

$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/vf/myfont
$ sudo install -m 0644 MyFont*.vf /opt/local/share/texmf-local/fonts/vf/myfont

スタイルファイルの用意

[myfont.sty]
\NeedsTeXFormat{pLaTeX2e}
\ProvidesPackage{myfont}[2006/01/01]
\DeclareKanjiFamily{JY1}{myfont}{}
\DeclareKanjiFamily{JT1}{myfont}{}
\DeclareFontShape{JY1}{myfont}{m}{n}{<-> s * [0.961] Myfont-H}{}
\DeclareFontShape{JT1}{myfont}{m}{n}{<-> s * [0.961] Myfont-V}{}
\newcommand{\myfontdefault}{myfont}
\DeclareRobustCommand\myfontfamily
  {\not@math@alphabet\myfontfamily\relax
   \kanjifamily\myfontdefault\selectfont}
\def\textmyfont#1{\relax\ifmmode\hbox\fi{\myfontfamily #1}}
\endinput
$ sudo install -m 0755 -d /opt/local/share/texmf-local/ptex/platex/myfont
$ sudo install -m 0644 myfont.sty /opt/local/share/texmf-local/ptex/platex/myfont

変更の反映

$ sudo mktexlsr

使用例と組版結果

sample.pdf
縦書き時には MyFont-V が使われます。
AXIS はヒラギノ角ゴに酷似したフォントのため、
両者を混植しても、あまりシナジー効果は得られませんでした。

機会があれば、游築やタイポス系などの仮名書体とヒラギノ明朝との混植を是非試みてください。 これらの組み合わせでは表現の幅がグンと広がり、より楽しめることと思います。

Tips: より高度な混植のために

makejvf の -K オプションで漢字/仮名フォントの混植をおこなった場合、 JIS 0x2121〜2576 までの領域にある文字は仮名フォント、 それ以外の領域にある文字は漢字フォントで出力されるようになります。

JIS 0x2121〜2576の範囲には、ひらがなやカタカナのほか、 約物(句読点、括弧類)、記号、全角の英数字なども含まれています。 この仕様が好ましくない場合には、makejvf が出力した VF ファイルを直接書き換えて対処する必要があります。

日本語 VF を書き換えるには、ツールを使って VP ファイル(プロパティ形式)に変換し、 編集をおこなったあと再度 VF ファイルへと逆変換することでおこないます。 VP ファイルはテキストファイルとなりますので、適当なエディタで編集が可能です。

VF ファイルを VP ファイルに変換するためのツールとして、web2c には vftovp が用意されていますが、 日本語 VF ファイルは扱えないため、代わりに松田 一朗 さんの disvf.pl を用います。 pTeX のパッケージには含まれていませんので、以下のコマンドで別途導入してください。

$ sudo port install disvf

また、VP ファイルを VF ファイルに逆変換するには、ovp2ovf で代用できます。 ovp2ovf は Omega の一部として pTeX のパッケージに含まれているツールです。

使用例を以下に示します。

$ disvf.pl Myfont-H.vf > Myfont-H.vp

$ emacs Myfont-H.vp

$ ovp2ovf Myfont-H.vp
$ rm MyFont-H.ofm   (OFM ファイルは不要)
$ mv Myfont-H.ovf MyFont-H.vf

otf.sty を用いた和文多書体環境の実現方法

以下のような要求のある場合には、otf.sty を使って多書体環境を実現するのが良いでしょう。

deluxe オプションによるヒラギノの利用

otf.sty をインクルードする際に deluxe オプションを指定すると、 LaTeX2e の NFSS における mc/m, mc/bx, gt/m, gt/bx, gt/eb, mg/m がヒラギノ6書体へとマップされ、 簡単に多書体/多ウェイト化をおこなうことができます。

使用例を以下に示します。

[sample.tex]
\documentclass{jsarticle}
\usepackage[deluxe]{otf}

\begin{document}
{\mcfamily これはヒラギノ明朝W3です。}
{\mcfamily\bfseries これはヒラギノ明朝W6です。}
{\gtfamily これはヒラギノ角ゴW3です。}
{\gtfamily\bfseries これはヒラギノ角ゴW6です。}
{\mgfamily これはヒラギノ丸ゴW4です。}
{\gtfamily\ebseries これはヒラギノ角ゴW8です。}
{\mcfamily\ltseries そして、もしあれば、これはヒラギノ明朝W2です。}
\end{document}

組版結果は以下のとおりです。

ヒラギノ明朝W2 を使いたい場合

ヒラギノ明朝W2 は Mac OS X に添付されておらず、別売のフォントですが、 otf.sty 中ではデフォルトで mc/lt にマップされています。 ヒラギノ明朝W2 は本文用のフォントとしてよく利用されるため、 このような措置がとられているのかも知れません。

ヒラギノ明朝W2 のフォントを持っている場合には、 $TEXMF-LOCAL/fonts/opentype/ に HiraMinPro-W2.otf というファイル名で配置したのち、 mktexlsr を実行してください。

$ sudo xinstall -m 0755 -d /opt/local/share/texmf-local/fonts/opentype
$ sudo xinstall -m 0644 "ヒラギノ明朝 Pro W2.otf" \
     /opt/local/share/texmf-local/fonts/opentype/HiraMinPro-W2.otf

$ sudo mktexlsr

本文用のフォントとしてヒラギノ明朝W2 を使いたい場合

二つの方法があります。 一つは、$TEXMF/fonts/map/dvipdfm/otf-hiragino.map 中の HiraMinPro-W3 を HiraMinPro-W2 に置き換えた後、 updmap-sys を実行する方法です。 これはシステムワイドの変更となります。

もう一つは、 このようなスタイルファイルを用意して otf.sty のインクルード後にプリアンブルで読み込ませる方法です。 これは個々のドキュメント単位での変更となります。

expert オプションによる縦組み・横組み専用仮名の利用

otf.sty をインクルードする際に expert オプションを併せて指定すると、 組方向に応じて縦組み・横組み専用仮名が自動的に用いられるようになります。

[sample.tex]
\documentclass{jsarticle}
\usepackage[deluxe,expert]{otf}

\begin{document}
...

組版結果は以下のようになります。



上:expert 未使用時/下:expert 使用時。
ディスプレイ上では違いが判別しにくいかも知れません。

そのほか、ルビ専用仮名も利用できるようになります。 ルビ専用仮名は小さなサイズでも判読しやすいようにデザインされており、 {\rubyfamily このようにして} 明示的に呼び出すこともできますが、 藤田眞作 さんの furikana.sty を使用してルビを振る場合には自動的にルビ専用仮名が使われるため、 通常は意識して使い分ける必要はありません。 furikana.sty を含んだパッケージ集は、MacPorts では次のようにして導入できます。

$ sudo port install ptex-sfmacros

任意のフォントを追加したい場合

\UTF{...} や \CID{...} を使ってフォントのグリフを呼び出す必要のない場合には、 先の「JIS X 0208 範囲内の文字しか利用しない場合の和文多書体環境の実現方法」に示した方法で フォントを追加できます。

otf.sty で扱えるフォントをユーザが追加したい場合、 つまり、追加したフォントのグリフを \UTF{...} や \CID{...} で直接呼び出せるようにするには、 otf.sty の様式に沿った多数のフォントメトリックファイル、および仮想フォントファイルを用意しなければならず、 少々面倒な作業となります。

これについては、本稿では説明を省きます。詳細についてお知りになりたい場合は otf.sty の配布物をご覧ください。

代替手段: フォントマップの書き換え

文書中で使用していないフォントがある場合、 たとえばヒラギノ明朝W2 などを使っていないのであれば、 それを他のフォントで置き換えることで、 とりあえず目的のフォントを扱えるようにできます。 otf.sty で使用されるデフォルトのフォントマップファイルは $TEXMF/fonts/map/dvipdfm/otf-hiragino.map です。 設定変更後には updmap-sys を実行して反映させてください。 (ちなみに、フォントマップファイル中にある otf-u〜 のフォントは、 グリフを \UTF{...} で呼び出す際に利用されます。 otf-c〜 のフォントは、グリフを \CID{...} で呼び出す際に利用されます。)

おまけ

斜体 (Oblique) を使いたい場合

fontforge などを使って斜体フォントを作り、登録して使う方法もありますが、TeX Q&A 23662 にあるような、graphicx パッケージを用いる方法が簡単だと思います。

「日本の伝統色」スタイルファイル

文章に変化を付けるには、フォントを変える以外にも、たとえばインク(色)を変えるという手段もあります。 (もちろん、仕上がりがモノクロでなければならないというような制約のある場合には使えませんが。)

個人的に作成した LaTeX2e 上で日本の伝統色を扱うためのスタイルファイル (jcolor.sty) がありますので、ここに置いておきます。御自由にお使いください。 (同様のスタイルファイルは他にも幾つかありますが、これは 福田邦夫著『日本の伝統色―色の小辞典』(読売新聞社 1987)に掲載の CMYK 値に準拠したものです。 著者によって色合いが微妙に異なるようなので、使い較べてみるのも良いでしょう。)

インストールは以下のようにしておこなってください。

$ wget http://miko.org/~tatyana/tech/OSX/pTeX/jcolor.sty
$ sudo install -m 755 -d /opt/local/share/texmf-local/tex/latex/jcolor
$ sudo install -m 644 jcolor.sty /opt/local/share/texmf-local/tex/latex/jcolor
$ sudo mktexlsr

組版したサンプルを以下に示します。


155 色あります。色を変えると、文章はまた違って見えてきます。

なお、本スタイルファイルの作成にあたっては http://homepage3.nifty.com/zatsunen/color/index.htm に掲載のデータを利用させて頂きました。 (Perl によるテキスト処理で自動変換させています。)

任意の欧文フォントを追加したい場合 (TrueType/Type 1)

任意の欧文 TrueType フォントを TeX で利用するには、 まず ttf2pt1 を使って PostScript Type 1 フォントに変換してしまうのが簡単です。

以下の例では、無料で入手できる PacFont (TrueType) を PostScript Type 1 フォントに変換したのち、 afm2tfm を使って TeX で扱えるようにする方法を示します。

TrueType フォントの入手

まず、webpagepublicity.com などといったサイトから PacFont をダウンロードします。

$ mkdir -p ~/Desktop/tmp
$ cd ~/Desktop/tmp
$ wget http://www.webpagepublicity.com/free-fonts/p/PacFont.ttf

Type 1 フォントへの変換

欧文 TrueType フォントを TeX で扱えるようにするには、まず、 ttf2pt1 ユーティリティを使って PostScript Type 1 形式のフォントに変換する必要があります。 ttf2pt1 は pTeX の配布物に含まれていないので、以下のようにして別途導入してください。

$ sudo port install ttf2pt1

TrueType フォントを PostScript Type 1 フォントに変換するには以下のようにします。 これにより PacFont.afm と PacFont.pfb が生成されます。

$ ttf2pt1 -b PacFont.ttf

Type 1 フォントのインストール

PFB ファイルを TeX のディレクトリツリーに追加します。 AFM ファイルは TeX では直接利用されることはありませんので、追加の必要はありません。

$ sudo install -m 755 -d /opt/local/share/texmf-local/fonts/type1/PacFont
$ sudo install -m 644 PacFont.pfb /opt/local/share/texmf-local/fonts/type1/PacFont

DVIware 用 TFM ファイルの用意

AFM を afm2tfm で処理し、VF のプロパティリストと TFM ファイルを作成してください。afm2tfm は pTeX に含まれています。

$ afm2tfm PacFont.afm -p 8r.enc -t EC.enc -v PacFont.vpl rPacFont.tfm

afm2tfm の詳細に関しては、マニュアルを参照してください。

ちなみに、PostScript Type 1 フォントで用いられるエンコードは Adobe Standard Encoding と呼ばれます。 飾り文字の収録された Type 1 フォントなどでは Font Specific となり、別種の勝手な配列になります。 TeX の標準的な欧文テキストエンコーディング (OT1) は 7ビットですが、 Type 1 フォントに収録されるグリフは 128 個(7 ビット)に限定されません。 つまり、Type 1 フォントを OT1 エンコードで呼び出したのでは、 出力できないグリフが沢山生じてしまいます。 もっとも、今回のように TrueType から変換したような粗悪な Type 1 フォントでは、 Adobe Standard Encoding にて規定されているグリフの多くが元々存在しませんが、 真っ当な PostScript Type 1 フォントを TeX 上で最大限活用しようという場合には、 フォントを 8 ビットのエンコード(=TeX の仕様限界)で呼び出せるようにし、 かつ、そのコード体系に Type 1 フォントの各グリフを適切にマッピングしてやらなければなりません。 (実際のところ、Type 1 のグリフ数は 8 ビットにも限定されないので、フォントによっては結局使えない文字が出て来ることもありますが。) この目的のために、上の例では PostScript Type 1 フォント(をドライブする raw TFM)のエンコードとして 8r.enc、 VF ファイルのエンコードとして EC.enc (T1) を用いています。 8r エンコードは Type 1 に収録されているグリフを効率的に 8 ビットの枠内に押し込めたエンコードです。 ちなみに、 8r エンコードには含まれるが EC エンコードには含まれないというコードも存在します。 そのような文字を出力したい場合には双方のエンコードに 8r を使い、 文書中からは T1 ではなく 8r でフォントを呼び出すという方法も考えられます。

afm2tfm コマンドの結果として PacFont.vpl と rPacFont.tfm が生成されます。 なお、TFM ファイルの先頭にある r の文字は raw を意味する接頭辞で、 このファイルが DVIware の使う raw TFM ファイルであることを判別しやすいようにするためのものです。 (TeX における正式なフォントの命名規則を知りたい場合は、Filenames for TeX fonts を参照してください。)

DVIware 用 VF と TeX 用 TFM ファイルの生成

今しがた生成された VPL ファイルを元に、VF ファイルを生成します。

$ vptovf PacFont.vpl

vptovf コマンドの結果として DVIware 用の VF と TeX 用の TFM ファイル(PacFont.vf と PacFont.tfm)が生成されますので、 先ほどの DVIware 用 TFM ファイル(rPacFont.tfm)とともに、TeX のディレクトリツリーに追加します。

$ sudo install -m 755 -d /opt/local/share/texmf-local/fonts/tfm/PacFont
$ sudo install -m 644 rPacFont.tfm PacFont.tfm /opt/local/share/texmf-local/fonts/tfm/PacFont

$ sudo install -m 755 -d /opt/local/share/texmf-local/fonts/vf/PacFont
$ sudo install -m 644 PacFont.vf /opt/local/share/texmf-local/fonts/vf/PacFont

フォントのマッピング

afm2tfm を実行した際に出力されたメッセージを参考に、マップファイルを作成します。 今回の場合は以下のようになります。

[PacFont.map]
rPacFont PacFont " TeXBase1Encoding ReEncodeFont " <8r.enc <PacFont.pfb

これも今までのファイルと同様に、TeX のディレクトリツリーに追加します。

$ sudo install -m 755 -d /opt/local/share/texmf-local/fonts/map/dvips/PacFont
$ sudo install -m 644 PacFont.map /opt/local/share/texmf-local/fonts/map/dvips/PacFont

変更の反映

mktexlsr と updmap-sys を呼び出し、変更を反映させます。

$ sudo mktexlsr
$ sudo updmap-sys --enable Map PacFont.map

出力結果

文書中で PacMan フォントを使うには、たとえば以下のようにします。

\documentclass{jsarticle}
\usepackage[T1]{fontenc}

\DeclareFontFamily{T1}{myfont}{}
\DeclareFontShape{T1}{myfont}{m}{n}{<-> PacFont}{}

\begin{document}
The quick brown fox jumps over the lazy dog.

{\fontfamily{myfont}\selectfont The quick brown fox jumps over the lazy dog.}
\end{document}

ここで、デフォルトのフォントエンコードを OT1 から T1 に変更している理由は、 もちろん、先ほどの afm2tfm コマンドにてフォントのエンコードを EC.enc と指定したためです。 何らかの理由により、デフォルトのエンコードを OT1 のままにしておきたい場合には、 \usepackage[T1]{fontenc} の行を削除し、\fontfamily の前に \fontencoding{T1} を呼ぶようにしてください。 なお、T1 エンコードをデフォルトのエンコードにする場合には、別途 cm-super パッケージを導入しておくと良いでしょう。MacPorts では sudo port install tex-cm-super で導入できます。

組版結果は以下のようになります。


一昔前に、どこかで見たようなフォントですね。

今回のように欧文 TrueType フォントから変換した PostScript Type 1 フォントには 通常 fi, fl などのリガチャが用意されませんので、 本文用フォントとしての利用には相当厳しいものがあります。 デザインフォントを文書中のごく一部で使う、などといった程度での利用が無難でしょう。

その他

フォントに収録されているグリフの一覧を表示するには、 tex testfont を使うと良いでしょう。

任意の欧文フォントを追加したい場合 (OpenType)

LCDF Typetools の otftotfm を使うと、OpenType フォントを TeX で利用可能にできるそうです。 (私は欧文 OpenType フォントを持っていないので試していません。) 具体的な方法については、(学生有志による)東京大学西洋古典学研究室のホームページ にある TeX/Font/OpenType のページが参考になると思います。

MacPorts で LCDF Typetools を導入するには、以下のようにします。

$ sudo port install lcdf-typetools -texlive +ptex

参考リンク


return