[[TeX/Font]]

*fontinst パッケージ [#u0b106d6]

fontinst パッケージは Type 1 フォント(''.pfb'')などを TeX で使えるようにするためのパッケージです。teTeX には標準で含まれています。

**参考 [#v9d474b2]

以下の文書が大変参考になります。

-${CTAN}/info/Type1fonts/fontinstallationguide/fontinstallationguide.pdf
-${CTAN}/fonts/utilities/fontinst/fontinst.pdf

下は fontinst パッケージの解説ですが、上の方が詳しく解説されているので、まずは 上の fontinstallationguide.pdf を見ることを勧めます。

以下は fontinst に関する議論です。

-[[The fontinst Archives (@TUG):http://www.tug.org/pipermail/fontinst/]]

*概要 [#v3386a91]

Type 1 フォントを TeX で使えるようにするには、''.afm'' ファイルから ''.tfm'' ファイルや ''.vf'' ファイルを作って… という作業が必要で、骨が折れます。その作業を TeX の形式で ''.tex'' ファイルに記述しておくと

 $ tex hoge.tex

を実行するだけで ''.tfm'', ''.vf'', ''.enc'', ''.fd'' ファイルから、''.map'' ファイルまでを生成することができます。

さらに、Type 1 フォントで用意されていないスラント体('''slanted''')やスモールキャプス体を機械的に生成させることもできます。

以下ではフォントファミリ名を ''xxx'' で代表させています。適宜読みかえてください。

*準備 [#g64e5f39]

インストールの方法に関わらず、fontinst を実行する前に次の作業を済ませておく必要があります。

**フォント名の変更 [#g3f0c606]

最初にファイル名を Berry 則にもとづいて変更しておきます。

-[[フォント名>TeX/Font/FontName]]

を参考にファイル名を変更します。

**.afm ファイル [#i45aa7fc]

Type 1 ファイルを入手した場合、''.pfb'' ファイルに ''.afm'' ファイルが付属してくるはずですが、付属しない場合があります。この場合は ''.pfm'' ファイルが付属しているはずです。これを用いて ''.afm'' ファイルを生成します。

***.afm ファイルの生成 [#h0e3dd74]

''pf2afm'', ''type1afm'' を使って ''.afm'' ファイルを作成します。''pf2afm'', ''type1afm'' については [[Type 1 フォント>TeX/Font/Type1]] をご覧ください。

***.afm ファイルの修正 [#i75819d6]

上の方法で作った ''.afm'' ファイルには合字(リガチャ)の情報が欠落している可能性があります。例えば、fi や fl の合字(リガチャ)が用意されていることが多いですが、''.afm'' ファイルからは欠落してしまうことがあります。これを手動で追加しておきます。

それぞれの ''.afm'' ファイルから、`N f' と書かれている行を探します。たとえば

 C 102 ; WX 322 ; N f ; B 27 -2 429 711 ;

という行です。この行の最後に

   L i fi ; L l fl ;

を追加して次のようにします。

 C 102 ; WX 322 ; N f ; B 27 -2 429 711 ; L i fi ; L l fl ;

これは、`f' の文字に関して、リガチャ(Ligature)を `i' と `l' の組合せに対して行う、という意味です。

''.afm'' ファイルを修正したら忘れずに保存しておきます。

*自動インストール [#dd318c6d]

*手動インストール [#jf7a763d]

fontinstallationguide.pdf の第2章の記述にもとづいています。

この方法では、若干記述する内容が多くなりますが、その分柔軟な設定が可能です。

''.tfm'', ''.fd'', ''.vf'', ''.map'' ファイルを生成するための fontinst のファイルを作成します。ファイル名は何でもよいですが、ここでは `xxx-driver.tex' としておきます。

なお、ここでは次の ''.pfb'', ''.afm'' ファイルが用意されているものとします。

-xxxr8a
-xxxri8a
-xxxb8a
-xxxbi8a

スモールキャップ体(small cap)と斜体(slant)は上に含まれていませんので、直立体(xxxr8a, xxxb8a)から機械的に生成することにします。

 %%% Section 1
 \input fontinst.sty
 \substitutesilent{bx}{b}
 \setint{smallcapsscale}{720}
 \setint{slant}{167}
 \recordtransforms{xxx-rec.tex}
 %%% Section 2
 %% make .tfms
 \transformfont{xxxr8r}{\reencodefont{8r}{\fromafm{xxxr8a}}}
 \transformfont{xxxri8r}{\reencodefont{8r}{\fromafm{xxxri8a}}}
 \transformfont{xxxb8r}{\reencodefont{8r}{\fromafm{xxxb8a}}}
 \transformfont{xxxbi8r}{\reencodefont{8r}{\fromafm{xxxbi8a}}}
 % slant
 \transformfont{xxxro8r}{\slantfont{\int{slant}}\reencodefont{8r}{\fromafm{xxxr8a}}}
 \transformfont{xxxbo8r}{\slantfont{\int{slant}}\reencodefont{8r}{\fromafm{xxxb8a}}}
 %%% Section 3
 %% installfonts (T1)
 \installfonts
 \installfamily{T1}{xxx}{}
 \installfont{xxxr8t}{xxxr8r,newlatin}{t1}{T1}{xxx}{m}{n}{}
 \installfont{xxxrc8t}{xxxr8r,newlatin}{t1c}{T1}{xxx}{m}{sc}{}
 \installfont{xxxro8t}{xxxro8r,newlatin}{t1}{T1}{xxx}{m}{sl}{}
 \installfont{xxxri8t}{xxxri8r,newlatin}{t1}{T1}{xxx}{m}{it}{}
 \installfont{xxxb8t}{xxxb8r,newlatin}{t1}{T1}{xxx}{b}{n}{}
 \installfont{xxxbc8t}{xxxb8r,newlatin}{t1c}{T1}{xxx}{b}{sc}{}
 \installfont{xxxbo8t}{xxxbo8r,newlatin}{t1}{T1}{xxx}{b}{sl}{}
 \installfont{xxxbi8t}{xxxbi8r,newlatin}{t1}{T1}{xxx}{b}{it}{}
 \endinstallfonts
 %%% Section 4
 %% installfonts (TS1)
 \installfonts
 \installfamily{TS1}{xxx}{}
 \installfont{xxxr8c}{xxxr8r,textcomp}{ts1}{TS1}{xxx}{m}{n}{}
 \installfontas{xxxr8c}{TS1}{xxx}{m}{sc}{}
 \installfont{xxxro8c}{xxxro8r,textcomp}{ts1}{TS1}{xxx}{m}{sl}{}
 \installfont{xxxri8c}{xxxri8r,textcomp}{ts1}{TS1}{xxx}{m}{it}{}
 \installfont{xxxb8c}{xxxb8r,textcomp}{ts1}{TS1}{xxx}{b}{n}{}
 \installfontas{xxxb8c}{TS1}{xxx}{b}{sc}{}
 \installfont{xxxbo8c}{xxxbo8r,textcomp}{ts1}{TS1}{xxx}{b}{sl}{}
 \installfont{xxxbi8c}{xxxbi8r,textcomp}{ts1}{TS1}{xxx}{b}{it}{}
 \endinstallfonts
 %%% Section 5
 \endrecordtransforms
 \bye

それぞれのセクションについて簡単に解説します。

**Section 1, 5 [#ff5e874f]

おまじないです。`smallcapsscale' は大文字とスモールキャップとの比率(千分法)です。フォントによっては変えた方がよいかもしれません。

**Section 2 [#k909cb86]

''.afm'' ファイルから 8r エンコーディングにもとづいて ''.pl'', ''.mtx'' ファイルを生成する指示です。あとで ''.pl'' ファイルを変換して最終的に ''.tfm'' ファイルを得ます。

% slant の部分で、斜体(slant)用の ''.pl'', ''.mtx'' ファイルを生成する指示を出しています。斜体は直立体を約9.5°(0.167)機械的に傾けて作っています。\setint{slant}{167}の部分を変更すると傾きを調節できますが、通常はこのままでよいでしょう。

**Section 3 [#a7d6a23f]

T1 エンコーディング用の ''.vpl'' ファイルを生成する指示です。''newlatin.mtx'', ''t1.etx'' にもとづいて ''xxxr8r'' から生成するということです。スモールキャップ体だけは ''t1.etx'' ではなく ''t1c.etx'' を用いていることに注意してください。これを用いると、直立体から機械的にスモールキャップ体を生成することができます。

**Section 4 [#h98aac18]

TS1 エンコーディング用の ''.vpl'' ファイルを生成する指示です。TS1 エンコーディングは、T1 エンコーディングで拾いきれなかった記号等を集めたものに対するエンコーディングです。

\installfontas の行に注意してください。TS1 エンコーディングで使うのは記号のみですから、「スモールキャップ」という指示は意味がありません。そこで、「スモールキャップ」を「直立体とみなす」という指示を書き込んでおく必要があります。

**まとめ [#e8208fcd]

結局上の作業で、次のシリーズ・シェイプが使えるようになります。

-ローマン体
--直立体(upright)
--スモールキャップ体(small cap)
--斜体(slant)
--イタリック(italic)
-ボールド体
--直立体(upright)
--スモールキャップ体(small cap)
--斜体(slant)
--イタリック(italic)

*.map ファイル生成用ファイルの作成 [#g01d0255]

''.map'' ファイル作成に必要な情報は、''xxx-driver.tex'' を処理した後、''xxx-rec.tex'' ファイルに記録されます。これを処理して ''.map'' ファイルを生成するためのファイルを作成します。ファイル名は ''xxx-map.tex'' としておきます。

 \input finstmsc.sty
 \resetstr{PSfontsuffix}{.pfb}
 \adddriver{dvips}{xxx.map}
 \input xxx-rec.tex
 \donedrivers
 \bye

*fontinst の実行 [#s6ec694c]

次のコマンドを実行します。

 $ tex xxx-driver.tex
 $ tex xxx-map.tex

*fontinst 実行後の作業 [#rff4578c]

以下が fontinst を実行した後に必要になる(かもしれない)作業です。

**.tfm, .vf ファイルの生成 [#o9d16aaa]

fontinst を実行すると各種 ''.pl'', ''.vpl'' ファイルができていますので、これらを変換して ''.tfm'', ''.vf'' ファイルを生成します。

 $ for i in *.pl; do pltotf $i; done
 $ for i in *.vpl; do vptovf $i; done

**ファイルのコピー [#ic5aa6e9]

それぞれのファイルをコピーします。以下は Bitstream 社製の baskerville フォントの場合です。

|~ファイルの種類|~コピー先|
|~.afm|$TEXMFLOCAL/fonts/afm/bitstrea/baskerville|
|~.tfm|$TEXMFLOCAL/fonts/tfm/bitstrea/baskerville|
|~.vf|$TEXMFLOCAL/fonts/vf/bitstrea/baskerville|
|~.pfb|$TEXMFLOCAL/fonts/type1/bitstrea/baskerville|
|~.map|$TEXMFLOCAL/fonts/map/dvips/bitstrea/baskerville|
|~.fd|$TEXMFLOCAL/tex/latex/bitstrea/baskerville|

***mktexlsr, updmap-sys [#e403a1b8]

mktexlsr と updmap-sys を実行します。xxx には適切なファイル名を入れてください。

 # mktexlsr
 # updmap-sys --enable Map=xxx.map

**テスト [#s8c1e0d1]

-[[フォント出力のテスト>TeX/Font/FontTest]]

を参考にしてください。

**.sty の作成 [#t157712b]

テストがうまくいったら、簡単に使えるように ''.sty'' ファイルを作成しましょう。次のものは Baskerville フォントの例です。

-bbaskerv
-xx
-xxx

の部分と日付・バージョンを書き換えて使ってください。

 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{bbaskerv}[2006/10/02 v1.0 Bitstream xx]
 \RequirePackage[T1]{fontenc}
 \RequirePackage{textcomp}
 \renewcommand*{\rmdefault}{xxx}
 \endinput

オプションをつけるときは \renewcommand*{\rmdefault}{xxx} の代わりに次のような記述にします。

 \DeclareOption{book}{\renewcommand*{\rmdefault}{xxxk}}
 \DeclareOption{regular}{\renewcommand*{\rmdefault}{xxx}}
 \ExecuteOptions{regular}
 \ProcessOptions\relax

''.sty'' ファイルができたら $TEXMFLOCAL/tex/latex/bitstrea/baskerville などにコピーし、''mktexlsr'' を実行しておきます。

**警告 [#dab02c84]

platex で文書を処理すると、次のような警告が出ます。

 LaTeX Font Warning: Font shape `JY1/mc/m/sc' undefined
 ...
 LaTeX Font Warning: Some font shapes were not available, defaults substituted.

これは、日本語にスモールキャップ体などが定義されていないために出る警告です。無視して構いません。

-http://www.ascii.co.jp/pb/ptex/base/hints.html

に説明があります。

この警告を出さないようにするためには

-http://auemath.aichi-edu.ac.jp/~khotta/ghost/psfont.html

などの解説が役に立ちます。

*ギリシア語 [#scc73254]

上はローマ文字用の方法です。ギリシア語については次の項目を参照してください。

-[[grkfinst>TeX/Font/FontInst/grkfinst]]



トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS