RMarkdown + XeLaTeX + Noto フォントで日本語 PDF を出力する

カテゴリ: r

はじめに

過去に 「Rmarkdownで日本語PDFを出力する」という記事を書いた.

ここでは以下のような YAML フロントマターを用いて, IPA フォントによる日本語 PDF を出力した.

---
output:
  pdf_document: 
    latex_engine: xelatex 
header-includes: 
  - \usepackage{bookmark} 
  - \usepackage{xltxtra} 
  - \usepackage{zxjatype} 
  - \usepackage[ipa]{zxjafont} 
---

\usepackage[ipa]{zxjafont} という部分で IPA フォントを指定しているが,ここには他のフォントも指定できる1

そこで No Tofu な Noto フォントを試してみた.

やるべきことはフォントのインストールと,YAMLフロントマターの書き換えだ.

手順

Noto フォントのインストール

Windows なら [https://www.google.com/get/noto/] で Noto Sans CJK JP と Noto Serif CJK JP をダウンロードして解凍し,右クリックからインストールできるはずだが,試していない.

Ubuntu / Debian なら以下の手順で行う.

# Noto Sans CJK をインストール
sudo apt get update
sudo apt install fonts-noto-cjk

# Noto Serif CJKjp をインストール
wget -q https://noto-website-2.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip
sudo unzip NotoSerifCJKjp-hinted.zip -d /usr/share/fonts/opentype/noto
rm NotoSerifCJKjp-hinted.zip
sudo chmod 644 /usr/share/fonts/opentype/noto/*

Dockerfile なら以下のように書く.

RUN apt-get update \
  && apt-get install -y --no-install-recommends fonts-noto-cjk \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* \
  && wget -q https://noto-website-2.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip \
  && unzip NotoSerifCJKjp-hinted.zip -d /usr/share/fonts/opentype/noto \
  && rm NotoSerifCJKjp-hinted.zip \
  && chmod 644 /usr/share/fonts/opentype/noto/*

ハマった点は以下の通り.

  • apt 経由でインストールした fonts-noto-cjk は Sans (ゴシック) しか含まないようで,追加で Serif を入手する必要がある2
  • 手動で入手したフォントをシステムにインストールする場合は権限を 644 に設定する必要がある3

YAMLフロントマター

以下のように指定する.\usepackage[noto]{zxjafont} がミソ.

---
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \usepackage{bookmark}
  - \usepackage{xltxtra}
  - \usepackage{zxjatype}
  - \usepackage[noto]{zxjafont}
---

内容を書いて knit

RStudio ユーザーなら Ctrl + Shift + K

Enjoy!!


  1. zr-tex8r/ZXjafont ドキュメント参照 (https://github.com/zr-tex8r/ZXjafont/raw/master/zxjafont.pdf)

  2. r-wakalang で相談したところ,フォントがちゃんと見える位置にあるかと聞かれ, /usr/share/fonts 以下を確認したところ判明した.原因究明に協力頂いた Carlos Luis Rivera 氏に感謝します.もっと簡単な方法としてはインストール済みのフォントのパスを一覧してくれる fc-list コマンドがあると後から知った (https://www.softel.co.jp/blogs/tech/archives/3762).

  3. CentOSにGoogle Noto フォントをインストール (https://nmbr8.com/post/how_to_install_noto_sans_cjk_on_centos/)