[[TeX/Font]]
*OpenType フォントの利用 [#d57e36d5]
以下では欧文用 OpenType フォントの利用法について解説します。想定するのは、''.otf'' ファイルと、TeX 側で使うエンコーディングを記述したファイル(''.enc'')から ''.pfb'', ''.tfm'', ''.enc''(''.otf'' フォント側の), ''.map'' ファイルを生成し、''.fd'' を作成してインストールし、必要に応じて ''.sty'' ファイルを作成・インストールする方法です。つまり OpenType フォントから Type 1 フォントを生成してそれを使います。
**OpenType フォントメーカ [#c7c26c6d]
-[[Adobe:http://www.adobe.com/jp/]]
--[[OpenType Font Guide:http://www.adobe.com/type/browser/pdfs/OTGuide.pdf]]
上にあるメニューバーから、[アドビストア] -> [フォント] を選択すると、Adobe Type Showroom にアクセスできます。
-[[Garamond Premier Pro:http://store3.adobe.com/type/browser/pdfs/1737.pdf]]
**作業例 [#s6627673]
-[[Adobe Caslon>TeX/Font/OpenType/AdobeCaslon]]
-[[Adobe Garamond Pro>TeX/Font/OpenType/AdobeGaramond]]
-[[Adobe Minion>TeX/Font/OpenType/AdobeMinion]]
**準備 [#ic79b7dc]
次のツールが必要です。それぞれのページでインストール方法を説明してあります。
-[[LCDF Typetools>TeX/Font/OpenType/LCDFTypeTools]]
-[[otftofd>TeX/Font/OpenType/OtfToFd]] (手作業で作成しても大したことはないので、必ずしもインストールする必要はありません)
**.fd ファイルの入手 [#z15d9360]
''.fd''(Font Definition)ファイルは、フォントファミリなどとフォントに関するファイルとの対応関係を記述したファイルです。Type 1 用の ''.fd'' ファイルが用意されていることがあるので、探してみるとよいでしょう。''.fd'' ファイルのファイル名は
-(エンコーディング)+(フォントファミリ名).fd
になっています。例えば T1 エンコーディングの Adobe Minion フォントの場合は ''t1pmn.fd'' となります。フォントファミリ名は Berry 則にもとづいて決まります。[[フォント名>TeX/Font/FontName]] を参照してください。
**LCDF Typetools の実行 [#de74e75b]
LCDF Typetools を使って ''.pfb'', ''.tfm'', ''.enc'', ''.map'' ファイルを生成します。
***フォント名、ファイル名の決定 [#l0e669e5]
LCDF Typetools は、入手した OpenType フォントにつけられているわかりやすい名前(MinionPro など)を元にファイル名を決定することを推奨していますが、Type 1 フォントを自分でインストールしている人にとっては、Berry 則にもとづいたファイル名にした方が管理しやすいでしょう。それにこの方が ''.fd'' ファイルを使いまわせます((Type 1 フォント用の ''.fd'' ファイルを流用できる場合があります。))。
ファイル名の決定については [[フォント名>TeX/Font/FontName]] をご覧ください。Adobe Minion の場合は ''pmn'' で始まります。そのあとにシェイプやエンコーディングなどを表す文字や数字を続けます。
**.enc のコピー&aname(enc); [#g0dabf32]
次に、どのエンコーディングを用いるか決定しなければなりません。LCDF Typetools が推奨する OpenType フォント用のエンコーディングは LY1 ですが、一般にはあまり使われていないでしょう。[[Type 1 フォント>TeX/Font/Type1]] を自分でインストールしていれば、それと同じ 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'' を用います。
CTAN にも用意されています。
|~エンコーディング|~.enc ファイル|
|~T1|${CTAN}/fonts/utilities/fontools/share/t1.enc|
|~TS1|${CTAN}/fonts/utilities/fontools/share/ts1.enc|
|~LY1|${CTAN}/fonts/utilities/fontools/share/ly1.enc|
**.map ファイルの作成 [#la1d3edd]
''otftotfm'' はファイルを生成するときに ''.map'' ファイルに書き込む内容を表示するので、空の ''.map'' ファイルを作っておき、それを順次書き込んでいくことにします。''.map'' の名前はフォントファミリ名にしておくとよいでしょう。次は Adobe Minion の場合です。
$ touch pmn.map
**otftotfm [#ic24d075]
''otftotfm'' を実行して ''.tfm'', ''.vf'', ''.enc'' ファイルを生成し、同時に ''.map'' ファイルに書き込んでいきましょう。
***オプション [#y84cd34b]
''otftotfm'' はオプションが非常に豊富です。代表的なオプションは次の通りです。
|~オプション|~詳細の指定|~機能|
|~-e||エンコーディングファイルを指定する|
|~-f '''feature'''||'''feature''' で指定した機能を有効にする|
|~|-fkern|カーニングを有効にする|
|~|-fliga|リガチャを有効にする|
|~|-fsmcp|スモールキャップ体を有効にする|
|~|-fonum|オールドスタイルの数字を有効にする|
|~-n||出力するファイル名を指定する|
|~-S '''amt'''|-S 0.167|'''amt''' で指定された角度だけ傾斜させる(Slant)|
今扱っている OpenType フォントでどのオプションが使えるかを確認するためには、次のコマンドを実行します。
$ otfinfo -f MinionPro-Regular.otf
詳しくは次のヘルプを参考にしてください。
-http://www.lcdf.org/~eddietwo/type/otftotfm.1.html
-http://www.lcdf.org/~eddietwo/type/otfinfo.1.html
***コマンドの実行 [#a269f959]
エンコーディングファイルには ''cork.enc'' を用い、出力するファイル名を指定し、リガチャとカーニングを有効にした上で、スモールキャップ体・オールドスタイル・傾斜は必要なところのみ有効にします。
コマンドの例は次のようになります。
$ otftotfm -e cork.enc -fkern -fliga -fsmcp -fonum -n pmnrc8tj MinionPro-Regular.otf >>pmn.map
この例では、カーニング、リガチャ、スモールキャップ、オールドスタイルが有効になっています。''pmnrc8tj'' の部分は Berry 則にもとづいて決定しましょう。
実行の際にエラーが出ることがありますが、大抵の場合は無視して大丈夫です。
**.map ファイル [#wd3cc9a5]
***確認 [#j1280fbc]
できた ''.map'' ファイルを確認して、不要な記述があれば削除しておきます。不要な記述とは次のようなものです。
I had to ...
***修正 [#d117f458]
スラント体の指示は ''.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 ファイル [#q516e304]
入手した ''.fd'' ファイルに修正が必要ならば修正します。上の例のように ''pmnj'' というフォントファミリを作成した場合は ''t1pmn.fd'' をコピーして ''t1pmnj.fd'' を作成しておきます。
**.sty ファイル [#f41e5898]
必要ならば ''.sty'' ファイルも作成しておきます。
**ファイルのコピー [#o4e2b7b8]
ファイルを適切な場所にコピーして、次のコマンドを実行します。
# mktexlsr
# updmap-sys --enable Map=xxx.map
**テスト [#b9b599ab]
-[[フォント出力のテスト>TeX/Font/FontTest]]
を参考にテストしてみてください。
*参考 [#r771dd99]
-http://www.tug.org/pipermail/fontinst/2003/001242.html
-http://www.tug.org/pipermail/fontinst/2003/001243.html