多くの日本語フォントを同時に使う

フォントはいくつ必要か

論文を書くだけなら日本語フォントは「リュウミンL」と「中ゴシックBBB」だけあれば充分かもしれません。書籍ならもう少し必要かもしれませんが、あまり多くのフォントを使うと統一感がなくなります。しかし、雑誌っぽいレイアウトの本では、もっと多くのフォントが必要でしょう。私の場合、1冊の本を作るのに、だいたい日本語フォントだけで15書体ぐらいは使います。

以下、多書体の例として、印刷所にデータ入稿するためにモリサワフォントを使う場合を中心に説明しますが、他のフォントの場合も同様に考えることができます。

基本五書体以外のモリサワフォントを使う

一般に「TeXでモリサワフォントを使う」と言えば、大抵がPostscriptプリンタ内蔵の「基本五書体」を使うことを考えたものばかりです。それ以外の「新ゴ」などを使うにはどうすればいいのでしょうか?

ここで注目すべき点は、TeXで必要なのはフォントファイル自身ではなく、TFMファイルだということです。「新ゴ」のフォントを持っていなくてもTFMファイルさえあれば、TeXで「新ゴ」が使えます。

まずはTFMファイル

ASCII pTeXではTFMファイルは横書き用と縦書き用で別ファイルになりますので、例えば、

Y-ryumin-l.tfm
「リュウミンL」の横書き用TFM
T-ryumin-l.tfm
「リュウミンL」の縦書き用TFM
Y-gtbbb-m.tfm
「中ゴシックBBB」の横書き用TFM
T-gtbbb-m.tfm
「中ゴシックBBB」の縦書き用TFM

という感じで、Y- (横) やT- (縦) を付けた名前で統一することにしましょう。このファイル名はあくまで例ですが、以下、この命名例に従って話を進めます。同様に横書き「新ゴL」ならY-shingo-l.tfmとかいった風にファイル名を決めておきます。

次に重要なことは、和文で各フォントに合わせた詰め組みをしないなら、どの和文フォントでも組版ルールが同じになるということです。つまり、和文用TFMファイルはすべて共通のファイルにすることができます。

例えば、以前の「文字組空き量設定とTFMファイルの作成」の回で作ったynewjis.tfm, tnewjis.tfmを使うなら、コマンドラインから、

ln ynewjis.tfm Y-ryumin-l.tfm
ln ynewjis.tfm Y-gtbbb-m.tfm
ln ynewjis.tfm Y-futomin-b.tfm
ln ynewjis.tfm Y-futogo-b.tfm
ln ynewjis.tfm Y-jun101-l.tfm
ln ynewjis.tfm Y-ryumin-r.tfm
ln ynewjis.tfm Y-ryumin-m.tfm
ln ynewjis.tfm Y-ryumin-b.tfm
ln ynewjis.tfm Y-ryumin-h.tfm
ln ynewjis.tfm Y-ryumin-u.tfm
ln ynewjis.tfm Y-shingo-l.tfm
ln ynewjis.tfm Y-shingo-r.tfm
ln ynewjis.tfm Y-shingo-m.tfm
ln ynewjis.tfm Y-shingo-b.tfm
ln ynewjis.tfm Y-shingo-u.tfm
ln tnewjis.tfm T-ryumin-l.tfm
ln tnewjis.tfm T-gtbbb-m.tfm
ln tnewjis.tfm T-futomin-b.tfm
ln tnewjis.tfm T-futogo-b.tfm
ln tnewjis.tfm T-jun101-l.tfm
ln tnewjis.tfm T-ryumin-r.tfm
ln tnewjis.tfm T-ryumin-m.tfm
ln tnewjis.tfm T-ryumin-b.tfm
ln tnewjis.tfm T-ryumin-h.tfm
ln tnewjis.tfm T-ryumin-u.tfm
ln tnewjis.tfm T-shingo-l.tfm
ln tnewjis.tfm T-shingo-r.tfm
ln tnewjis.tfm T-shingo-m.tfm
ln tnewjis.tfm T-shingo-b.tfm
ln tnewjis.tfm T-shingo-u.tfm

と、その名前でリンクしてしまえばいいのです。リンクする元ファイルはmin10.tfmやjis.tfmとかでも構いませんが、横書き用と縦書き用をごっちゃにしないで下さい。横書き用を縦書き用にリンクしたりしてはダメです。もちろん、ディスク容量を気にしないのならリンク (ln) でなくてもコピー (cp) でも構いません。

