外字の作成と利用方法

外字を作成する場合

人名漢字などどうしても外字をつくらなければならない場合があります。ここでは Macintosh で定評のある Fontographer というソフトウェアを使用して1バイト系の外字を作り,Windows TeX で利用する方法を述べます。1バイト系ですので,すべての欧文Type 1フォントにも適用できますが,例として MaruGaiji という丸付き数字の外字を作成するものとします。
Windows 側ではあらかじめ適当なフォルダ,例えばCドライブの直下に gaijiSample というフォルダを作成してください。また以下を参考に4つのフォルダを作成しておいてください。

・$TEXMF\fonts\tfm\gaiji
・$TEXMF\fonts\type1\gaiji
・$TEXMF\fonts\vf\gaiji
・$TEXMF\fonts\pk\modeless\gaiji

【Step1】afm(Adobe Font Metrics)ファイルと Type 1フォントの作成

まず Macintosh Fontographer で,MaruGaiji の afm ファイルとType 1フォントを作ります。「フォント情報」は以下のように設定します。エンコーディングは本来 Adobe 標準か ISO Latin 1 ですが,Macintosh にするのは Windows TeX でキーストロークでの入力を可能にするためです。
・ファミリー名:MaruGaiji
・エンコーディング:Macintosh
続いて「フォントファイルの作成」です。設定は以下の通りです。
・コンピュータ:Sun
・フォーマット:PostScript Type 1
以上の操作で,MaruGaiji.afm という afm ファイルと MarugGaiji.ps というType 1フォントが作成できます。
・$TEXMF\fonts\type1\gaiji に MarugGaiji.ps を格納。

【Step2】Windows で,tfm ファイルと vpl ファイルを作成

Windowsの C:\gaijiSample フォルダに MaruGaiji.afm をコピーします。その MaruGaiji.afm を mgai8a.afm にリネームした後,afm2tfm を使用し,仮想フォントが参照する tfm ファイルと vpl ファイルを作ります。
  C:\gaijiSample>\afm2tfm mgai8a.afm -p 8r.enc -t ec.enc -v mgai8t.vpl mgai8r.tfm
この実行によって,mgai8r.tfm と mgai8t.vpl が生成されます。
・$TEXMF\fonts\tfm\gaiji に mgai8r.tfm を格納。

【Step3】vf ファイルと tfm ファイルを作成

生成された mgai8t.vpl から vptovf を使用し,TeX が参照する mgai8t.tfm ファイルと mgai8t.vf ファイルを作ります。
  C:\gaijiSample>\vptovf mgai8t.vpl
・$TEXMF\fonts\tfm\gaiji に mgai8t.tfm を格納。
・$TEXMF\fonts\vf\gaiji に mgai8t.vf を格納。

【Step4】fd ファイルを作成またはプリアンブルにフォントを定義

fd ファイル作成の場合です。$TEXMF\tex フォルダに \fontinst フォルダがインストールされていれば,C:\gaijiSample フォルダ内で,fdinst.tex を作成し,TeX を実行すると,t1mgai.fd ファイルができます。まず以下のような fdinst.tex をエディタで作成します。

【fd ファイル作成の例】

\input fontinst.sty
\installfonts
\installfamily{T1}{mgai}{}
\transformfont{mgai8r}{\reencodefont{8r}{\fromafm{mgai8a}}}
\installfont{mgai8t}{mgai8r,latin}{T1}{T1}{mgai}{m}{n}{}
\endinstallfonts
\bye
次に TeX を実行すると,t1mgai.fd という fd ファイルが生成されます。
  C:\gaijiSample>\platex fdinst
・$TEXMF\tex\latex\psnfss にt1mgai.fd を格納。
【プリアンブルでの記述例】
\DeclareFontFamily{T1}{mgai}{}
\DeclareFontShape{T1}{mgai}{m}{n}{<-> mgai8t}{}
プリアンブルで記述した方が簡単なようです。

【Step5】psfonts.map にフォントネームを登録

$TEXMF\fonts\map\dvips\base にある psfonts.map の 最後の行に次の記述を追加します。
mgai8r MaruGaiji <MaruGaiji.ps "TeXBase1Encoding ReEncodeFont" <8r.enc
【ご注意】
・もし mgai8r の記述がほかにあれば,最初に出現したものが優先されます。
mgai8r MaruGaiji <MARUG___.PFB "TeXBase1Encoding ReEncodeFont" <8r.enc
mgai8r MaruGaiji <MaruGaiji.ps "TeXBase1Encoding ReEncodeFont" <8r.enc
MARUG___.PFB が使用されます。

・フォントネームで長い記述があっても,適当な改行は入れないでください。

(誤)psv8r Souvenir-LightItalic <Souvenir-LightItalic.ps 
"TeXBase1Encoding ReEncodeFont" <8r.enc
(正)psv8r Souvenir-LightItalic <Souvenir-LightItalic.ps "TeXBase1Encoding ReEncodeFont" <8r.enc
(誤)の方は gsview などでエラーとなります。

