LuaLaTeX with Noto CJK fonts

目的:pdfを使うことで、それなりのプレゼンテーションを作成環境・実行環境に依存せず、簡便に準備したい。そのため、latexの中から使えるフォントをできるだけ用意しておきたい。どうしようか。

英語だと、ボールド、斜体(≒イタリック)、ボールドイタリックなどのスタイルが揃っているフォントファミリーが色々選べて不自由はないのだけど、日本語だとなかなか揃っていません。調子に乗ってフォントを切換えても日本語には変化がなくて残念な仕上がりになってしまいます。以前はIPAex Gothicをメインのフォントにして、fontforgeで斜体フォントを作ったりしていました。

この方法で特に問題はなかったのですが、最近Notoフォントが充実してきたのでそちらに切り替えようと思いました。しかしNotoフォントに斜体がない。色々と思い出しながらFontForgeで斜体を作ろうとしたのだけど、データが大きすぎるとかでエラーになってしまいます。

だったら、こちらが斜体フォントファイルを用意するのではなくて、立体を基にlatex内部で傾けてくれないだろうか。これくらいのことはできてもおかしくなさそうなので、色々と調べるとAutoFakeSlantというのを使えばいいということがわかりました。なんだそれは。そこで、これを使って、

  • イタリックと斜体(スラント)、ボールドイタリック、ボールドスラントの全部に対応、
  • 英語も日本語も対応

させるためにしばらく試行錯誤した結果、満足いく設定が見つかりました(lualatex用です):

\setmainfont{Noto Sans}
\setmonofont{Noto mono}
\setmainjfont[
AutoFakeSlant=0.2,
SlantedFeatures={FakeSlant=0.2},
BoldItalicFeatures={FakeSlant=0.2},
BoldSlantedFeatures={FakeSlant=0.2}]
{Noto Sans CJK JP}

そして手書きフォントの追加。こちらはNotoでは対応できないので、みかちゃんフォントを使います。

% additional fonts
\newfontfamily\mikaFontEn{mikachan}
\newjfontfamily\mikaFontJp{mikachan}
\newcommand{\textbyhand}[1]{{\mikaFontEn\mikaFontJp #1}}

以上の設定でこうなります(source)。

normal...  
\textbf{bold...}
\textit{italic...}
\textsl{slant...}
\textbf{\textit{bold italic...}}
\textbf{\textsl{bold slant...}}
\texttt{typewriter...}
\textbyhand{hand...}

みかちゃんはいくつかの斜体文字を持ってないようですが、まあオマケなので目をつぶれば、これでサンセリフに関しては完璧になりました。(ますますlualatexの実行時間が伸びたようですが。。。それとリガチャ、は無理な注文かあ。)

一方、プレゼンテーションではなく普段の文章書きだとセリフ/明朝がやはり必要になりますが、そちらはIPAex明朝と組み合わせるしかなさそうです。ここは残念。。。

まあ、これでまっさらなlatex環境を使う羽目になっても、単にNotoフォントとみかちゃんフォントをインストールするだけで済むようになりました。

追記: IPAex版の設定

\setmainfont[BoldFont={DejaVu Sans}]{DejaVu Serif}
\setmonofont{DejaVu Sans Mono}
\setmainjfont[
BoldFont={IPAexGothic},
BoldItalicFont={IPAexGothic},
BoldSlantedFont={IPAexGothic},
AutoFakeSlant=0.2,
SlantedFeatures={FakeSlant=0.2},
BoldItalicFeatures={FakeSlant=0.2},
BoldSlantedFeatures={FakeSlant=0.2}]
{IPAexMincho}

Originally published at my blog server on October 31, 2016.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.