上記は「基本五書体」以外に「リュウミン」R/M/B/H/Uと「新ゴ」L/R/M/B/Uを使う場合の例です。他のフォントを使いたい場合も同様に考えて下さい。ちなみにモリサワフォントはL→R→M→B→H→Uの順に字が太くなります。なお、「新ゴH」はかなり後に発売されたので印刷所にも置いていない場合が多いです。データ入稿する場合は使用リストから外しておいた方が無難でしょう。

TeXでの使い方

例えば、\font 文を使って以下のように指定します。

\font\foo=Y-shingo-l at 9.5pt
\font\bar=Y-shingo-m at 12.3pt
これは{\foo 新ゴ}です。
{\bar 大きく}もなるよ。

これで、以後 \foo で「新ゴL」の9.5pt、\bar で「新ゴM」の12.3ptが使えます。\foo, \bar 部分は好きな名前が付けられます。名前は英字だけで数字は使えません。「=」の後ろはTFMファイルから拡張子を除いた部分を指定します。

この命令はplain TeXでもLaTeXでも、そのフォントを使う前なら文書の途中に書いても構いません。なお、TFMは縦書き・横書き別々なので、そこが縦書き部分か横書き部分かに合わせてTFMを指定して下さい。横書き部分に縦書きフォントを指定しても、エラーにならず、単に指定が無視されてしまいます。また、欧文部分も別にフォント指定が必要です。

\font\foo=Y-futogo-b at 14pt
\font\bar=cmss10 at 15pt
{\foo\bar 太めのGothic体}です。

これは「太ゴ」の14ptとCMフォント・サンセリフ体の15ptを組み合わせた例です。この \bar の指定が無いと「Gothic」という部分は標準の欧文フォントのままになります。\foo は横書き和文部分だけフォントを変えるからです。このように、\font 文では「欧文」「横書き和文」「縦書き和文」のフォントを別々に指定するのです。

なお、plain TeXでは、デフォルトでは縦書きフォントが何も指定されていない状態になっていますので、横書きならいきなり本文を書き始めても大丈夫なのに、縦書きはまずフォント指定が必要です。ここからも、横と縦のフォントは別々に認識されていることがわかるでしょう。標準の \mc (明朝体)、\gt (ゴシック体) などが縦でも横でも指定できるようになっているのは、そういうマクロを組んであるからです。

というわけで、別のフォントやサイズを使いたければ、それにまた名前を付けて \font 文を使います。

pLaTeX2eでは…

pLaTeX2eではフォントファミリーの設定ができますので、もう少しエレガントなフォント選択ができます。例えば次のようにプリアンブルなどに書いておきます。

\DeclareKanjiFamily{JY1}{shingo}{}
\DeclareKanjiFamily{JT1}{shingo}{}
\DeclareFontFamily{OT1}{shingo}{}
\DeclareFontShape{JY1}{shingo}{L}{n}{<->s* Y-shingo-l}{}
\DeclareFontShape{JT1}{shingo}{L}{n}{<->s* T-shingo-l}{}
\DeclareFontShape{OT1}{shingo}{L}{n}{<->s* [1.1] cmss10}{}
\DeclareFontShape{JY1}{shingo}{R}{n}{<->s* Y-shingo-r}{}
\DeclareFontShape{JT1}{shingo}{R}{n}{<->s* T-shingo-r}{}
\DeclareFontShape{OT1}{shingo}{R}{n}{<->s* [1.1] cmss10}{}
\DeclareFontShape{JY1}{shingo}{M}{n}{<->s* Y-shingo-m}{}
\DeclareFontShape{JT1}{shingo}{M}{n}{<->s* T-shingo-m}{}
\DeclareFontShape{OT1}{shingo}{M}{n}{<->s* [1.1] cmssbx10}{}
\DeclareFontShape{JY1}{shingo}{B}{n}{<->s* Y-shingo-b}{}
\DeclareFontShape{JT1}{shingo}{B}{n}{<->s* T-shingo-b}{}
\DeclareFontShape{OT1}{shingo}{B}{n}{<->s* [1.1] cmssbx10}{}
\DeclareFontShape{JY1}{shingo}{U}{n}{<->s* Y-shingo-u}{}
\DeclareFontShape{JT1}{shingo}{U}{n}{<->s* T-shingo-u}{}
\DeclareFontShape{OT1}{shingo}{U}{n}{<->s* [1.1] cmssbx10}{}
\DeclareFontShape{JY1}{shingo}{m}{n}{<->ssub* shingo/L/n}{}
\DeclareFontShape{JT1}{shingo}{m}{n}{<->ssub* shingo/L/n}{}
\DeclareFontShape{OT1}{shingo}{m}{n}{<->ssub* shingo/L/n}{}
\DeclareFontShape{JY1}{shingo}{bx}{n}{<->ssub* shingo/M/n}{}
\DeclareFontShape{JT1}{shingo}{bx}{n}{<->ssub* shingo/M/n}{}
\DeclareFontShape{OT1}{shingo}{bx}{n}{<->ssub* shingo/M/n}{}
\makeatletter
\DeclareRobustCommand\shingofamily{%
 \not@math@alphabet\shingofamily\relax
 \fontfamily{shingo}\selectfont
}
\makeatother

