マクロツイーター

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

Babel な話:type1ec パッケージの 10pt オプションがアレな件

美文書第 5 版の 360 ページ(I.3 節)で type1ec パッケージが紹介されているが、そこの読込例に 10pt というオプションが付けられている。

\usepackage[10pt]{type1ec}

しかし、このオプションは最近の環境では不要なことがほとんどである。これについて解説する。

type1ec パッケージの目的と使い方

名前から想像できるように、type1ec パッケージ*1は type1cm の「EC フォント版」で、EC フォント(T1 エンコーディングの CM フォント)を任意のサイズで使うためのもので、通例 Type1 版フォントを使う場合に用いられる。*2例えば、EC フォントを 15pt で使おうとして

\usefont{T1}{cmr}{m}{n}\fontsize{15}{20}\selectfont

としても、既定の状態では 14.4pt に「調整」されてしまうが、

\usepackage{type1ec}

として type1ec を読み込んでおくと、「14.4pt のフォント(ecrm1440 *3)」を拡大して 15pt で使うようになる。CB フォント(CM フォントに対応する LGR エンコーディングのフォント)もフォント定義において EC フォントと同じ機構を利用しているので全く同様の挙動を示し、任意のサイズで使えるようにするには type1ec パッケージが必要である。

10pt オプションの動作

type1ec パッケージには 10pt というオプションが存在する。これは「拡大の元として 10pt のフォントのみを用いる」という設定を表す。すなわち、上述の例で type1ec に 10pt オプションを追加すると「10pt のフォント(ecrm1000)」を拡大して 15pt で使うようになる。一般的には、これは 10pt 無指定の場合に比べて品質が劣る。

10pt オプションが存在する理由

このようなオプションが用意されている理由は「ディスク容量の節約」である。CM-Super も CB フォントも大量の Type1 フォントから構成されていて全ての容量を合わせると数十 MB になり、一昔前の感覚では「巨大」と考えられていた。ここで、type1ec に 10pt オプションをつけると、Type1 フォントファイルは 10pt のものしか要らなくなるので必要な容量が数分の一に減る――これが 10pt オプションの目的である。特に CB フォントについては、CTAN に「10pt のフォントだけを集めた縮小版」が用意されていた。

しかし、現代の感覚では数十 MB というのは巨大でも何でもなく、CM-Super や CB フォントの Type1 版を「縮小版」でインストールする理由はない。数 GB の容量の TeX Live には当然これらの Type1 フォントは完全な形で含まれているし、今では CTAN の CB フォントも「完全版」しか存在しない。だから、最近の環境では、CM-Super や CB フォントは完全な形でインストールされていること*4がほとんどであろう。そういう環境では type1ec の 10pt オプションは全く無用なのである。*5

確認のため繰り返すと:type1ec パッケージの 10pt オプションが必要なのは、CM-Super や Type1 版 CB フォントについて「10pt のフォントファイルのみをインストールしている」人に限られる。TeX Live を完全インストールしている人は不要である。

10pt オプションの罠

LaTeX の仕様として「文書クラスに与えたオプションは全てのパッケージで暗黙的に渡される」というものがあり、ドライバ指定(dvips 等)のオプションで稀に用いられる。ところで、大抵の文書クラスには基底フォントサイズの指定として「10pt」があるが、これを指定した状態で type1ec を読み込むと、意図せずに type1ec の 10pt オプションが有効になってしまう。

\documentclass[a4paper,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage{type1ec} % 10pt オプションが有効になる
%…(略)…

これを根本的に解決するのは容易ではないが、幸いなことに、ほとんどの文書クラスでは 10pt は既定値なので、単にそれを省略することで問題を避けることができる。

*1:「付録」に記されているように、このパッケージは CM-Super バンドルに含まれる。

*2:Type1 版のフリーの EC フォントの集まりが CM-Super バンドルである。type1cm も type1ec も目的は「任意のサイズで使う」であり、実際には Type1 版を使うかどうかは関係が無い。

*3:これは TFM の名前。これに対応する CM-Super の Type1 フォントのファイル名は sfrm1440.pfb である(先頭の ec- が sf- に置き換わる)。

*4:これを確認するには、kpsewhich で「sfrm1200.pfb」(CM-Super)と「grmn1200.pfb」(EC フォント)が存在するかを調べればよい。

*5:ちなみに、前のページの updmap の例で使われている「cbgreek-full.map」というのは CB フォント Type1 版用のマップファイルであるが、このファイル名に「full」と付いているのはこれが「完全版」であったことの名残である。