「漢」の一字を原ノ味明朝・ヒラギノ明朝 ProN・IPAex 明朝でそれぞれ組んで幅を測ると、三つとも ちょうど 10.0pt——10pt の全角、つまり 1 em ぴったりでした。和文フォントを取り替えても行が動かないのはこのためで、欧文で書体を替えると行長が変わるのとは事情がまるで違います。だからこそ LaTeX の和文フォント選びで本当に問われるのは見た目ではなく、その書体が相手の環境に本当にあるか、そして PDF にちゃんと埋め込まれるか です。このページは TeX Live 2024 が確実に持っている和文フォントを実測で確かめ、LuaLaTeX・XeLaTeX・(u)pLaTeX それぞれの指定方法と、pdffonts による埋め込みの確認までを扱います。
TeX Live に必ず入っている和文フォントはどれか
同梱されているのは原ノ味(Harano Aji)と IPA / IPAex の三系統だけで、Noto CJK と Source Han は入っていません。 これは推測ではなく、kanji-config-updmap-sys status が返す一覧そのものです。TeX Live 2024 でこのコマンドを叩くと、現在の設定が haranoaji であることと、待機している候補が haranoaji・ipa・ipaex の三つであることが表示されます。ヒラギノやモリサワのような商用フォントは、システムに入っていれば使えますが、TeX Live が配っているわけではありません。
$ kanji-config-updmap-sys status
CURRENT family for ja: haranoaji (variant: -04)
Standby family : haranoaji
Standby family : ipa
Standby family : ipaex
# asking for a font that is not installed fails loudly
$ lualatex noto.tex
luaotfload | db : Reload initiated; reason: Font "NotoSerifCJKJPRegular" not found.
! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found.この境目は実際に文書を壊します。\usepackage[noto]{luatexja-preset} と書いた最小文書を LuaLaTeX に通すと、! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found. で止まりました——プリセット名が定義されていても、実フォントが無ければそこまでです。したがって 共著者や投稿先に渡す原稿では、haranoaji(または ipaex)を指定するのが唯一安全な選択 になります。Noto CJK や Source Han を使いたい場合は、フォント自体を別途インストールしたうえで、その前提を相手にも伝える必要があります。
| フォント | 出自 | TeX Live 2024 に同梱されるか |
|---|---|---|
Harano Aji | 細田真道が Source Han の CID を Adobe-Japan1 に振り直したフリーフォント | はい。既定。明朝・ゴシック各 7 ウェイト(haranoaji と haranoaji-extra に分割) |
IPAex | 情報処理推進機構(IPA)が配布するフリーフォント | はい。ipaexm.ttf(明朝)と ipaexg.ttf(ゴシック)。TeX Live 2020 より前の既定 |
Noto CJK / Source Han | Google と Adobe が公開するオープンソースの汎 CJK フォント | いいえ。フォントマップだけが入っており、実体は別途インストールが必要 |
Hiragino | 大日本スクリーン系の商用書体。macOS に同梱 | いいえ。macOS 上でのみ使え、hiragino-pron などのプリセットで呼ぶ |
Morisawa | モリサワの商用書体。商業印刷の標準 | いいえ。ライセンス購入が必要。morisawa-pr6n などのプリセットが用意されている |
明朝体とゴシック体 — \textmc と \textgt で切り替える
和文組版は二書体で動きます。明朝体 は横画が細く縦画が太く、画の終わりに「ウロコ」と呼ばれる三角の飾りが付く書体で、欧文のセリフ体にあたり、長文の 本文 に使います。ゴシック体 は線の太さがほぼ一定で飾りがなく、欧文のサンセリフ体にあたって、見出し・強調・キャプション・図表中の文字 に向きます。切り替えは欧文の書体命令と同じ作法で、宣言形の \mcfamily / \gtfamily と、引数だけに効くコマンド形の \textmc{...} / \textgt{...}。mc は mincho、gt は gothic の略です。
本文は明朝体で組みます。\textgt{ここだけゴシック体}で強調できます。
{\gtfamily この波括弧の中はすべてゴシック体になります。}
見出しなどは \textbf{太字} にすると、和文では自動的にゴシック体になります。ここで欧文と決定的に違うのが 太字の扱い です。和文の明朝体は既定で太いウェイトを持たないため、\bfseries や \textbf{} は 事実上ゴシック体への切り替え に割り当てられます(LuaTeX-ja の既定でも、明朝・ゴシック双方の太シリーズがゴシックの中字を指します)。また和文には イタリック体や斜体の概念が基本的になく、欧文のような斜めの字形は用意されません。\textmc / \textgt が動かすのは書体(family)だけで、太さ(series)や字形(shape)とは独立しています。クラスやパッケージによっては、\rmfamily / \sffamily に連動して明朝/ゴシックも切り替わるよう設定できます(LuaTeX-ja では luatexja-fontspec の match オプション)。
この二書体以外に、毛筆書体もあります。楷書体(かいしょたい) は一画ずつ筆を離して整然と書く書体、行書体(ぎょうしょたい) はやや崩して画を続ける書体で、賞状・式辞・案内状など和の趣を出したい箇所に使います。角を丸めた 丸ゴシック体 もあり、\mgfamily / \textmg{...} で呼びます。ただし丸ゴシックの実体を持つフォントは限られていて、原ノ味には丸ゴシックがありません——後述の deluxe オプションを付けても、埋め込まれるのは明朝とゴシックだけです。日常の論文・書籍組版で中心になるのは、あくまで明朝体とゴシック体の二書体です。
原ノ味フォント — Source Han を Adobe-Japan1 に組み替えたもの
原ノ味フォントは、Source Han(源ノ明朝・源ノ角ゴシック)のグリフに Adobe-Japan1 の CID を振り直したもの です。同梱の README がその一文を明記しています——Adobe-Identity-0(AI0)の CID を Adobe-Japan1(AJ1)の CID に置き換えて得られたフォントである、と。ここが肝心なところで、これは「見た目を似せた別のフォント」ではなく 番号の付け替え です。(u)pLaTeX と dvipdfmx の世界は文字を CID 番号で呼ぶので、Adobe-Japan1 で番号が振られていないと従来のワークフローに乗りません。Noto CJK をそのまま既定にできなかった理由が、まさにここにあります。
作者は細田真道さん。README によれば全体で 14 書体——明朝・ゴシックそれぞれ 7 ウェイト で、TeX Live では二つのパッケージに分かれています。haranoaji にはプリセットで使われる主要 7 書体(明朝の Light・Regular・Bold、ゴシックの Regular・Medium・Bold・Heavy)が、haranoaji-extra に残りの 7 書体(明朝の ExtraLight・Medium・SemiBold・Heavy、ゴシックの ExtraLight・Light・Normal)が入ります。手元で ls すると、この分割がそのままファイルとして並んでいるのが見えます。
$ ls texmf-dist/fonts/opentype/public/haranoaji/
HaranoAjiGothic-Bold.otf HaranoAjiGothic-Heavy.otf
HaranoAjiGothic-Medium.otf HaranoAjiGothic-Regular.otf
HaranoAjiMincho-Bold.otf HaranoAjiMincho-Light.otf
HaranoAjiMincho-Regular.otf
$ ls texmf-dist/fonts/opentype/public/haranoaji-extra/
HaranoAjiGothic-ExtraLight.otf HaranoAjiGothic-Light.otf
HaranoAjiGothic-Normal.otf HaranoAjiMincho-ExtraLight.otf
HaranoAjiMincho-Heavy.otf HaranoAjiMincho-Medium.otf
HaranoAjiMincho-SemiBold.otf本文の明朝には HaranoAjiMincho-Regular、ゴシックには HaranoAjiGothic-Medium が既定で割り当てられます。原ノ味を選ぶ実務上の理由は品質だけではありません。同じ文章を IPAex で組んだときと PDF の大きさが桁違いになる のです。7 文字だけの文書で比べると、原ノ味の PDF が 5,617 バイト、IPAex の PDF が 155,880 バイトでした。pdffonts はそれぞれを CID Type 0C(原ノ味、OpenType/CFF)と CID TrueType(IPAex、TrueType)と報告します。元のフォントファイルは 6.4 MB と 7.8 MB でほぼ同じ大きさですから、差は書体の中身ではなく 形式とサブセット化の効率 から来ています。
LuaLaTeX と XeLaTeX での指定 — luatexja-preset と zxjafont
Unicode エンジンでは、LuaLaTeX なら LuaTeX-ja(luatexja)の luatexja-preset、XeLaTeX なら zxjafont にプリセット名を渡すのが最短です。どちらも「明朝=これ、ゴシック=これ」の組み合わせを一語で設定してくれます。プリセット名はほぼ共通で、haranoaji・ipa/ipaex・hiragino-pro/hiragino-pron・noto/noto-otc・sourcehan・ms・yu-win10・morisawa-pr6n・kozuka-pr6n などが定義されています。実測では、\usepackage[haranoaji]{zxjafont} を付けた文書が XeLaTeX で問題なく通り、HaranoAjiMincho-Regular のサブセットが埋め込まれました。
% LuaLaTeX
\documentclass{ltjsarticle}
\usepackage[haranoaji]{luatexja-preset}
% add deluxe for multiple weights of Mincho and Gothic:
% \usepackage[haranoaji,deluxe]{luatexja-preset}
% XeLaTeX
% \documentclass[a4paper]{bxjsarticle}
% \usepackage[haranoaji]{zxjafont}
\begin{document}
本文は明朝体。\textgt{見出しはゴシック体}。
\end{document}deluxe オプションを足すと、明朝とゴシックの複数ウェイトを本文中で使い分けられるようになります。実測では \usepackage[haranoaji,deluxe]{luatexja-preset} の PDF に HaranoAjiMincho-Regular・HaranoAjiMincho-Bold・HaranoAjiGothic-Regular・HaranoAjiGothic-Medium の四つが埋め込まれました。なお ltjsarticle などの ltjs* クラスは和文を欧文に対して縮小して組みます——コンパイル時に Package luatexja-preset Warning: Japanese fonts will be scaled by 0.924715. という通知が出るのがそれで、警告ではなく設計どおりの動作です。
プリセットに頼らず任意のフォントを名指ししたいときは、LuaLaTeX で luatexja-fontspec を読み込みます。使える命令は fontspec と対になっていて、和文用は \setmainjfont(明朝=本文)・\setsansjfont(ゴシック)・\setmonojfont(等幅)・\newjfontfamily、単発なら \jfontspec。Scale= や Path= といったオプションの書きかたも fontspec と共通なので、欧文側の知識がそのまま使えます。書体名でもファイル名でも指定できるので、共同執筆では ファイル名(HaranoAjiMincho-Regular.otf)で書くほうが確実 です。
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
% naming files, not family names, keeps it reproducible
\setmainjfont{HaranoAjiMincho-Regular.otf}
\setsansjfont{HaranoAjiGothic-Medium.otf}
% \setmainjfont{Hiragino Mincho ProN} % macOS only
\begin{document}
明朝の本文。\textsf{ゴシックの見出し}。\textbf{太字}。
\end{document}(u)pLaTeX + dvipdfmx での指定 — kanji-config-updmap と otf パッケージ
伝統的な (u)pLaTeX では、どのフォントを埋め込むかを決めるのは文書ではなくシステム側の設定 です。組版に使う和文フォントのメトリック(字幅)は仮想的に固定されていて、ソースには実フォント名が現れません。その設定を切り替えるのが TeX Live 付属の kanji-config-updmap で、dvipdfmx が参照するフォントマップ(updmap.cfg)を書き換え、明朝とゴシックの実フォントを一括で差し替えます。全ユーザー向けは kanji-config-updmap-sys(管理者権限が要る)、自分だけなら kanji-config-updmap-user(ユーザー設定が優先)です。
# show the current setting and the candidates found on this system
kanji-config-updmap-sys status
# switch to Harano Aji (the TeX Live default)
sudo kanji-config-updmap-sys haranoaji
# other examples
sudo kanji-config-updmap-sys ipaex
sudo kanji-config-updmap-sys hiragino-pron
# use the JIS X 0213:2004 glyph shapes
sudo kanji-config-updmap-sys --jis2004 haranoaji
# embed nothing, or auto-detect what is installed
sudo kanji-config-updmap-sys nofont
sudo kanji-config-updmap-sys autostatus は現在の設定と、システムで見つかった候補フォントを一覧します。auto は使える商用・フリーフォントを自動で探して埋め込み設定にし、見つからなければ埋め込みなしに戻します。--jis2004 は JIS X 0213:2004 の字形(いわゆる「2004 JIS」)を選びます。なお status の出力にあった variant: -04 がこの字形選択の別名です。文書ごとにフォントを変えたい場合は、システム設定を触るかわりに pxchfon パッケージでプリアンブルから指定する道もあります。
本文中で多書体・多ウェイトを使い、Adobe-Japan1 の広い文字集合に手を伸ばすには、齋藤修三郎さんの otf パッケージ(japanese-otf) を読み込みます(upLaTeX では \usepackage[uplatex]{otf} とエンジンを明示)。Adobe-Japan1 は日本語フォントの標準的なグリフ集合で、JIS X 0208 に収まらない異体字・記号・旧字を含みます。字を直接指定する命令が二つあり、\UTF{...} は Unicode のコードポイント(4〜5 桁の 16 進数)、\CID{...} は Adobe-Japan1 の CID 番号(10 進数)で呼び出します。人名の旧字のように入力しにくい字を、コード値で確実に出せるのが利点です。同じ機能は LuaTeX-ja でも luatexja-otf として使えます。
森\UTF{9DD7}外
\CID{7652}飾区
葛城市、\CID{1481}城駅otf のオプションも押さえておきましょう。deluxe は明朝 3 ウェイト+ゴシック 3 ウェイト+丸ゴシック 1 ウェイトの計 7 書体を使えるようにし、丸ゴシック用に \mgfamily / \textmg{...} を加えます。expert は縦組み用の約物や異体字といった追加グリフを有効にし、jis2004 は 2004 JIS の字形を選びます。多ウェイトを実際に使うには、対応する実フォントが kanji-config-updmap 側で設定されている必要があります。なお和文フォントのエンコーディングは横組みが JY3、縦組みが JT3 です。
フォントが PDF に埋め込まれたか pdffonts で確認する
pdffonts に PDF を渡すと、埋め込まれたフォントが一行ずつ表示されます。見るべき列は三つで、emb が yes なら埋め込み済み、sub が yes ならサブセット化(使った字だけを抜き出した)済み、uni は Unicode への逆引き情報の有無です。さらに、フォント名の頭に付く NWYKMN+ のような英大文字 6 文字のプレフィックス がサブセットの印です。TeX Live 2024 でのどの経路でも、この 6 文字は必ず現れました。
実測でもう一つ確かめておきたいのは、経路が違っても結果が同じになる ことです。同じ jlreq のソースを、uplatex → dvipdfmx で処理した場合と lualatex で直接処理した場合の両方で pdffonts を見ると、どちらも HaranoAjiMincho-Regular のサブセットが埋め込まれていました。サブセット化の効き目は劇的で、元の HaranoAjiMincho-Regular.otf は 6.4 MB ありますが、七文字の文書の PDF は 5,617 バイトしかありません。配布用 PDF が数 MB に膨らむことを心配する必要はまずない、ということです。
# same jlreq source, two routes, same embedded font
$ uplatex doc.tex && dvipdfmx doc.dvi && pdffonts doc.pdf
UCCFIG+HaranoAjiMincho-Regular-Identity-H CID Type 0C yes yes
KXFDXT+LMRoman9-Regular Type 1C yes yes
$ lualatex doc.tex && pdffonts doc.pdf
NWYKMN+HaranoAjiMincho-Regular CID Type 0C yes yes
PNHTXY+LMRoman9-Regular CID Type 0C yes yes最後に、この確認を 必ず自分でやってください。日本語の PDF で相手先が「文字が出ない」「文字化けする」と言ってくる事故のほとんどは、埋め込みが行われていない PDF が原因です。kanji-config-updmap-sys nofont の設定が残っていたり、\usepackage[noembed] に相当する指定が入っていたりすると、pdffonts の emb 列が no になります。提出前に一度 pdffonts を通すだけで、この種の事故はまるごと避けられます。