USB メモリ活用講座
【TeX 欧文フォントパッケージ活用】

< 最終更新日: 2022-04-11 >

欧文フォントを扱うための基礎事項

欧文フォントの小文字の字形 (glyph) には,背の低い e や x に対し,背の高い f や h があったり,下へ突き出す g や y があるなど,和文フォントにはない特徴があります. 大文字でも幅の狭い I に対し,幅の広い M や W があります. 書体デザイナーは読みやすさ (可読性) や見た目のバランス,単語として組んだときの美しさなど,さまざまな観点から工夫を凝らし,数多くの書体がリリースされています. 欧文フォントのデザイン的な要素については,和文フォント大図鑑>欧文書体の基礎知識で図解付きで詳細に解説されているので,一度目を通しておくとよいでしょう. できれば,ベースライン (base line),エックスハイト (x-height),ディセンダ (descender),ウェイト (weight),セリフ (serif),サンセリフ (sans serif),イタリック (italic) くらいの用語は頭に入れておくとよいでしょう.

LaTeX (LaTeX2e) では,部分的に書体を変更して出力するために表1 の左の列のようなコマンドが利用できます (XXXX の部分に出力したい文字列を指定します). デフォルトの LaTeX 文書では Computer Modern フォント (CM フォント) の各書体が出力されます. NFSS2 と呼ばれる欧文フォントを細かく指定できる仕組みの \usefont コマンドを使うと,表1 の右の列のように書けば等価な出力が得られます※1. また,フォントサイズ (大きさ) は \tiny\scriptsize\footnotesieze\small\large\Large\LARGE\huge\Huge などの,基準となるフォントサイズ (\normalsize) に対する相対的なサイズ変更命令で指定することが一般的です※2

表1・LaTeX の代表的な書体指定コマンド
書体指定コマンド 出力される書体 デフォルトに等価な NFSS2 フォント指定
\textrm{XXXX} ローマン体 (セリフ体) {\usefont{OT1}{cmr}{m}{n}XXXX}
\textbf{XXXX} ローマン体の太字 {\usefont{OT1}{cmr}{bx}{n}XXXX}
\textit{XXXX} イタリックのローマン体 {\usefont{OT1}{cmr}{m}{it}XXXX}
\textsf{XXXX} サンセリフ体 {\usefont{OT1}{cmss}{m}{n}XXXX}
\texttt{XXXX} タイプライタ体 (等幅) {\usefont{OT1}{cmtt}{m}{n}XXXX}

表1 の書体指定コマンドで出力されるフォントを,丸ごと他のフォントファミリに置き換えてしまうのが,これから紹介するフォントパッケージの機能となります.

標準的に利用できる欧文フォントパッケージ

TeX Live ポータブル化に含まれていて,すぐに利用することができるフォント (パッケージ) を紹介します. フォント名の見出しを CTAN の The LaTeX Font Catalogue のフォント見本にリンクしておきます.

Computer Modern フォント (CM フォント)

TeX を開発した Donald E. Knuth 先生が,TeX と一緒に開発したフォント生成システム METAFONT を使って自らデザインしたフォントの一群です. ローマン体 (セリフ体) の Computer Modern Roman,サンセリフ体の Computer Modern Sans Serif,タイプライタ体の Computer Modern Typewriter などが含まれます.

pLaTeX 標準のドキュメントクラス (jarticle など),pLaTeX2e 新ドキュメントクラス (jsarticle など) のデフォルトで使用されるフォントで,AMS パッケージの高度な数式や記号も含め,統一感のある出力が得られます. \tiny\scriptsize により出力される小さな文字と,\large\huge により出力される大きな文字とで,文字の幅や線の太さを微調整する視覚的補正が加えられていることも特長の一つですが,任意サイズの指定に難があります※2

また,CM フォントは OT1 エンコーディング※1 で格納されており,ä や é などの文字が,アクセント記号とアルファベットの 2 つのグリフの合成 (重ねうち) で出力されます. このため,ハイフン処理やカーニングがうまく働かないほか,PDF からテキストをコピー&ペーストしたり,読み上げソフトで処理したりする場合に正しい情報が取り出せないという制約があります.

