追記
この記事によると以下の手順ではうまくいかなくなったようです。
はじめに
Asciidocで作成した文章はAsciidoctor-PDFを使うことでPDFとして出力できる。
しかし、インターネット上にあるAsciidoctor-PDFの構築手順および利用手順だと「v1.5.0.beta.1」以降のAsciidoctor-PDFでは「Asciidoctor-PDFで出力したPDFで日本語が表示されない」問題に遭遇しうる罠があるためナレッジとして原因の解説と解決策を紹介する。
筆者は「v1.5.0.beta.3」および「v1.5.0.beta.4」で当該問題に遭遇した。
キーワード:asciidoctor-pdf 日本語 表示されない
想定の構築手順
gem install asciidoctor
gem install asciidoctor-pdf --pre
gem install asciidoctor-pdf-cjk
想定の利用手順
asciidoctor-pdf -r asciidoctor-pdf-cjk exapmle.adoc
※デフォルトスタイルでそのままPDFに出力する想定。
原因
結論から書くと、
「デフォルトスタイルのフォントに日本語字体が含まれていないこと」と「デフォルトスタイルのフォントフォールバックについての仕様変更」が原因で「Asciidoctor-PDFで出力したPDFを開くと日本語が表示されない」問題が発生する。
なお、「フォントフォールバック」とはフォントに存在しない字体を他のフォントで補うことである。
Asciidoctor-PDFのGitHub上のドキュメントの記載によると、
The default theme does not use a fallback font. However, the built-in default-with-fallback-font theme does. Using the fallback font slows down PDF generation slightly because it has to analyze every single character. It’s use is not recommended for large documents. Instead, it’s best to select primary fonts that have all the characters you need.
デフォルトではAsciidoctor-PDFによるPDFの出力が遅くなるので「フォントフォールバック」を行わない旨の記載がある。
####「デフォルトスタイルのフォントに日本語字体が含まれていないこと」について
一般的に日本語の字体を含むttfファイル形式のフォントは数MBを超える。
しかし、Asciidoctor-PDFのほとんどの同梱フォントのファイルサイズは非常に軽量 (100KB以内)であり「デフォルトスタイルで指定されている同梱フォント」に限らずほとんどの「同梱フォント」について日本語の字体を含んではいない。
一方でAsciidoctor-PDFのの同梱フォントのうち「mplus1p-regular-fallback」については日本語の字体を含んでいる。
####「デフォルトスタイルのフォントフォールバックについての仕様変更」について
Asciidoctor-PDFのdefault-theme.yml上で前述の日本語の字体を含む「mplus1p-regular-fallback」に「フォントフォールバック」する設定が残っていた最後のバージョンが2019年4月18日にリポジトリに上がっている「v1.5.0.alpha.18」である。
そしてその次のバージョンであり2019年7月8日にリポジトリ上に上がっている「v1.5.0.beta.1」で削除されている。
結論
つまり、「v1.5.0.beta.1」以降のバージョンかつデフォルトスタイル時においてPDFの日本語が表示されないのは「デフォルト設定で指定されている同梱フォント」が日本語の字体を含まない上に「日本語の字体を含む同梱フォント」への「フォントフォールバック」も行わない設定になっていることが原因である。
解決策について
解決策1
2019年7月末のQiita記事「Asciidoctor-PDFをMacOS Mojaveにセットアップする」の「asciidoctor-pdf-cjk-kai_gen_gothicを追加でインストール」のワークアラウンドについてWindows7/Windows10かつプロキシ環境で期待動作することを確認している。
プロキシ環境での例を示す。
gem install -p http://<ProxyServer>:<Port> asciidoctor-pdf-cjk-kai_gen_gothic
set http_proxy=http://<ProxyServer>:<Port>
set https_proxy=http://<ProxyServer>:<Port>
asciidoctor-pdf-cjk-kai_gen_gothic-install
copy <Ruby環境のパス>/gems/2.6.0/gems/asciidoctor-pdf-cjk-kai_gen_gothic-0.1.1/data/themes/KaiGenGothicJP-theme.yml .
asciidoctor-pdf -r asciidoctor-pdf-cjk-kai_gen_gothic example01.adoc -a pdf-style=KaiGenGothicJP-theme.yml -o output.pdf
解決策2
default-theme.ymlを直接編集するか、自分でtheme.ymlを用意してそちらで日本語字体を含むフォントを指定すれば良い。
同梱フォントの「mplus1p-regular-fallback」フォントを使っても良いし、好みのフォントを使っても良い。
詳細については「公式のドキュメント」や「asciidoctor-pdfでかっこいいPDFを作る(1)」や「Asciidoctor PDFの日本語フォントを変更する」を参照のこと。