TeX Alchemist Online

TeX のこと,フォントのこと,Mac のこと

Overleaf + XeLaTeX + Noto CJK JP フォントによる和文多書体の実現

この記事は旧記事をより楽な手順へと更新した改訂版となります。

f:id:doraTeX:20191115231627p:plain

卒論シーズンになり,LaTeX と格闘しておられる方も多いのではないでしょうか。昨今は LaTeX をローカル環境に構築しなくても,オンラインのクラウド環境で LaTeX 環境が使えるようになっています。また,クラウド環境ならではのメリットとして,共同執筆者とのコラボレーション(複数人同時編集,レビューコメント付与,GitHub連携など)が容易という点も見逃せません。今年は,オンライン LaTeX 環境の代表格である Overleaf に関して,日本語による初めての解説書が出版されました(ステマ)

インストールいらずのLATEX入門  ―Overleafで手軽に文書作成

インストールいらずのLATEX入門 ―Overleafで手軽に文書作成

  • 作者:坂東 慶太
  • 出版社/メーカー: 東京図書
  • 発売日: 2019/05/13
  • メディア: 単行本

現在,Overleaf 上では TeX Live 2018 が動いています。TeX Live 2018 には,標準で IPA(ex) フォントが搭載されていますので,和文文書作成のための準備は整っています。pLaTeX / upLaTeX を使用するには若干準備が必要ですが,XeLaTeX / LuaLaTeX ならば比較的容易に Overleaf 上で和文文書執筆を開始できます。詳細な手順は以下の記事にまとめてあります。

doratex.hatenablog.jp

ただし,実際に使ってゆくにつれて,デフォルトの IPAex フォントの品質に満足できず,より高品質なフォントを,より多書体で使いたいという願望も湧いてくるでしょう。昨今,Adobe による源ノ明朝 (Source Han Serif) / 源ノ角ゴシック (Source Han Sans) フォント( ≒ Google による Noto CJK フォント)公開のおかげで,オープンソース和文フォントをめぐる環境は急速に良くなっています。Ubuntu 18.04 においても標準で Noto CJK フォントが搭載されました。Overleaf のバックエンドが最近 Ubuntu 18.04 に更新された ことで,Overleaf でも Noto CJK フォントが使えるようになりました。その他,Overleaf で使用できる和文フォントの一覧は次の記事にあります。

www.overleaf.com

XeLaTeX で Noto CJK JP フォントを使うためのプロジェクト設定

まず,Menu の文書設定において,Compiler の設定をデフォルトの pdfLaTeX から XeLaTeX に変更しておきます。

f:id:doraTeX:20191108124312p:plain:w200

文書のプリアンブル設定

そして,プリアンブルを次のようにしておけば,次の4書体を使用できます。

  • ノーマル明朝体  :Noto Serif CJK Regular
  • ボールド明朝体  :Noto Serif CJK Bold
  • ノーマルゴシック体:Noto Sans CJK Regular
  • ボールドゴシック体:Noto Sans CJK Bold
\documentclass[xelatex,ja=standard,jafont=noto]{bxjsarticle}

使い方

  • \mcfamily\mdseries\textmc{\textmd{...}}:Noto Serif CJK Regular
  • \mcfamily\bfseries\textmc{\textbf{...}}:Noto Serif CJK Bold
  • \sffamily\mdseries\textsf{\textmd{...}}:Noto Sans CJK Regular
  • \sffamily\bfseries\textsf{\textbf{...}}:Noto Sans CJK Bold

となります。また,\ttfamily / \texttt による等幅フォントも,Noto Sans CJK が用いられるようになります。ゴシック体の出力は \gtfamily / \textgt でもよいですが,\sffamily / \textsf だと欧文文字も連動してサンセリフ体になるので調和します。

ウェイトの変更

使用する Noto CJK フォントのウェイトを変更するには次のようにします。ここでは,例えばフォントのウェイト差をより目立たせるべく,

  • ノーマル明朝体  :Noto Serif CJK Light
  • ボールド明朝体  :Noto Serif CJK Black
  • ノーマルゴシック体:Noto Sans CJK Light
  • ボールドゴシック体:Noto Sans CJK Black

に変更しようとしたとします。その場合,プリアンブルを次のようにします。

\documentclass[xelatex,ja=standard]{bxjsarticle}
\setCJKmainfont[BoldFont=NotoSerifCJKjp-Black]{NotoSerifCJKjp-Light}
\setCJKsansfont[BoldFont=NotoSansCJKjp-Black]{NotoSansCJKjp-Light}
\setCJKmonofont[BoldFont=NotoSansCJKjp-Black]{NotoSansCJKjp-Light}

注意点

Overleaf でのBMP外文字

Overleaf のオンラインエディタの制約により,「𠮷」のようなBMP外文字を入力できません(入力すると文字化けします)。XeTeX の \Uchar プリミティブを使って Unicode のコードポイントで指定することで回避しましょう。

\Uchar"20BB7 野家 % 「𠮷野家」の代わり

XeTeX 上でデフォルトで欧文文字扱いされる文字

bxjsarticle から呼ばれる xeCJK パッケージのデフォルト設定では, のように,「upTeX や LuaTeX-ja のデフォルトでは和文扱いされる文字が XeTeX では欧文扱いされる」文字が色々あります。そのような文字をソース中に入力すると,XeTeX エンジンはそれを欧文フォントで出力しようとし,しかし欧文フォントにそのグリフがないため文字が欠ける,という動きをしてしまいます。それを防ぐには,次のようにして個別に和文文字扱いの登録をしておきましょう。すると期待通り和文フォントのグリフが出力されます。

\xeCJKDeclareCharClass{CJK}{`①,`⑵,`Ⅲ,`☃} 

zxjatype パッケージの v.0.7 以降が入っている環境であれば,このように個別に文字を登録しなくても,一括で文字種設定をする方法が用意されています。ドキュメントクラスオプションに

\documentclass[xelatex,ja=standard,jafont=noto,prefercjk]{bxjsarticle}

のように prefercjk オプションを付けておけばOKです。zxjatype パッケージに prefercjk が渡され,期待通りの挙動をしてくれるようになります。

サンプル文書

以上の設定を済ませ,Overleaf + XeLaTeX + Noto CJK JP フォント によって和文多書体を実現した文書の実例が以下になります。

www.overleaf.com

Overleaf + upLaTeX + dvipdfmx で和文多書体するには

Overleaf 上の upLaTeX エンジンで和文多書体を実現する続編記事はこちら。

doratex.hatenablog.jp