上記は、JY1の行が横書き和文、JT1が縦書き和文、OT1が欧文の設定です。それぞれでshingoという名前のファミリーを宣言し、次にそれぞれのL/R/M/B/UのTFMを指定しています。そしてOT1の行で、組み合わせる欧文フォントのTFMが指定されています。

この場合、新ゴL/Rにはcmss10、新ゴM/B/Uにはcmssbx10を組み合わせる設定になっています。組み合わせを変えたければ別のTFM名を指定すればいいです。例えばHelveticaと組み合わせたければ「cmss10」の代わりに「phvr」と、そのTFMファイル名を書くわけです。「[1.1]」の部分は、TFMを1.1倍に拡大する設定です。つまり、この設定では文字サイズに10ptを指定すると、和文部分が10ptになり、欧文部分が11ptになるわけですね。

次に、pLaTeX2eのデフォルトでは {m} が標準フォント、{bx} が太字フォントを意味します。従って、{m} や {bx} も一応設定しておきます。ここでは、{m} は「新ゴL」、{bx} は「新ゴM」と等しいという設定になっています。これで、このファミリーは「新ゴL」が標準、太字を指定すると「新ゴM」になるわけです。太字指定で「新ゴU」が指定されてほしければ、「shingo/M/n」の部分を「shingo/U/n」とすればいいです。

最後に \shingofamily という命令を新たに作り、この命令でこのファミリーが選択されるように設定しています。

具体的な使い方

pLaTeX2eで上記のマクロを使えば、\shingofamily という命令で以後のフォントは「新ゴ」ファミリーになります。中括弧の中で指定すると、その中括弧の終わりまでの範囲が変わります。例えば、

あい{\shingofamily うえab{\bfseries おかcd}きく}

だと、「うえ」と「きく」部分が「新ゴL」になり、「おか」部分は太字指定なので「新ゴM」になります。欧文は「ab」部分がcmss10で「cd」部分がcmssbx10と、自動的に組み合わせを指定したフォントになります。もちろん、縦書きフォントも同時に指定されますし、\Large 等の文字サイズ変更命令も普通に同時に使えます。

標準フォントと太字フォント以外の太さを使いたければ、例えば、

\shingofamily
あい{\fontseries{R}\selectfont うえ}

とします。これで「うえ」の部分は「新ゴR」になります。\fontseries 命令で太さを指定し、\selectfont 命令で実際にその設定が有効になります。ちなみに、LaTeXで太字を指定する命令の \bfseries\bf などは、実は内部では「\fontseries{bx}\selectfont」といった指定がされているのです。

なお、上記マクロは自分の好みに合わせて変更できます。例えば、{bx} 部分を

\DeclareFontShape{JY1}{shingo}{bx}{n}{<->s* [0.94] Y-shingo-b}{}
\DeclareFontShape{JT1}{shingo}{bx}{n}{<->s* [0.94] T-shingo-b}{}
\DeclareFontShape{OT1}{shingo}{bx}{n}{<->s* phvb}{}

とすると、太字指定は「新ゴB」とHelvetica Boldの組み合わせになり、さらに今度は欧文フォントが指定サイズのままで、和文フォントの方を0.94倍に縮小する設定になります。つまり10ptを指定すると、欧文部分が10pt、和文部分が9.4ptになるわけです。なお、この和文TFMの実体がmin10.tfmなどなら、TFM自体が0.962216倍になっていますので、それのさらに0.94倍となります。

ryuminファミリーなど、他のファミリーも同様に設定することができます。

xdviの設定

このように、TeXはフォントの字形データがなくても文字組みができますが、そのままではプレビューができません。FreeType対応xdviを使う場合、/usr/local/share/texmf/xdvi/vfontmapファイル (システムによってインストールされている場所は違うと思います) などの中に、

Y-ryumin-l /usr/local/share/fonts/hoge-mincho.otf
T-ryumin-l /usr/local/share/fonts/hoge-mincho.otf
Y-gtbbb-m /usr/local/share/fonts/hoge-gothic.otf
T-gtbbb-m /usr/local/share/fonts/hoge-gothic.otf
 …以下同様…