現在では,特別な理由がない限りは後継となる LM フォントを利用した方がよいでしょう.

CM フォントは,もともとは出力装置 (ディスプレイやプリンタ) の解像度に合わせたビットマップフォント (PK フォントなど) を必要に応じて生成していました. TeX Live には PostScript Type1 形式のアウトラインフォントが含まれており,dvipdfmx で PDF 出力する際には,こちらが埋め込まれるので,大判プリンタなどで拡大印刷しても美しい出力が保たれます. ただし,T1 エンコーディング※1 の Computer Modern フォント (EC フォント) を使ってしまうと,dvipdfmx で PDF 出力する際に,ビットマップの PK フォントが埋め込まれてしまうので注意が必要です. セリフ体,サンセリフ体,タイプライタ体の書体を個別に指定するような TeX 文書を作成する際に,代替フォントへの置き換えが発生すると,自分では明確に意図していなくても EC フォントが埋め込まれてしまう場合があります. PDF ファイルにどのようなフォントが埋め込まれているかは,pdffonts コマンドで確認できます. PDF ファイルの名前が filename.pdf であるときには,コマンドラインから次のように起動すれば,フォントの一覧表が出力されます.

pdffonts filename.pdf Enter

出力の 2 列め (type) が Type1C ならば Type 1 形式のアウトラインフォント,Type 3 ならば PK フォントが埋め込まれていることになります. Web ページに掲載する PDF ファイルや,学会等へ投稿するような PDF ファイルを作成する場合には,極力 Type 3 のフォント埋め込みが起こらないようにしたいものです. pdffonts の詳細については,texdoc pdffonts などで調べてください.

ちなみに,生成される PK フォントは texlive\2021\texmf-var\fonts\pk フォルダ以下に保存されます. ときどきエクスプローラなどで texlive\2021\texmf-var\fonts を開き,pk フォルダができていたら削除するようにしておけば,dvipdfmx による PDF 出力の際に mktexpk コマンドが呼び出されて PK フォントが生成されることに気づきやすくなるかもしれません.

Latin Modern フォント (LM フォント)

CM フォントとほぼ同じグリフを持ち,PostScript Type1 形式と OpenType 形式のアウトラインフォントとして配布されています. セリフ体の Latin Modern Roman,サンセリフ体の Latin Modern Sans Serif,タイプライタ体の Latin Modern Typewriter などが含まれます. ä や é などが 1 文字のグリフとして格納され,ハイフネーションやカーニングの問題は発生しないうえ,€ のように TeX の開発時には存在しなかったグリフが追加されています. さらに CM フォントには含まれていない太字のタイプライタ体などの充実がはかられており,任意のフォントサイズ指定も可能です※2

(u)pLaTeX + dvipdfmx で PDF 出力する際には Type1 形式のアウトラインフォントが埋め込まれるので,大判プリンタなどで拡大印刷しても美しい出力が保たれます.

(u)pLaTeX で LM フォントを使うには,プリアンブルで次のように指定するとよいでしょう※2

\usepackage[T1]{fontenc}
\usepackage{lmodern}

後述するように,タイプライタ体の Latin Modern Mono Z (zlmtt) を「ちょい足し」すると,表現力が少しアップできるかもしれません.

フォントに関するコレクションの追加

TeX Live ではフォントをまとめて追加するためのコレクションとして,collection-fontsrecommended と collection-fontsextra の 2 つがあるようです.

collection-fontsrecommended
Postscript 基本 35 書体,Type 1 版 Computer Modern フォント (CM-Super),TX Fonts / PX Fonts,TeX Gyre など,30 パッケージが含まれます.
インストールには約 130MB のディスクサイズが必要です.
collection-fontsextra
新 TX Fonts (New TX) / 新 PX Fonts (New PX),Libertine,Inconsolata,STIX など 335 パッケージが含まれます.
インストールには約 1.8GB のディスクサイズが必要です.

大容量の USB メモリを使っていて,CTAN で配布されているフォントの大部分を網羅したポータブル TeX 環境を構築したいというのであれば,これらのフォントコレクションを加えればよいでしょう※3. そうすれば,20 世紀に作成された TeX 文書から,最新の LuaLaTeX での組版まで対応できるようになるはずです.

