microtype は、両端揃え(justification)の段落を 目に見えて美しくする パッケージです。作者は R. Schlicht。やることは派手ではなく、句読点を少しだけマージンの外へ突き出したり、字幅をコンマ数パーセント伸び縮みさせたり——どれも一目では分からない微調整ですが、ページ全体では行末がそろい、語間が均一になり、白い「川」やはみ出しが減ります。導入はたいてい \usepackage{microtype} の一行で十分。このページでは、突き出し・伸縮・トラッキング・その他の機能と、エンジンごとに使える機能が違う という肝心な点を順に見ていきます。
microtype とは何か
TeX の組版はもともと優秀ですが、microtype は、そこにさらに マイクロタイポグラフィー(micro-typography)——文字一つ、字間一つの水準で効く微細な仕上げ——を加えます。これらの機能は元々 pdfTeX に導入され、のちに LuaTeX と XeTeX にも一部が広がりました。microtype はそれらへの統一的な LaTeX インターフェースで、欧文(ラテン文字)の見栄えを底上げします。
提供する主な機能は次の通りです。最初の二つ——突き出し と フォントの伸縮——が中心で、安全に動くと判断できれば 既定で有効 になります。残りは必要に応じてオプションで有効化します。
- 文字の突き出し(protrusion / margin kerning):句読点や一部の字をマージンの外へわずかに押し出し、行端を視覚的に揃える。
- フォントの伸縮(font expansion):各行の字幅をごく僅かに伸縮させ、語間の伸び縮みを減らして段落の「色」を均一にする。
- **トラッキング/レタースペーシング(tracking /
\textls)**:語や範囲の字間を均等に空ける。大文字・スモールキャップス向き。 - **合字の無効化(
\DisableLigatures)**:フォント単位で合字を切る。タイプライタ体などに有用。 - 語間スペースと追加カーニングの微調整:
spacing/kerningオプション(pdfTeX 専用)。
なお、これらは 欧文(ラテン文字) に対する仕上げです。和文には突き出しや伸縮とは別の組版モデル(行頭・行末禁則や和欧間スペースなど)があり、luatexja などが受け持ちます。リガチャやカーニングといった、より基本的な欧文の自動処理については、姉妹ページ「欧文の書き方」にまとめてあります。
文字の突き出し(protrusion)
突き出し(protrusion, margin kerning) は、行末・行頭の文字をほんのわずかにマージンの外へはみ出させる機能です。理由は人間の目の錯覚にあります。ピリオドやカンマ、ハイフン、あるいは o・A・v のように 丸い・傾いた輪郭 を持つ字を行端にぴったり揃えると、その字の左右の空きのぶん、行端が内側に へこんで見えて しまいます。そこでこうした字を少しだけ外へ出すと、行の端が 視覚的に まっすぐ揃って見えます。
行末の句読点を全角ぶん外へ出す極端な設定は ハンギングパンクチュエーション(hanging punctuation, ぶら下げ約物) と呼ばれ、microtype の突き出しはこれを各文字ごとに最適な量で、控えめに行うものと考えると分かりやすいでしょう。効果は約物や、面積の小さい字・輪郭が平らでない字でとくに見て取れます。突き出しは三つの主要エンジン——pdfTeX・LuaTeX・XeTeX のいずれでも 使えます。
突き出しは流し込みの段落で自然に効きますが、itemize や tabular のように TeX が「マージン」と認識しない場所では効きません。そうした箇所で先頭・末尾の字を突き出させたいときは、microtype が \leftprotrusion / \rightprotrusion を用意しています(この精密な制御には e-TeX 拡張が必要です)。
フォントの伸縮(font expansion)
フォントの伸縮(font expansion) は、各行の字形を 横方向にごく僅か(ふつうコンマ数パーセント〜数パーセント)だけ引き伸ばし、あるいは詰めて、行幅を合わせる機能です。両端揃えでは通常、行幅をそろえるために 語間(interword glue) を伸び縮みさせますが、字幅そのものをわずかに調整して肩代わりさせれば、語間の伸縮が小さく て済みます。結果として、行ごとの語間のばらつきが減り、段落全体の濃淡(タイポグラフィでいう「色」)がより均一になります。
実用上の効果として、オーバーフル/アンダーフルのボックス(はみ出し・間延びの警告)が減る ことが挙げられます。組版が一段なめらかになるわけです。伸縮量は stretch / shrink オプションで上限を、step で刻みを調整できますが、既定値のままでまず問題ありません。
重要なのは、伸縮が使えるのは pdfTeX と LuaTeX のみ で、XeTeX では使えない ことです。XeTeX で microtype を読み込むと、突き出しとトラッキングは効きますが、伸縮は自動的に無効になります(パッケージが安全に動く機能だけを有効にするため、エラーにはなりません)。XeTeX で伸縮も含めた仕上げが欲しい場合は、LuaTeX へ移行するのが筋です。
トラッキングとレタースペーシング
トラッキング(tracking)/レタースペーシング(letterspacing, 字間空け) は、文字の間隔を均等に広げる調整です。microtype のトラッキングは、字と字のあいだに空きを足すのではなく フォント本来の字幅を伸ばす 形で実現するため、ハイフネーションを壊しません。語の途中に手で \kern を撒く古典的なやり方の弱点(その語が割れなくなる)を避けられます。
その場かぎりの字間空けには \textls{...} を使います。tracking オプションの有無に関わらず使え、数式モードでも働きます。空ける量は 1000 分率(既定はおよそ 100/1000)で、\textls[200]{...} のように省略可能引数で指定できます。連続する字すべてに適用するには \lsstyle を使うと、グループの終わりまで字間空けが続きます。見出しなど、前後に余分なカーニングを足したくない場合は星付きの \textls*{...} が便利です。
フォント集合に対してまとめて設定するには、プリアンブルで \SetTracking{encoding=*, shape=sc}{40} のように書きます(この例はスモールキャップスを 40/1000 だけ空ける指定)。注意したいのは、小文字の字間空けは伝統的に「美しくない」とされる こと。microtype のマニュアルも、原則として 大文字かスモールキャップスだけ を字間空けすべきだと述べています。トラッキングは pdfTeX・LuaTeX・XeTeX で使えます。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}
% space out small caps by 40/1000 wherever they appear
\SetTracking{encoding = *, shape = sc}{40}
\begin{document}
\textsc{Small Caps}, and ad-hoc \textls[200]{LETTERSPACED} capitals.
\end{document}その他の機能と設定
microtype にはこのほか、合字や追加カーニング、語間スペースを制御する機能があります。合字の無効化 には \DisableLigatures を使います。たとえば \DisableLigatures{encoding = T1, family = tt*} とすると、T1 エンコーディングのタイプライタ体の合字を切れます。これは、コードを示すときに -- を en ダッシュに合成させたくない場合などに有用です。ただし、フォントの全合字を無効化すると、そのフォントのカーニングも同時に切れる 点に注意してください。省略可能引数 [?,!] のように合字を始める文字を並べれば、選んだ合字だけを無効化できます。この命令は プリアンブルで一度だけ 使えます。
kerning と spacing のオプションは、それぞれ 追加のカーニング と 語間スペースの微調整 を有効にしますが、これらは pdfTeX 専用 です(LuaTeX・XeTeX では効きません)。いずれも既定では無効で、必要なときだけ \usepackage[kerning=true,spacing=true]{microtype} のように明示します。
読み込み後に設定を変えたいときは \microtypesetup{...} を使います。たとえば目次の生成中だけ突き出しを切るには、前後を \microtypesetup{protrusion=false} と \microtypesetup{protrusion=true} で挟みます。文書の一部だけ別設定にしたいときは \microtypecontext{...}(または microtypecontext 環境)で文脈を切り替えられます。draft オプションを渡せば、微細組版を一括で無効化して挙動を比較できます。
エンジンごとの対応
どの機能が使えるかは TeX エンジンによって異なります。microtype は読み込んだエンジンで安全に動く機能だけを自動で有効にするので、無引数で読み込んでもエラーにはなりませんが、何が効いて何が効かないかは把握しておくと役立ちます。要点は、伸縮は XeTeX で不可、語間スペースと追加カーニングは pdfTeX 専用 の二つです。
| 機能 | pdfTeX | LuaTeX | XeTeX | |
|---|---|---|---|---|
protrusion | 突き出し | ○ | ○ | ○ |
expansion | フォントの伸縮 | ○ | ○ | × |
tracking | トラッキング(字間空け) | ○ | ○ | ○ |
ligatures | 合字の無効化 | ○ | ○ | × |
kerning | 追加カーニング | ○ | × | × |
spacing | 語間スペースの調整 | ○ | × | × |
まとめると、最も多機能なのは pdfTeX(突き出し+伸縮+トラッキング+カーニング+スペーシング)、次いで LuaTeX(突き出し+伸縮+トラッキング、ただしカーニング/スペーシングは不可)、XeTeX は突き出しとトラッキングのみ(伸縮は不可)です。
使い方と実例
基本は **\usepackage{microtype} の一行だけ** です。これで突き出しと伸縮(エンジンが対応していれば)が既定で有効になり、ほとんどの文書はこれで十分に良くなります。microtype は安定していて副作用がほぼなく、追加して困ることはまずありません。欧文を本格的に組むなら事実上の定番——ほぼ必須の品質向上——と考えてよいでしょう。fontenc(pdfTeX 系なら [T1])と組み合わせるのが一般的です。
次は、もう少し踏み込んだプリアンブルの例です。突き出しと伸縮を明示的に有効化し(activate)、スモールキャップスの字間を \SetTracking で軽く空け、コード表示用のタイプライタ体だけ合字を切っています。コメントの意味をたどれば、各オプションの役割が分かります。
\documentclass{article}
\usepackage[T1]{fontenc}
% protrusion + expansion explicitly on; "final" forces them in draft mode too
\usepackage[activate={true,nocompatibility},final]{microtype}
% letterspace small caps a little (40/1000)
\SetTracking{encoding = *, shape = sc}{40}
% in code, keep "--" as two hyphens (also turns off kerning for this font)
\DisableLigatures{encoding = T1, family = tt*}
\begin{document}
Justified paragraphs look more even, \textsc{small caps} are gently
letterspaced, and \texttt{a--b} stays as two hyphens in code.
\end{document}微調整は控えめで、一目では分からないかもしれません。けれどページをめくると、行末がそろい、語間が落ち着き、ハイフネーションやはみ出しが減っているのに気づくはずです。仕上げの一行として、microtype は覚えておく価値があります。