Adobe 社の販売している Minion-Pro フォントを TeX で使えるようにしてみます。LCDF Typetools が必要です。TeX/Font/OpenType をご覧ください。
次のフォントを作業用ディレクトリにコピーします。
それぞれのフォントの情報を見るには次のようにします。
$ otfinfo -f MinionPro-Regular.otf
LCDF Typetools は、入手した OpenType フォントにつけられているわかりやすい名前(MinionPro など)を元にファイル名を決定することを推奨していますが、Type 1 フォントを自分でインストールしている人にとっては、Berry 則にもとづいたファイル名にした方が管理しやすいでしょう。それにこの方が .fd ファイルを使いまわせます*1。
ファイル名の決定については フォント名 をご覧ください。Adobe Minion の場合は pmn で始まります。実際のファイル名の例についてはこの後の「otftotfm --- コマンドの実行」の部分をご覧ください。
.fd ファイルは自動で生成されません。Adobe Minion(Type 1 PostScript)用の .fd ファイルを入手してそれを流用します。
Adobe Minion 用の .fd は CTAN にありますが、サーバによってはない場合もありますので、適当に探してみてください。例えば次のような場所にありました。
用意されている .fd ファイルは念のため全て入手しておきましょう。
.tfm, .vf, .pfb, .enc ファイルを生成します。
まず、どのエンコーディングを用いるか、決定しなければなりません。LCDF Typetools が推奨する OpenType フォント用のエンコーディングは LY1 ですが、一般にはあまり使われていないでしょう。Type 1 フォント を使っていれば、それと同じ T1 エンコーディングにすると都合がよさそうです。なお、OT1 エンコーディングなど、他のエンコーディングも使えるはずですので、試してみるのもよいでしょう。
さて、各種 .enc ファイルは ${TEXMF,TEXMFDIST}/fonts/enc/dvips/base/ にあります。代表的なエンコーディングの種類と .enc ファイルの対応は次の通りです。
| エンコーディング | .enc ファイル |
|---|---|
| T1 | cork.enc |
| LY1 | texnansx.enc |
OT1 エンコーディングの場合は LCDF Typetools の導入ディレクトリ(例えば /usr/local/share/lcdf-typetools/ など)にある 7t.enc を用います。
それでは T1 用の .enc ファイルを作業用ディレクトリにコピーします。
$ cp /usr/local/teTeX/share/texmf-dist/fonts/enc/dvips/base/cork.enc ./
TeX をインストールした場所に応じて適宜変更してください。
.map ファイルに書き込みながら .tfm ファイルを生成するので、空の .map ファイルを作っておきます。
$ touch pmn.map
otftotfm を実行して .tfm, .vf, .enc ファイルを生成し、同時に .map ファイルに書き込んでいきましょう。
otftotfm にはオプションが多数用意されています。詳細は otftotfm のマニュアル(TeX/Font/OpenType/LCDFTypeTools 参照)に譲るとして、ここではよく使うオプションを確認しておきましょう。
| オプション | 詳細の指定 | 機能 |
|---|---|---|
| -e | エンコーディングファイルを指定する | |
| -f feature | feature で指定した機能を有効にする | |
| -fkern | カーニングを有効にする | |
| -fliga | リガチャを有効にする | |
| -fsmcp | スモールキャップ体を有効にする | |
| -fonum | オールドスタイルの数字を有効にする | |
| -n | 出力するファイル名を指定する | |
| -S amt | -S 0.167 | amt で指定された角度だけ傾斜させる(Slant) |
エンコーディングファイルには cork.enc を用い、出力するファイル名を指定し、リガチャとカーニングを有効にした上で、スモールキャップ体・オールドスタイル・傾斜は必要なところのみ有効にします。
コマンドの概要は次のようになります。
$ otftotfm -e cork.enc -fkern -fliga -n xxxx8t MinionPro-xxxx.otf >>pmn.map
これに必要なオプションを付け加え、xxxx8t の部分にファイル名を指定し、元のファイル名を MinionPro-xxxx.otf に当てはめて実行します。8t は T1 エンコーディングの場合です。他のエンコーディングの場合は適宜読みかえてください。
| 字体 | オプション | ファイル名 |
|---|---|---|
| Regular | pmnr8t | |
| Regular (old style number) | -fonum | pmnr8tj |
| Regular Small Caps | -fsmcp | pmnrc8t |
| Regular Small Caps (old style number) | -fsmcp -fonum | pmnrc8tj |
| Regular Slant | -S 0.167 | pmnro8t |
| Regular Slant (old style number) | -fonum -S 0.167 | pmnro8tj |
| Italic | pmnri8t | |
| Italic (old style number) | -fonum | pmnri8tj |
| Bold | pmnb8t | |
| Bold (old style number) | -fonum | pmnb8tj |
| Bold Small Caps | -fsmcp | pmnbc8t |
| Bold Small Caps (old style number) | -fsmcp -fonum | pmnbc8tj |
| Bold Slant | -S 0.167 | pmnbo8t |
| Bold Slant (old style number) | -fonum -S 0.167 | pmnbo8tj |
| Bold Italic | pmnbi8t | |
| Bold Italic (old style number) | -fonum | pmnbi8tj |
| Semibold | pmns8t | |
| Semibold (old style number) | -fonum | pmns8tj |
| Semibold Small Caps | -fsmcp | pmnsc8t |
| Semibold Small Caps (old style number) | -fsmcp -fonum | pmnsc8tj |
| Semibold Slant | -S 0.167 | pmnso8t |
| Semibold Slant (old style number) | -fonum -S 0.167 | pmnso8tj |
| Semibold Italic | pmnsi8t | |
| Semibold Italic (old style number) | -fonum | pmnsi8tj |
| Black | pmnc8t | |
| Black (old style number) | -fonum | pmnc8tj |
| Black Small Caps | -fsmcp | pmncc8t |
| Black Small Caps (old style number) | -fsmcp -fonum | pmncc8tj |
| Black Slant | -S 0.167 | pmnco8t |
| Black Slant (old style number) | -fonum -S 0.167 | pmnco8tj |
実行の際にエラーが出ることがありますが、大抵の場合は無視して大丈夫です。
できた .map ファイルを確認して、不要な記述があれば削除しておきます。不要な記述とは次のようなものです。
I had to ...
スラント体の指示は .map ファイル中で次のようにされています。
pmnro8t--base MinionPro-Regular "0.167 SlantFont AutoEnc_xxx ReEncodeFont" ...
0.167 SlantFont は ReEncodeFont の後にきて、次のようにならなければなりません。
pmnro8t--base MinionPro-Regular " AutoEnc_xxx ReEncodeFont 0.167 SlantFont " ...
次のようにすると一括して変換できます。
cp pmn.map pmn.map.bak sed 's/0.167 SlantFont\(.*ReEncodeFont\)/\1 0.167 SlantFont/' pmn.map.bak >pmn.map
先に述べたように .fd, .sty ファイルが必要です。自分で作成することもできますが、先ほどの
で Type 1 フォント用のものが配布されていますので、これを使うのが便利でしょう。ここでのやり方では、pmn と pmnj というフォントファミリを作成したので、t1pmn.fd の他に t1pmnj.fd も必要になります。t1pmn.fd を元にし、{pmn} になっているところを {pmnj} に変更し、pmnr8t などの記述を pmnr8tj などに変更して次のようにします。
%Filename: t1pmnj.fd
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1pmnj.fd}[2006/10/07 T1/pmnj by MATSUURA Takashi]
\DeclareFontFamily{T1}{pmnj}{}
\DeclareFontShape{T1}{pmnj}{m}{n}{
<-> pmnr8tj
}{}
\DeclareFontShape{T1}{pmnj}{m}{sc}{
<-> pmnrc8tj
}{}
\DeclareFontShape{T1}{pmnj}{m}{sl}{
<-> pmnro8tj
}{}
\DeclareFontShape{T1}{pmnj}{m}{it}{
<-> pmnri8tj
}{}
\DeclareFontShape{T1}{pmnj}{b}{n}{
<-> pmnb8tj
}{}
\DeclareFontShape{T1}{pmnj}{b}{sc}{
<-> pmnbc8tj
}{}
\DeclareFontShape{T1}{pmnj}{b}{sl}{
<-> pmnbo8tj
}{}
\DeclareFontShape{T1}{pmnj}{b}{it}{
<-> pmnbi8tj
}{}
\DeclareFontShape{T1}{pmnj}{sb}{n}{
<-> pmns8tj
}{}
\DeclareFontShape{T1}{pmnj}{sb}{sc}{
<-> pmnsc8tj
}{}
\DeclareFontShape{T1}{pmnj}{sb}{sl}{
<-> pmnso8tj
}{}
\DeclareFontShape{T1}{pmnj}{sb}{it}{
<-> pmnsi8tj
}{}
\DeclareFontShape{T1}{pmnj}{eb}{n}{
<-> pmnc8tj
}{}
\DeclareFontShape{T1}{pmnj}{eb}{sc}{
<-> pmncc8tj
}{}
\DeclareFontShape{T1}{pmnj}{eb}{sl}{
<-> pmnco8tj
}{}
\DeclareFontShape{T1}{pmnj}{bx}{n}{<->ssub * pmnj/b/n}{}
\DeclareFontShape{T1}{pmnj}{bx}{sc}{<->ssub * pmnj/b/sc}{}
\DeclareFontShape{T1}{pmnj}{bx}{sl}{<->ssub * pmnj/b/sl}{}
\DeclareFontShape{T1}{pmnj}{bx}{it}{<->ssub * pmnj/b/it}{}
\DeclareFontShape{T1}{pmnj}{eb}{it}{<->ssub * pmnj/eb/sl}{}
\endinput
簡単に Adobe Minion フォントを使えるように、pminion.sty を作成します。今回オールドスタイルを使えるようにしていますので、オプションで指定できるようにしましょう。
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pminion}[2006/10/07 v1.0 Adobe Minion by MATSUURA Takashi]
\RequirePackage[T1]{fontenc}
\RequirePackage{textcomp}
\DeclareOption{lining}{\renewcommand*{\rmdefault}{pmn}}
\DeclareOption{oldstyle}{\renewcommand*{\rmdefault}{pmnj}}
\ExecuteOptions{lining}
\ProcessOptions\relax
\newcommand*{\textos}[1]{{\fontfamily{pmnj}\selectfont #1}}
\newcommand*{\textln}[1]{{\fontfamily{pmn}\selectfont #1}}
\endinput
これで
\usepackage[oldstyle]{pminion}
とプリアンブルに書けばオールドスタイルが標準に、
\usepackage{pminion}
と書けばライニング(通常)が標準になります。
一部分だけオールドスタイル・ライニングにする場合はそれぞれ
\textos{0123456789}
\textln{0123456789}
を使います。
以下のファイルを TeX が見つけてこられるところにコピーします。
/usr/local/teTeX/share/texmf-local/ の部分は自分のシステムに合わせて読みかえてください。
TeX から使えるようにします。
# mktexlsr # updmap-sys --enable Map=pmn.map
を参考にテストしてみてください。