フォントパッケージの追加

TeX Live のフォントコレクションは,くくり方が大きすぎて,今となっては使う機会の少なそうなフォントや,見た目がほとんど変わらず重複しているように感じられるフォントまで,ゴッソリと追加されてしまいます. そこで,技術系の文書作成で重宝しそうなフォントパッケージをセレクトして追加する方法を紹介しましょう.

Latin Modern Mono Z (zlmtt) フォント

Latin Modern フォント のタイプライタ体に,細身の Light を加えて 3 ウェイトにするなどの拡張を加えたフォントです. 幅の狭い light condensed 体,Small Caps 体,単純に傾けたデザインとは異なる Italic 体なども使えるようになります. 通常,タイプライタ体はどのグリフも同じ幅で出力されるのですが,あえてプロポーショナルで組むというオプションも用意されています.

tlmgr info によれば,zlmtt の sizes は doc: 65k,run: 77k と表示されました※4. 追加するには,次のように TeX Live マネージャを呼び出せばよいでしょう.

tlmgr install zlmtt mweights Enter

ここで mweights は,近年増えてきた多ウェイトフォントを LaTeX で利用するためのパッケージで,collection-fontsextra に含まれています※4. この後で説明する Linux Libertine などで必要となるので,zlmtt を使わないとしてもインストールしておいた方がよいでしょう.

タイプライタ体を Light ウェイトにするには,プリアンブルで次のように指定します:

\usepackage[l]{zlmtt}

その他の使用法は,インストール後に texdoc zlmtt から表示されるドキュメント (英文) を参照してください.

New TX / New PX フォントパッケージ

技術系の報告書では,本文の英文書体を Times New (Times),サンセリフ体を Helvetica と指定されることがあります. このような場合には,本文のセリフ体と数式を Times 系の New TX,サンセリフ体を Helvetica 系の TeX Gyre Heros,タイプライタ体を独自デザインの TXTT で組める New TX フォントパッケージがおすすめです※5. 本文を Palatino 系の New PX にする New PX フォントパッケージとセットでインストールするのが定番でしょうか. これらを追加するには,次のように TeX Live マネージャを呼び出せばよいでしょう.

tlmgr install newtx newpx fontaxes xstring tex-gyre txfonts pxfonts newtxtt newtxsf Enter

あれこれとパッケージが加わっていますが,それぞれについて簡単に紹介します. 見出しは CTAN へリンクを付けておきます. 説明の後についている,doc や run などは tlmgr info から得られた sizes 情報です.

newtx
New TX 本体です. (doc: 1733k,run: 12953k)
newpx
New PX 本体です. (doc: 865k,run: 7145k)
fontaxes
フォントを扱うための基礎事項で触れた欧文フォントを扱う仕組みである NFSS2 を「多軸化」して拡張するパッケージです. 詳しくは texdoc などで調べましょう. (src: 49k,doc: 141k, run: 17k)
xstring
文字列を操作するためのマクロパッケージだそうです. 詳しくは texdoc などで調べましょう. (doc: 917k, run: 53k)
tex-gyre
PostScript 基本 35 書体の改良版を,PostScript Type1 形式および OpenType 形式で開発しようという TeX Gyre Project の成果物です. New TX / New PX のサンセリフ体は,TeX Gyre に含まれる Heros を使うようです. TeX Gyre については,後述します. (src: 12817k, doc: 9477k, run: 26625k)
txfonts
西暦 2000 年頃に開発が停まってしまったオリジナルの TX Fonts です. New TX では txfonts の数式記号などを使っているようです. (doc: 933k, run: 2233k)
pxfonts
西暦 2000 年頃に開発が停まってしまったオリジナルの PX Fonts です. New PX では pxfonts の数式記号などを使っているようです. (doc: 609k, run: 1221k)
newtxtt
TX Fonts 独自のタイプライタ体である TXTT の改良版です. 数字の 0 のグリフを 5 種類から選択することが可能になります. 詳しくは texdoc などで調べてみてください. (doc: 181k, run: 817k)
newtxsf
サンセリフ体で数式を記述できるパッケージです. 必須ではないかもしれませんが,TeX2img でサンセリフ体の数式生成で重宝するかもしれません. 詳しくは texdoc などで調べてみてください. (doc: 373k, run: 249k)

