Written by たちゃな@巫研 < tatyana at miko dot org >
=更新履歴=
公開。(Dec 23, 2006)
オリジナルの pTeX では、デフォルトで利用できる和文フォントは 明朝 (rml) とゴシック (gbm) の2種類だけです。 大多数のエンドユーザ環境では バリエーションに富んだ和文フォントが用意されていないため、 フォントの設定が必要最小限にとどめられているのでしょう。
一方、MacOS X にはヒラギノ6書体が搭載されており、 他の環境と同じ感覚で使っていたのでは、残る4書体が無駄になってしまいます。 これは少々勿体ないと言わざるを得ません。 フォントを必要以上に使いすぎるのは決して好ましいことではありませんが、 状況に応じて適切に使い分けることができれば、 それはドキュメントの魅力を増すこともにつながるでしょう。
本稿では MacPorts の pTeX を題材に、和文多書体(ヒラギノ基本6書体のほか、 ユーザ定義の和文フォントを含む)を利用可能にするための基本的な方法について、 簡単に説明します。 MacPorts 以外の pTeX でも、 ptetex3 ベースの pTeX ディストリビューションであれば、 多少の手直しで適用できると思います。
JIS X 0208 範囲内の文字、 つまり、JIS 第一・第二水準の漢字しか利用しないという場合には、 以下の方法で多書体環境を実現することができます。
morisawa.sty を用いることで、ヒラギノ5書体を利用できます。 本来これはモリサワの基本5書体を出力するためのスタイルファイルですが、 MacPorts の pTeX では、 ヒラギノで代替出力できるようにフォントがマッピングされています。 (インストール時のオプションでマッピングしないようにすることもできます。 また、インストール後も updmap-sys コマンドで フォントマップファイルを差し替えることにより変更できます。)
morisawa.sty の使用例を以下に示します。
\documentclass{jsarticle} \usepackage{morisawa} \begin{document} {\kanjifamily{rml}\selectfont これはリュウミンのふりをしたヒラギノ明朝W3です。} {\kanjifamily{fma}\selectfont これは太ミンのふりをしたヒラギノ明朝W6です。} {\kanjifamily{gbm}\selectfont これは中ゴシックBBBのふりをしたヒラギノ角ゴW3です。} {\kanjifamily{gbm}\fontseries{bx}\selectfont これは太ゴB101のふりをしたヒラギノ角ゴW6です。} {\kanjifamily{jun}\selectfont これはじゅんのふりをしたヒラギノ丸ゴW4です。} \end{document}
ヒラギノの各書体を利用したい場合には、 morisawa.sty を使うよりも otf.sty の deluxe, expert オプションを使ったほうが、 より良い出力結果が得られます。 たとえば、morisawa.sty では組方向に合わせた縦組み・横組み専用仮名、 ルビ用仮名の使い分けといった芸当はできません。 また、使用できる書体も5書体にとどまります。 こうした理由から、morisawa.sty の新規利用はお勧めしません。 今後は状況の許す限り otf.sty を使ったほうが良いでしょう。
任意の TryeType/OpenType フォントを TeX で利用するには、 幾つかの方法があります。 本稿では makejvf を使って TFM ファイルと VF ファイルを用意する方法について説明します。
以下実例として、 AXIS フォント (AXIS Regular) を TeX で扱えるようにする方法を示します。
まず、 タイププロジェクトのサイトから AXIS Regular フォントの試用版をダウンロードしてください。 試用版では Adobe Japan 1-3 の文字セットのうち常用漢字以外の漢字が省かれていますが、 正規登録を済ませた個人であれば、私用・商用を問わず無料で利用できるとのことです。
アーカイブを展開することで AXIS-R-Joyo.otf が得られます。 $TEXMF-LOCAL ディレクトリ以下に fonts/opentype というディレクトリを作成し、 その中にフォントファイルを配置しておきます。
$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/opentype $ sudo install -m 0644 AXIS-R-Joyo.otf /opt/local/share/texmf-local/fonts/opentype
最初に、TeX が DVI ファイルを出力する際に用いるフォントメトリックファイルを用意します。 このフォントメトリックに基づいて AXIS フォントの各文字が紙上に配置されていくことになります。 ファイル名は好きに決めて構いません。ここでは Axis-R-Joyo-H.tfm とします。 内容は jis.tfm をコピーしたものです。
pTeX 上で和文の組版をおこなう際のフォントメトリックとしては min10.tfm が歴史的に長く使われてきましたが、 このフォントメトリックには癖があり、 新規の利用はお勧めしません。 jis.tfm は JIS X 4051 「日本語文書の行組版方法」に沿った組版をおこなうことのできるフォントメトリックファイルで、 jsclasses においても標準的に使われています。 (勿論、必要があれば他のフォントメトリックを用いて頂いて構いません。)
$ mkdir -p ~/Desktop/tmp $ cd ~/Desktop/tmp $ cp /opt/local/share/texmf/fonts/tfm/ptex/jis.tfm ./Axis-R-Joyo-H.tfm $ cp /opt/local/share/texmf/fonts/tfm/ptex/jis-v.tfm ./Axis-R-Joyo-V.tfm
次に、DVIware が DVI ファイルを表示・印刷する際に用いる仮想ファイルとフォントメトリックファイルを makejvf で生成します。 このコマンドは pTeX のパッケージには含まれていませんので、以下のコマンドで別途導入してください。
$ sudo port install makejvf
makejvf の使い方としては、第一引数に pTeX の使う TFM 名(=先ほど用意した TeX 用 TFM ファイル)、第二引数に DVIware の使う TFM 名を指定します。
$ makejvf Axis-R-Joyo-H.tfm axis $ makejvf Axis-R-Joyo-V.tfm axis-v
これにより、DVIware 用 VF/TFM ファイル(Axis-R-Joyo-H.vf と axis.tfm)が生成されますので、 先ほどの TeX 用 TFM ファイル(Axis-R-Joyo-H.tfm)とともに、TeX のディレクトリツリーに追加します。
$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/tfm/axis $ sudo install -m 0644 Axis-R-Joyo-H.tfm Axis-R-Joyo-V.tfm axis.tfm axis-v.tfm \ /opt/local/share/texmf-local/fonts/tfm/axis $ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/vf/axis $ sudo install -m 0644 Axis-R-Joyo-H.vf Axis-R-Joyo-V.vf \ /opt/local/share/texmf-local/fonts/vf/axis
ここで DVIware の挙動について簡単におさらいしておきましょう。
まず、DVIware は DVI ファイルを読み込んだ際、文書中に AXIS フォント (Axis-R-Joyo-H) が使われているのを発見すると、
そのフォント名と同名の VF ファイル (Axis-R-Joyo-H.vf) を探しにいきます。
VF ファイル中には、フォントを印字すべき領域に対して、
実際にどのフォントのどのグリフを印字するのか、
および、グリフの印字位置をどれだけ補正する必要があるのか、などといった情報が含まれます。
たとえば今回の場合には、印字するフォントとして "axis" という名前のフォントを使いなさいという定義が
VF ファイル内に書き込まれています。
また、jis フォントメトリックでは括弧や句読点の類は通常の半分の幅で組版がおこなわれますが、
フォントファイル側ではそうしたグリフも全角幅として収録されている関係上、
印字する際には適宜位置を補正してやらなければなりません。
VF はそうした役割を担います。
その後、DVIware が最終的に "axis" フォントを印字する際には、
axis.tfm のフォントメトリックに書かれた情報も参照したのち、
ようやく印字がおこなわれるという仕組みになっています。
"axis" というフォントを AXIS-R-Joyo.otf で印字できるようにするため、以下の内容でフォントマップファイルを用意してください。
[axis.map] axis H AXIS-R-Joyo.otf axis-v V AXIS-R-Joyo.otf
これも今までのファイルと同様に、TeX のディレクトリツリーに追加します。
$ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/map/dvips/axis $ sudo install -m 0644 axis.map /opt/local/share/texmf-local/fonts/map/dvips/axis
文書作成時に AXIS フォントを手軽に使えるよう、 以下のようなスタイルファイルを用意しておくと便利です。
[axis.sty] \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{axis}[2006/01/01] \DeclareKanjiFamily{JY1}{axis}{} \DeclareKanjiFamily{JT1}{axis}{} \DeclareFontShape{JY1}{axis}{m}{n}{<-> s * [0.961] AXIS-R-Joyo-H}{} \DeclareFontShape{JT1}{axis}{m}{n}{<-> s * [0.961] AXIS-R-Joyo-V}{} \newcommand{\axisdefault}{axis} \DeclareRobustCommand\axisfamily {\not@math@alphabet\axisfamily\relax \kanjifamily\axisdefault\selectfont} \def\textaxis#1{\relax\ifmmode\hbox\fi{\axisfamily #1}} \endinput
$ sudo install -m 0755 -d /opt/local/share/texmf-local/ptex/platex/axis $ sudo install -m 0644 axis.sty /opt/local/share/texmf-local/ptex/platex/axis
なお、
スタイルファイル内でフォントのサイズを 0.961 倍しているのは、
jsclasses との兼ね合いからです。
jsclasses では、最終的な仕上がりの際に
明朝とゴシックのフォントが写植の 13 級のサイズになるよう、
スタイルファイル内でフォントのサイズを 0.961 倍しています。
そのため、jsclasses を利用する場合にはユーザの追加したフォントのサイズも
同様に 0.961 倍しておかないと、
デフォルトのフォントよりも一回り大きく印字されてしまいます。
(jsclasses を利用しない場合には等倍のままで構いません。)
ちなみに、min10 のフォントメトリックでは和文と欧文を混植した際のバランスを取るため、
10pt の和文フォントは TFM 内部で事前に 0.962216 倍され、約 9.6pt のフォントとして設定されています。
jis のフォントメトリックも min10 に倣い 0.962216 倍に設定されています。
一方、otf.sty 添付の TFM では min10 に迎合することなく、等倍のままの設定 (10pt) となっています。
otf.sty は、その管轄下にあるフォントに関しては
スタイルファイル内部にて適切な倍率
(jsclasses 使用時には 0.962216 x 0.961 = 約0.92469 倍、
未使用時には 0.962216 x 1 = 0.962216 倍)
となるよう対策が施されており、
ユーザが普段この違いを気に掛ける必要はありませんが、
もし TeX 用 TFM ファイルの雛形として(jis.tfm ではなく)otf.sty 添付の TFM を用いた場合には、
スタイルファイル側で設定するフォントの倍率は 0.961 倍ではなく、
0.92469 倍としなければならない点に注意してください。
このスタイルファイルを TeX 文書のプリアンブルにてインクルードすることにより、 {\axisfamily こういったコマンドで} \textaxis{AXIS フォントを出力} できるようになります。
本文用のフォントとして使いたい場合には、TeX 文書のプリアンブルで以下のように書けば良いでしょう。
\documentclass{jsarticle} \usepackage{axis} \renewcommand{\mcdefault}{axis} \begin{document} ...
最後に mktexlsr と updmap-sys をおこない、変更を反映させてください。
$ sudo mktexlsr $ sudo updmap-sys --enable KanjiMap axis.map
TeX における VF(仮想フォント)の機構は、 その名のとおり複数のフォントを組み合わせ、あたかも一つのフォントとして扱ったり、 複数のグリフを合成して新しいグリフを作成したりすることが可能です。 これを活用することで、たとえば漢字と仮名で別々のフォントを使う(混植する)ことが可能になります。
以下サンプルとして、漢字部分のフォントにヒラギノ、仮名部分のフォントに AXIS を混植する、 MyFont-H という仮想フォントを生成してみることにします。
jis.tfm をベースに MyFont-H.tfm という名前で TFM ファイルを用意します。
$ cd ~/Desktop/tmp $ cp /opt/local/share/texmf/fonts/tfm/ptex/jis.tfm ./MyFont-H.tfm $ cp /opt/local/share/texmf/fonts/tfm/ptex/jis-v.tfm ./MyFont-V.tfm
makejvf の -K オプションを使うことで、仮名書体を指定できます。 ここでは漢字フォントに hmgothr-h、仮名フォントに axis を指定しています。
$ makejvf -K axis MyFont-H.tfm hmgothr-h $ makejvf -K axis-v MyFont-V.tfm hmgothr-v $ rm axis*.tfm hmgothr*.tfm (これらの TFM は既にあり、今回生成されたものは不要です) $ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/tfm/myfont $ sudo install -m 0644 MyFont*.tfm /opt/local/share/texmf-local/fonts/tfm/myfont $ sudo install -m 0755 -d /opt/local/share/texmf-local/fonts/vf/myfont $ sudo install -m 0644 MyFont*.vf /opt/local/share/texmf-local/fonts/vf/myfont
[myfont.sty] \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{myfont}[2006/01/01] \DeclareKanjiFamily{JY1}{myfont}{} \DeclareKanjiFamily{JT1}{myfont}{} \DeclareFontShape{JY1}{myfont}{m}{n}{<-> s * [0.961] Myfont-H}{} \DeclareFontShape{JT1}{myfont}{m}{n}{<-> s * [0.961] Myfont-V}{} \newcommand{\myfontdefault}{myfont} \DeclareRobustCommand\myfontfamily {\not@math@alphabet\myfontfamily\relax \kanjifamily\myfontdefault\selectfont} \def\textmyfont#1{\relax\ifmmode\hbox\fi{\myfontfamily #1}} \endinput
$ sudo install -m 0755 -d /opt/local/share/texmf-local/ptex/platex/myfont $ sudo install -m 0644 myfont.sty /opt/local/share/texmf-local/ptex/platex/myfont
$ sudo mktexlsr
機会があれば、游築やタイポス系などの仮名書体とヒラギノ明朝との混植を是非試みてください。 これらの組み合わせでは表現の幅がグンと広がり、より楽しめることと思います。
makejvf の -K オプションで漢字/仮名フォントの混植をおこなった場合、 JIS 0x2121〜2576 までの領域にある文字は仮名フォント、 それ以外の領域にある文字は漢字フォントで出力されるようになります。
JIS 0x2121〜2576の範囲には、ひらがなやカタカナのほか、 句読点、約物、括弧類、記号、全角の英数字なども含まれています。 この仕様が好ましくない場合には、makejvf が出力した VF ファイルを直接書き換えて対処する必要があります。
日本語 VF を書き換えるには、ツールを使って VP ファイル(プロパティ形式)に変換し、 編集をおこなったあと再度 VF ファイルへと逆変換することでおこないます。 VP ファイルはテキストファイルですので、適当なエディタで編集が可能です。
VF ファイルを VP ファイルに変換するためのツールとして、web2c には vftovp が用意されていますが、 日本語 VF ファイルは扱えないため、代わりに松田 一朗 さんの disvf.pl を用います。 pTeX のパッケージには含まれていませんので、以下のコマンドで別途導入してください。
$ sudo port install disvf
また、VP ファイルを VF ファイルに逆変換するには、ovp2ovf で代用できます。 ovp2ovf は Omega の一部として pTeX に含まれているツールです。
使用例を以下に示します。
$ disvf.pl Myfont-H.vf > Myfont-H.vp $ emacs Myfont-H.vp $ ovp2ovf Myfont-H.vp $ rm MyFont-H.ofm (OFM ファイルは不要) $ mv Myfont-H.ovf MyFont-H.vf
以下のような要求のある場合には、otf.sty を使って多書体環境を実現するのが良いでしょう。
otf.sty をインクルードする際に deluxe オプションを指定すると、 LaTeX2e の NFSS における mc/m, mc/bx, gt/m, gt/bx, gt/eb, mg/m がヒラギノ6書体へとマップされ、 簡単に多書体/多ウェイト化をおこなうことができます。
使用例を以下に示します。
[sample.tex] \documentclass{jsarticle} \usepackage[deluxe]{otf} \begin{document} {\mcfamily これはヒラギノ明朝W3です。} {\mcfamily\bfseries これはヒラギノ明朝W6です。} {\gtfamily これはヒラギノ角ゴW3です。} {\gtfamily\bfseries これはヒラギノ角ゴW6です。} {\mgfamily これはヒラギノ丸ゴW4です。} {\gtfamily\ebseries これはヒラギノ角ゴW8です。} {\mcfamily\ltseries そして、もしあれば、これはヒラギノ明朝W2です。} \end{document}
組版結果は以下のとおりです。
ヒラギノ明朝W2 は Mac OS X に添付されておらず、別売のフォントですが、 otf.sty 中ではデフォルトで mc/lt にマップされています。 ヒラギノ明朝W2 は本文用のフォントとしてよく利用されるため、 このような措置がとられているのかも知れません。
ヒラギノ明朝W2 のフォントを持っている場合には、 $TEXMF-LOCAL/fonts/opentype/ に HiraMinPro-W2.otf というファイル名で配置したのち、 mktexlsr を実行してください。
$ sudo xinstall -m 0755 -d /opt/local/share/texmf-local/fonts/opentype $ sudo xinstall -m 0644 "ヒラギノ明朝 Pro W2.otf" \ /opt/local/share/texmf-local/fonts/opentype $ sudo mktexlsr
二つの方法があります。 一つは、$TEXMF/fonts/map/dvipdfm/otf-hiragino.map 中の HiraMinPro-W3 を HiraMinPro-W2 に置き換えた後、 updmap-sys を実行する方法です。 これはシステムワイドの変更となります。
もう一つは、 このようなスタイルファイルを用意して otf.sty のインクルード後にプリアンブルで読み込ませる方法です。 これは個々のドキュメント単位での変更となります。
otf.sty をインクルードする際に expert オプションを併せて指定すると、 組方向に応じて縦組み・横組み専用仮名が自動的に用いられるようになります。
[sample.tex] \documentclass{jsarticle} \usepackage[deluxe,expert]{otf} \begin{document} ...
組版結果は以下のようになります。
そのほか、ルビ専用仮名も利用できるようになります。 ルビ専用仮名は小さなサイズでも判読しやすいようにデザインされており、 {\rubyfamily このようにして} 明示的に呼び出すこともできますが、 furikana.sty を使用してルビを振る場合には自動的にルビ専用仮名が使われます。
\UTF{...} や \CID{...} を使ってフォントのグリフを呼び出す必要のない場合には、 先の「JIS X 0208 範囲内の文字しか利用しない場合の和文多書体環境の実現方法」に示した方法で フォントを追加できます。
otf.sty で扱えるフォントをユーザが追加したい場合、 つまり、追加したフォントのグリフを \UTF{...} や \CID{...} で直接呼び出せるようにするには、 otf.sty の様式に沿った多数のフォントメトリックファイル、および仮想フォントファイルを用意しなければならず、 少々面倒な作業となります。
これについては、本稿では説明を省きます。詳細についてお知りになりたい場合は otf.sty の配布物をご覧ください。
文書中で使用していないフォントがある場合、 たとえばヒラギノ明朝W2 などを使っていないのであれば、 それを他のフォントで置き換えることで、 とりあえず目的のフォントを扱えるようにできます。 otf.sty で使用されるデフォルトのフォントマップファイルは $TEXMF/fonts/map/dvipdfm/otf-hiragino.map です。 設定変更後には updmap-sys を実行して反映させてください。 (ちなみに、フォントマップファイル中にある otf-u〜 のフォントは、 グリフを \UTF{...} で呼び出す際に利用されます。 otf-c〜 のフォントは、グリフを \CID{...} で呼び出す際に利用されます。)