という風に、別のフォントで置き換えて見る設定を書いてしまいましょう。なお、上記の「hoge-mincho」とかいう部分は単なる例なので、実際にインストールしてある、できるだけ似た書体のフォントを指定して下さい。モリサワOpenTypeフォントをインストールしてあるMacOS Xなら、それを指定することもできます。なお、Mac用NewCIDフォントなど、リソースフォークに字形データがあるフォントは指定できません。

似た書体のフォントでないとイメージは狂いますが、違う書体でもどの位置にどの文字が来るのかは、きちんとプレビューできます。なお、DTPに力を入れているパソコンショップ (Mac専用店とか) なら、モリサワのフォントカタログが置いてあります。これをもらってきて、プレビューの時に傍らに置いて想像力をたくましくしましょう。ほら、似てなかったフォントが脳内で新ゴに見えてきた(笑)。

dvipsの設定

makejvfコマンドを使って、dvips用の仮想フォント (VF) を作ります。makejvfコマンドが無ければインストールしておいて下さい (ASCIIのサイトからソースを取ってきます)。

先ほどのTFMとは別の名前に変換しないとならないので、Y- (横) にはH- (水平)、T- (縦) にはV- (垂直) を付けて対応させることにします。これもファイル名はあくまで例です。以下、コマンドラインから実行します。

makejvf Y-ryumin-l H-ryumin-l
makejvf T-ryumin-l V-ryumin-l
makejvf Y-gtbbb-m H-gtbbb-m
makejvf T-gtbbb-m V-gtbbb-m
 …中略…
makejvf Y-shingo-b H-shingo-b
makejvf T-shingo-b V-shingo-b
makejvf Y-shingo-u H-shingo-u
makejvf T-shingo-u V-shingo-u

これで例えば、Y-ryumin-l.tfmを元にY-ryumin-l.vfとH-ryumin-l.tfmが作られます。

このうちH-ryumin-l.tfmの方は、高さ90% で深さ10% のTFMになっています。しかし、以前のページで作ったynewjis.tfmは87.6% と12.4% という比率のTFMです。dvipsでは、後からできた方のこのH-ryumin-l.tfmの高さ・深さ情報は使わないので、このままでも問題ないのですが、他のDVIwareを使う場合も考えると合わせておいた方が無難でしょう。

(DESIGNSIZE R 10.0)
(CHECKSUM O 0)
(FONTDIMEN
 (SLANT R 0.0)
 (SPACE R 0.0)
 (STRETCH R 0.0)
 (SHRINK R 0.0)
 (XHEIGHT R 1.0)
 (QUAD R 1.0)
 (EXTRASPACE R 0.0)
 (EXTRASTRETCH R 0.0)
 (EXTRASHRINK R 0.0)
 )
(TYPE O 0
 (CHARWD R 1.0)
 (CHARHT R 0.876)
 (CHARDP R 0.124)
 )

上記PLファイルをpltotfコマンドでTFMにし、H-ryumin-l.tfm等を置き換えてしまいましょう。H-*.tfmはすべて同じファイルです。同じ内容をコピーして下さい。なお、V-*.tfmや *.vfの方は、そのままいじらないようにして下さい。

ここまででできた *.tfmや *.vfファイルはすべて、TeXのフォントディレクトリにインストールするといいですが、カレントディレクトリ (TeXのソースファイルと同じ所) でも使えると思います。

Postscriptフォント名と対応付け

次に、/usr/local/share/texmf/dvips/config/psfonts.mapファイルなどの中に以下の設定を追加します。

H-ryumin-l Ryumin-Light-H
V-ryumin-l Ryumin-Light-V
H-gtbbb-m GothicBBB-Medium-H
V-gtbbb-m GothicBBB-Medium-V
H-futomin-b FutoMinA101-Bold-H
V-futomin-b FutoMinA101-Bold-V
H-futogo-b FutoGoB101-Bold-H
V-futogo-b FutoGoB101-Bold-V
H-jun101-l Jun101-Light-H
V-jun101-l Jun101-Light-V
H-ryumin-r Ryumin-regular-H
V-ryumin-r Ryumin-regular-V
H-ryumin-m Ryumin-Medium-H
V-ryumin-m Ryumin-Medium-V
H-ryumin-b Ryumin-Bold-H
V-ryumin-b Ryumin-Bold-V
H-ryumin-h Ryumin-heavy-H
V-ryumin-h Ryumin-heavy-V
H-ryumin-u Ryumin-Ultra-H
V-ryumin-u Ryumin-Ultra-V
H-shingo-l ShinGo-Light-H
V-shingo-l ShinGo-Light-V
H-shingo-r ShinGo-regular-H
V-shingo-r ShinGo-regular-V
H-shingo-m ShinGo-Medium-H
V-shingo-m ShinGo-Medium-V
H-shingo-b ShinGo-Bold-H
V-shingo-b ShinGo-Bold-V
H-shingo-u ShinGo-Ultra-H
V-shingo-u ShinGo-Ultra-V