New TX フォントを利用するには,TeX 文書のプリアンブルで次のように指定します.

\usepackage{newtxtext,newtxmath}

New PX フォントを利用するには,TeX 文書のプリアンブルで次のように指定します.

\usepackage{newpxtext,newpxmath}

NewTX では,セリフ体と数式を Linux LibertineEB GaramondBaskervald XCharter などに変更することも可能です. Linux Libertine については,後述します.

TeX Gyre フォントパッケージ

PostScript Level1 対応プリンタでは,セリフ体の Times,サンセリフ体の Helvetica,タイプライタ体の Courier New の 3 ファミリそれぞれのローマン体,イタリック体,ボールド体,ボールドイタリック体 (3×4=12 書体) に,記号用の Symbol および Zapf Dingbats を加えた基本 14 書体 (Base 14 fonts) を内蔵することになっています. さらに PostScript Level2 対応プリンタでは,基本 14 書体に加え,セリフ体として Palatino,Bookman,New Century Schoolbook,サンセリフ体として Helvetica Narrow,Avant Garde の合計 5 ファミリそれぞれのローマン体,イタリック体,ボールド体,ボールドイタリック体 (5×4=20 書体) と,筆記体の Zapf Chancery を加えた基本 35 書体 (Base 35 fonts) を内蔵することになっています. これらの PostScript 基本書体に相当する互換フォントを,初期の TeX 文書で利用するためのパッケージ群として PSNFSS がありました※5

PostScript 基本 35 書体の改良版を,PostScript Type1 形式および OpenType 形式で開発しようという TeX Gyre Project の成果物が TeX Gyre フォントです.

TeX Gyre フォントを利用するには,TeX 文書のプリアンブルで \usepackage コマンドにより 表2 のパッケージを指定します. オプションとして scale=0.95 のようにすることで,大きさを調整することができます. 筆記体の tgchorus を除く 7 つの書体ではローマン体,イタリック体,ボールド体,ボールドイタリック体,スモールキャップス体,スモールキャップスのイタリック体が用意されています. サンセリフ体の tgheros ではさらに幅の狭い (コンデンス) ローマン体,イタリック体,ボールド体,ボールドイタリック体も用意されています. tgchorus はグリフとしては筆記体ですが,tgchorus パッケージを読み込むことでセリフ体として設定されます.

表2:TeX Gyre フォントパッケージと PostScript フォント名の対応
書体PostScript フォント名 TeX Gyre フォントパッケージ
セリフ体 Times tgtermes
Palatino tgpagella
Bookman tgbonum
New Century Schoolbook tgschola
サンセリフ体 Helvetica tgheros
Avant Garade tgadventor
タイプライタ体 Courier New tgcursor
セリフ体 (筆記体) Zapf Chancery tgchorus

表2 のパッケージでは,太字のシェイプを bx ではなく b と設定します. このため,和文の太字が (代替フォントで置き換えられ) 出力されなくなります. 対策として,\usepackage で好みのフォントパッケージを読み込んだ後に,次の命令を書いておくとよいでしょう.

\renewcommand{\bfdefault}{bx}%

表2 のパッケージは数式には対応していないので,数式中のアルファベットは Computer Modern が使われます. 数式を本文と合わせるには,Times / Palatino 系ならば New TX / New PX を使えばよいでしょう. Bookman 系や New Century Schoolbook 系ならば,後述の mathastext パッケージが使えます.

Libertine フォントパッケージ

本文のセリフ体を Linux Libertine,サンセリフ体を Biolinum※6,タイプライタ体を Libertine Mono (字形は Libertinus Mono 相当) にするフォントパッケージです. New TX と併用することで,セリフ体と数式を Linux Libertine にすることができます.

tlmgr info によれば,libertine の sizes は doc: 1221k,run: 32621k と表示されました※4. 追加するには,次のように TeX Live マネージャを呼び出せばよいでしょう.

