- 追加された行はこの色です。
- 削除された行はこの色です。
[[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}{800}
\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]
きちんとフォントが作成・インストールされているかどうか、テストしてみます。次のようなプリアンブルのファイルを作って適当に記述し、''latex'' で処理してみます。なお、問題が起こったときに切り分けがしやすいので、''platex'' ではなくて ''latex'' で処理した方がよいでしょう。同様に \documentclass は ''jsarticle'' などではなく、''article'' にしておきます。xxx の部分にはフォントファミリ名(''bbv'' など)を入れます。
\documentclass[a4paper,10pt]{article}
\usepackage[T1]{fontenc}
\renewcommand{\rmdefault}{xxx}
xdvi で表示させたり、''dvipdfmx'' で PDF ファイルに変換してみましょう。PDF ファイルを作成したら、Adobe Reader などでフォント情報を表示させ((Adobe Reader なら[ファイル]->[文書のプロパティ](Ctrl-D)で表示させることができます。)) 目的のフォントが Type 1 で埋め込まれているかどうか確認します。
**.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
などの解説が役に立ちます。