マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

IPAex フォントのアレ

周知の通り、CJK パッケージで日本語しようとする際に最初に*1ぶち当たる大きな壁が

(適当な)日本語のフォントを使える状態にする

ことである。すなわち以下の手順が必須になる。

  • Unicode サブフォントを使うための一連の設定(必要なファイルの生成および DVI ウェアの設定記述)を行う。pdfTeX および dvipdfmx の場合はこれで済む。*2
  • dvips の場合はさらに OpenType フォント*3から Type1 形式の実のサブフォントを生成する必要がある。

多分、CJK パッケージの使用を試みた人のかなりの割合がこのために挫折したのではないかと思われる。

しかし最近は状況が変わってきた。以前の writeLaTeX についての記事で触れたように、zhmetrics というパッケージを利用すると、それ以上ファイルを追加しなくても(つまり自分でファイル生成を行わなくても)、DVI ウェアのマップ設定だけで任意の OpenType フォントが使えるようになる。これと「マップ設定は文書中で行える」ことを組み合わせると、「適切なパッケージを作成すれば、通常の CJK パッケージの知識のみで、好きな OpenType フォントを使えるようにできる」ことが解ると思う。

しかし、この方法には限界がある。

  • dvips には通用しない。*4また、pdfTeX は Unicode サブフォントに CFF グリフの OpenType フォントをマップさせることができない。
  • pdfTeX での OpenType フォントの扱いは現状ではかなり効率が悪い。writeLaTeX の話で結局失敗したのもこれが原因である。
  • この方法では「普通の CJK パッケージの使用」に現れない機構が要求される。もちろん、パッケージでそれらを隠蔽すればよいのだが、それだと「パッケージに拘束される」ことになりそれを嫌がる人もいる。

ところが、実はこれらの問題を一挙に解決する方法がある。要するに「作成済みの Type1 フォント群を TeX Live に収録する」と良いわけである。過去に何故それが行われなかったかというと、結局

改変物の配布が可能な(まともな明朝・ゴシック体の)フォントが無かった

からであろう。しかし現在は状況が異なる。日本語 TeX で広く用いられている「IPAexフォント」は、改変物を元のフォントと同じライセンスで配布できる。

というわけで

これを CTAN にアップすればよいのではないかと。

このパッケージのインストール自体は面倒であるが、「インストール済みの状態」を考えると、そこで既に ipxm/ipxg で IPAex 明朝/ゴシックが使えるようになっている。

% 文字コードは UTF-8
\documentclass[a4paper]{article}
% いつも通りのCJK
\usepackage{CJKutf8,CJKspace,CJKpunct}
\begin{document}
\begin{CJK}{UTF8}{ipxm} %ipxm=IPAex明朝
\CJKtilde

本日は絶好の~\TeX~日和です。\par
{\CJKfamily{ipxg}\sffamily %ipxm=IPAexゴシック
本日は絶好の~\TeX~日和です。\par}

\end{CJK}
\end{document}

次のように、欧文のファミリとしても使える。(OT1、T1、TS1 に対応している。)

% 文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{CJKutf8,CJKspace,CJKpunct}
% 欧文フォントの設定
\usepackage[T1]{fontenc}
\renewcommand{\rmdefault}{ipxm} % 欧文 \rmfamily = IPAex明朝
\begin{document}
\begin{CJK}{UTF8}{ipxm}\CJKtilde
本日は絶好の~\TeX~日和です。
\end{CJK}

Ich m\"ochte \textsl{s\"u{\ss}eren} K\"ase!
\end{document}

*1:CJK がインストール済の TeX 配布物を利用するとして。まあ、CJK パッケージのインストール自体は難しくないが。

*2:これについては「美文書」第 5 版の付録 I にも載っている……と思ったら、今読み返してみると肝心の pdfTeX 用の設定が抜けている?

*3:TrueType フォントも含む。

*4:事実上、dvips では Type1 フォント(とビットマップフォント)しか扱えないと思ってよい。