このように、先ほどmakejvfコマンドで指定した名前とPostscriptフォント名の対応関係を書くわけです。Postscriptフォント名は、横書き用が -H、縦書き用が -Vで終わり、これはフォントによって固定の名前です。

ちなみに、文字の太さを表すL/R/M/B/H/Uは、Postscriptフォント名ではそれぞれLight, regular, Medium, Bold, heavy, Ultraとなります。なぜregularとheavyだけ全部小文字なのかは謎です(笑)。これはモリサワフォントだけの特徴で、小塚明朝とかだとRegular等も大文字で始まるのですが……。

なお、これをpsfonts.mapに直接書かずに、/usr/local/share/texmf/dvips/config/config.psなどに「p +morisawa.map」などと書き加え、morisawa.mapファイルに上記を書くという風に別ファイルにすることもできます。

Macでプレビューする場合

dvipsが出力したPostscriptファイルをAcrobat Distiller (製品版) などでPDFに変換し、モリサワATMフォントがインストールされたMacintoshで見るとほぼ完璧なプレビューができます。でも、モリサワフォントは高いので、フォントだけで15万円ぐらいは買わないとなりません。

フォント代をケチるなら、モリサワビットマップフォントを使う手があります。モリサワのサイトから無料でダウンロードできます。「書体確認用でレイアウトには使えません」と注意がありますが、ちょっとガタガタなだけでプレビューには充分です。ただし、Macintoshにしかインストールできません。

できたPostscriptファイルの出力

できたPostscriptファイルをプリンタで出力する場合、そのフォントはプリンタに搭載されている必要があります。

Postscriptプリンタは通常、標準では基本五書体までしか搭載されていませんが、ハードディスク内蔵のPostscriptプリンタなら、それ以外の「新ゴ」なども後から追加インストールできます。「プリンタにハードディスク内蔵?」と思うかもしれませんが、中級機以上のPostscriptプリンタならたいてい内蔵しています。

フォントはよく使う「リュウミンパック」「新ゴパック」でまとめて15万円ぐらいでしょうか?(低解像度版の場合) なお、これらのフォントはMacintoshからしかインストールできないようになっています。また、インストール時にインストール・フロッピーが書き変わるので、二度目のインストールはできないというプロテクトが掛かっています。

フォントはプリンタ内のハードディスクにインストールされる仕組みなので、一旦インストールした後はMacが無くても、ネットワーク経由のUNIXからでもそのフォントを使ってプリントできます。

また自分のプリンタにフォントがなくても、印刷所や出力センターにあれば出力できます。つまり、TeXの場合、印刷所にデータ入稿することを考えると、そのフォントは自分の手元にまったくなくても組めるのです。

ghostscript (gs) の設定

こうしてできたPostscriptファイルをghostscript (gs) で見ると、フォントが無いとエラーが出ます。エラーを出さないようにするにはxdvi同様に代替フォントを指定します。

/usr/local/share/ghostscript/7.xx/lib/CIDFnmapなどのファイルに、

/ShinGo-Light (/usr/local/share/fonts/hoge-gothic.ttf) ;
/ShinGo-Medium (/usr/local/share/fonts/hoge-gothic.ttf) ;
 …以下同様…

という風に、代替フォントを指定しておけばいいです。(「hoge-gothic」とかいう部分は実在のものに変更して下さい)

家庭用プリンタでTrueTypeフォントを使う

このように、ghostscriptにはPostscriptフォントを代替TrueTypeフォントで表示する機能がありますが、これを逆に利用することを考えます。つまり、自分が使いたいTrueTypeフォントに適当なPostscript名を付けてCIDFnmapに登録しておくのです。

あとは、それに対応するTFMやVFを作り、TeXから使用します。dvipsでPostscriptに変換後ghostscriptで見ると望みのTrueTypeで組めているという寸法です。プリンタにはghostscriptで変換してプリントすれば、そのTrueTypeフォントで出力もできます。


渡邉たけし <t-wata@dab.hi-ho.ne.jp>