【Step6】文書ファイルでの記述と処理

gaiji.tex というサンプルの TeX ファイルをコンパイルします。

【gaiji.tex での記述例】

\documentclass{jbook}
\usepackage[dvips]{graphicx,color}

\DeclareFontFamily{T1}{mgai}{}
\DeclareFontShape{T1}{mgai}{m}{n}{<-> mgai8t}{}

\def\丸外字#1{%
\raisebox{-.5pt}{\fontsize{10}{18}\useroman{T1}{mgai}{m}{n}#1}}

\begin{document}
\丸外字{1}外\丸外字{2}字\丸外字{3}の\丸外字{4}サ\丸外字{5}ン
\丸外字{6}プ\丸外字{7}ル\丸外字{8}で\丸外字{9}す\丸外字{0}。

\丸外字{A}\丸外字{B}\丸外字{C}\丸外字{D}\丸外字{E}\丸外字{F}\丸外字{G}%
\丸外字{H}\丸外字{I}\丸外字{J}\丸外字{K}\丸外字{L}\丸外字{M}\丸外字{N}%
\丸外字{O}\丸外字{P}\丸外字{Q}\丸外字{R}\丸外字{S}\丸外字{T}\丸外字{U}%
\丸外字{V}\丸外字{W}\丸外字{X}\丸外字{Y}\丸外字{Z}

\丸外字{a}\丸外字{b}\丸外字{c}\丸外字{d}\丸外字{e}\丸外字{f}\丸外字{g}%
\丸外字{h}\丸外字{i}\丸外字{j}\丸外字{k}\丸外字{l}\丸外字{m}\丸外字{n}%
\丸外字{o}\丸外字{p}\丸外字{q}\丸外字{r}\丸外字{s}\丸外字{t}\丸外字{u}%
\丸外字{v}\丸外字{w}\丸外字{x}\丸外字{y}\丸外字{z}

\end{document}
それから gaiji.tex をコンパイルします。
  C:\gaijiSample>\platex gaiji
gaiji.dvi ができますが,DVIOUT で pkフォントが $TEXMF\fonts\pk\modeless\gaiji に生成されず,\gaijiSample フォルダに生成される場合があります。この時は,その pkフォントを $TEXMF\fonts\pk\modeless\gaiji にコピーします。すると外字も表示できるようになります。また DVIOUT のなんらかの障害で表示できなくても,GSview では問題なく表示できます。なお DVIOUT プロパティの Font 欄には,
^r\pk\modeless\\^s.^dpk の記述を追加しておいてください。

NEC 拡張文字を利用する場合

これは Windows TeX で,NEC 外字を利用したい場合です。IBM 拡張文字は dvips(k) ではサポート外になりますので,ここではとりあげません。 90ms.map と config.90ms をエディターで作り,コンパイルします。

【90ms.map の内容】

rml     Ryumin-Light-90ms-RKSJ-H
gbm     GothicBBB-Medium-90ms-RKSJ-H
【config.90ms の内容】
SJIS
p +90ms.map
これらのファイルを作成したら,サンプルの necgaiji.tex をコンパイルします。
  C:\gaijiSample>\platex necgaiji
  C:\gaijiSample>\dvipsk -P90ms necgaiji
この結果,問題なく使用できるようになります。

サンプルファイルのダウンロード

以上で使用したすべてのサンプルファイル gaijisample.zip がダウンロードできます。
解凍後は C:\gaijiSample フォルダにコピーしてご使用ください。

OTFパッケージを利用する場合

OpenType フォントはクロスプラットフォームで活用可能な新しいフォントファイル形式で,Adobe 社とMicrosoft 社が共同開発したものです。その OpenType は Adobe-Japan1-3 以降の規格ですが,特にPro 仕様の OpenType は,Adobe-Japan1-4 に準拠した15,444文字が収録されており,多くの異体字(正字・旧字)や記号を含んでいます。Adobe-Japan1-5 ではいわゆる第三,第四水準の漢字など20,317字,最新の Adobe-Japan1-6 では23,058字となっています。
また従来の PostScript Type 1(OCF/CID)ようにプリンター側にフォントを搭載する必要がなく,アプリケーション及びドライバーが OpenType に対応していれば,ダイレクト出力が可能となっています。
OpenType を使用して,上記の丸付き数字や記号類,人名用漢字など幅広く TeX で利用できます。ここでは,PostScript Type 1 と OpenType が混在する場合と OpenType のみ使用する場合でご説明します。
OTFパッケージの入手先やインストール方法等については,奥村先生のOTFページ等をご参照ください。
まず,$TEXMF\fonts\opentype\kozuka のフォルダを準備しておきます。Acrobat 6.0 以降がインストールされていれば,\Program Files\Common Files\Adobe\PDFL\6.0\Fonts の
・KozMinPro-Regular-Acro.otf
・KozGoPro-Medium-Acro.otf
を\kozukaフォルダにコピーします。また \Windows\Fonts にもコピーしておきます。
このフォントは Adobe-Japan1-4 に準拠した OpenType ですが,通常はこれで十分間に合います。
・CID番号は10進で表記し,Adobe-Japan1-4 の場合は \CID{0} から \CID{15443} の範囲です。
PostScript Type 1 と OpenType が混在する場合の文書ファイル gaijiotf.tex での記述と処理の例です。

【gaijiotf.tex の記述】

\documentclass{jbook}
\usepackage[noreplace]{otf}
\begin{document}
これはPostScript Type 1とOpenTypeが混在している例です。

Adobe-Japan1-4のCID番号は\CID{0}から\CID{15443}の範囲です。

森鴎外と森\CID{7646}外

\CID{1481}飾区と\CID{7652}飾区

CID番号が指定できる\CID{1481}と\CID{7652}の例だが,葛と\UTF{845B}のように
16進4桁で表記するUnicodeでは同じコード番号の845Bが割り当てられているので,
区別できない文字があります。

\CID{7555}\CID{7556}\CID{7557}は,
\ajMaru{1}\ajMaru{2}\ajMaru{3}のようにわかりやすいマクロで記述できます。
\end{document}
Adobe-Japan1-X の収録文字とCID番号を調べたいときは, Adobe-Japan1-6.pdf や 『改訂第4版 LaTeX2e 美文書作成入門』(奥村晴彦著)の付録L等をご参照ください。
またフォントや CMap の役割について詳しく知りたい方は, 「DTPフォント情報」をご覧ください。

【gaijiotf.tex の処理】

  C:\gaijiOTF>platex gaijiotf
  C:\gaijiOTF>dvipsk gaijiotf
DVIOUTで確認したい場合は,あらかじめ $user.map を準備し,
プロパティのFont2タブで,ftt: に C:\dviout\map\$user.map を指定します。
なお dviout for Windows は Ver. 3.18 の時点では Adobe-GB1,Adobe-CNS1,Adobe-Korea1 の CID 番号に対応していないので, 一部の文字は確認できません。最終確認はPDFで行います。
続いて Distiller 6.0 以降のジョブオプションで, KozMinPro-Regular-Acro と KozGoPro-Medium-Acro を埋め込むように設定し, 埋め込めなかったときの処理: は「無視する」を選択します。 その後,dvipskで出来上がったPSファイルを Distiller でPDFを作ります。

dvi ファイルから直接PDFを生成できる dvipdfmx でもPDFを作ってみましょう。
ただ dvipdfmxを使用する場合,$TEXMF\fonts\map\dvipdfm\baseにある cid-x.map よりも, $TEXMFLOCAL\fonts\map\dvipdfmの cid-x.map が優先されるのでご注意ください。
その cid-x.map に,以下を追加します。

rml   H !Ryumin-Light
gbm   H !GothicBBB-Medium
rmlv  V !Ryumin-Light
gbmv  V !GothicBBB-Medium
dvipdfmx で処理します。
  C:\gaijiOTF>dvipdfmx gaijiotf
gaijiotf.pdf は文書のプロパティで,予想通り Ryumin-Light は埋め込まれず,KozMinPro-Regular-Acro は埋め込まれているのが確認できます。
最後に,OpenType だけを使用する場合の文書ファイル sampleotf.tex での記述例です。

【sampleotf.tex の記述】

\documentclass{jbook}
\usepackage{otf}
\begin{document}
これはOpenTypeのみを使用する例です。

Adobe-Japan1-4のCID番号は\CID{0}から\CID{15443}の範囲です。

森鴎外と森\CID{7646}外

\CID{1481}飾区と\CID{7652}飾区

CID番号が指定できる\CID{1481}と\CID{7652}の例だが,葛と\UTF{845B}のように
16進4桁で表記するUnicodeでは同じコード番号の845Bが割り当てられているので,
区別できない文字があります。

\CID{7555}\CID{7556}\CID{7557}は,
\ajMaru{1}\ajMaru{2}\ajMaru{3}のようにわかりやすいマクロで記述できます。
\end{document}
処理は gaijiotf の場合と全く同様に行います。 そして,sampleotf.pdf 文書のプロパティでフォントが全て埋め込まれていることを確認します。

ここでは Acrobat 6.0 がインストールされていることを前提に 説明しましたが,Acrobat 7.0 以降がインストールされていれば, \Program Files\Common Files\Adobe\PDFL\7.0\Fonts の
・KozMinProVI-Regular.otf
・KozGoPro-Medium.otf
が利用できます。特に,KozMinProVI-Regular.otf は
Adobe-Japan1-6 で収録されている23,058文字が使用できます。