tlmgr install libertine Enter

TeX 文書のプリアンブルでは,次のように指定すればよいでしょう.

\usepackage{libertine}%  本文(セリフ体)を Linux Libertine,サンセリフ体を Biolinum,タイプライタ体を Libertine Mono に
\usepackage[libertine]{newtxmath}

このあと,サンセリフ体とタイプライタ体を個別に指定して組合せを変える例も多いようです. その場合は 1 行目を libertineRoman として,セリフ体だけ Linux Libertine にする方が効率的かもしれません. より詳しくは texdoc などで調べてみてください.

mathastext パッケージの追加

mathastext は,任意のフォントで数式を組むことができるパッケージです. 英文で TeX 文書を作成するならば,New TX / New PX のような数式対応のフォントパッケージが望ましいかもしれません. しかし,和文でそれほど複雑な数式を組まないのであれば,mathastext を試してみる価値はありそうです. TeX2img でサンセリフ体の数式画像を生成したい場合にも役立ちます.

tlmgr info によれば,mathastext の sizes は doc: 593k,run: 97k と表示されました. 追加するには,次のように TeX Live マネージャを呼び出せばよいでしょう.

tlmgr install mathastext Enter

mathastext は,なるべく最後のパッケージとして読み込む必要があります. 例えば,Bookman 系の tgbonum と組み合わせる場合には,TeX 文書のプリアンブルの次のように指定します※7

\usepackage[T1]{fontenc}
\usepackage{tgbonum}%  セリフ体を Bookman 系に
\useapckage{tgheros,tgcursor}%  サンセリフ体を Helvetica 系,タイプライタ体を Courier New 系に
\usepackage[italic]{mathastext}%  セリフ体のイタリック書体を数式用に

tgbonumtgshola に変えれば New Century Schoolbook 系となります※7. より詳しくは texdoc などで調べてみてください.

【参考】getnonfreefonts の利用

TeX に関する膨大なリソースを集めた CTAN (Comprehensive TeX Archive Network) には,数多くのフォントパッケージが登録されており,その多くは TeX Live に含まれています. しかし,利用上の制約は無いにも関わらず,配布条件が満たされないために TeX Live に収録されないというフォントがいくつか存在します. getnonfreefonts は,そのようなフォントを簡単に追加するための Perl スクリプトです. ここでは,getnonfreefonts を利用できるようにする方法を紹介しますが,手間がかかる割に,入手できるフォントは古いものが多いため「参考」扱いとします. まず,字形 (グリフ) が近いフォントが TeX Live に収録されていないか探してみる方が効率がよいでしょう.

  1. Web ブラウザで https://www.tug.org/fonts/getnonfreefonts/ を開きます.
  2. インストーラ install-getnonfreefonts を,ローカルハードディスクの適切なフォルダ (C:\temp など) にダウンロードします.
  3. TeX Live Menu のコマンドプロンプトを開きます (TeX Live ポータブルの動作確認 参照). そして,次のコマンドを実行します (ダウンロード先が異なる場合は適宜置き換えてください).
    texlua C:\temp\install-getnonfreefonts Enter
  4. テキストエディタで U:\texlive\2021\texmf-dist\script\getnonfreefonts\getnonfreefonts.pl を開き,496 行目あたりの system ("$WGET", "$getfont_url") == 0 を次のように書き換え,上書き保存します※8
    system ("$WGET", "$getfont_url", "--no-check-certificate") == 0
  5. プロキシサーバ経由のインターネット接続環境を利用しているならば,環境変数を設定します (TeX Live のネットワークインストール 参照).
  6. TeX Live Menu のコマンドプロンプトから次のコマンドを実行します.
    getnonfreefonts --sys --lsfonts Enter
    インストール可能なフォントの一覧が表示されれば正常です※8
  7. フォント一覧の一番左の文字列 (パッケージ名) を指定してフォントをインストールします. 例えば classico をインストールするには,次のコマンドを実行します※6
    getnonfreefonts --sys classico Enter

より詳しくは,Web サイトや texdoc で調べてみてください.