AsciiDoc を PDF 化する時の日本語フォントを指定する
以前書いた AsciiDoc と PlantUML と mermaid.js で素敵なテキストベース仕様書ライフ の続き的な内容です。
asciidoctor-pdf で AsciiDoc を PDF化できますが、デフォルト設定の日本語が少し気になる場合(特に濁点とか半濁点の位置・・・)、フォントを別のものにすることができます。
メモがてら手順を記載します。
動作確認環境
- macOS Sierra 10.12.6
- ruby 2.3.1
- Asciidoctor 1.5.5
- Asciidoctor PDF 1.5.0.alpha.15
手順
大まかには以下の通り
- ttf のフォントを入手する
- スタイルファイルでフォントを指定する
- asciidoctor-pdf の引数でスタイルファイルとフォントのディレクトリを指定する
手順自体はそれほど複雑ではありませんが、少し注意点、制約がありますので順を追って記載します。
手順1. ttf フォントを入手する
まずは使いたいフォントファイルを入手する必要があります。そしてこのフォントファイルの入手が一番注意が必要な部分です。
現在、asciidoctor-pdfが対応しているのは、拡張子 .ttf のフォントファイルのみです。
最近のフォントファイルだと、複数の .ttf をまとめた形式 .ttc が多いので注意が必要です。 ttc を ttf に展開する方法もあるみたいですが、使えるのかはわかりません。(権利的にもちょっと怪しい気がしたので試していません)
また、太字、斜体を使う場合はそれぞれに応じた、.ttf ファイルが必要です。
太字や斜体は、装飾してそうなっているというわけでは無く、それ専用のフォントを使っているということですね。
太字に関しては、文字の太さ毎にフォントを用意されている場合が多いので簡単に見つかるかと思います。斜体に関しては・・・私は諦めました。イタリック というくらいなので、日本語のフォントにそれを求めるのは無茶な話ではあるかなと思います。特に斜体にしたいところも無かったので、問題無かったです。
というわけで、日本語フォントで、太さが数種(必要なら斜体も)ある ttf を探してきてください。
ダウンロードした ttf は一つのディレクトリ内に配置しておきます。
手順2. スタイルファイルでフォントを指定する
asciidoctor-pdf では、YAML形式のスタイルファイル(または theme ファイル)を使うことで、PDF化の際のスタイルを諸々変更することができます。
詳細は公式のガイドを参照
設定項目が非常に多いので、デフォルトのスタイルファイルをダウンロードして、カスタマイズしたい部分のみ変更するというのが良いかと思います。
フォントに関しては下記のように、まずは font catalog の要素でフォントを定義し、
1 2 3 4 5 6 7 8 9 |
font: catalog: # Noto Serif supports Latin, Latin-1 Supplement, Latin Extended-A, Greek, Cyrillic, Vietnamese & an assortment of symbols Noto Serif: normal: notoserif-regular-subset.ttf bold: notoserif-bold-subset.ttf italic: notoserif-italic-subset.ttf bold_italic: notoserif-bold_italic-subset.ttf |
その後、下記のように使いたい箇所でフォントを指定します。
1 2 3 4 |
base: ... font_family: Noto Serif |
公式のガイドにも書かれていますが、スタイルファイルは同じ要素の記述が複数ある場合は後から出てきた方で上書きする仕様になっているようです。そのため、変更したい部分のみをデフォルトのファイルの末尾にまとめて記載するような書き方が出来ます。デフォルトとの差分がわかりやすいのでオススメです。
手順3. asciidoctor-pdf の引数でスタイルファイルとフォントのディレクトリを指定する
asciidoctor-pdf を引数付きで実行します。-a pdf-style=
でスタイルファイルを、-a pdf-fontsdir=
でフォントのディレクトリを指定します。
1 2 |
$ asciidoctor-pdf 入力ファイル.adoc -a pdf-style=theme.yml -a pdf-fontsdir=fonts -o 出力ファイル.pdf |
ここでの注意点として、pdf-fontsdir を指定すると、全てのフォントを指定ディレクトリからのみ探索します。一部だけ元から用意されているフォントを使いたい時などはかなり面倒な仕様ですので注意。
例(源真ゴシックを使う場合)
上記手順を踏まえて、実例です。ここでは源真ゴシックを使います。ttf ファイルが提供されており、太さなどもパターンがあって今回の目的にあっています。
下記よりダウンロードします。
http://jikasei.me/font/genshin/
展開した ttf ファイル群は作業ディレクトリの fonts ディレクトリ内に入れておくことにします。
次に、asciidoctor-pdf のデフォルトのスタイルファイル をダウンロードし、
作業ディレクトリに my-theme.yml として保存します。my-theme.yml の末尾に下記を追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
font: catalog: GenShinGothic: normal: GenShinGothic-Light.ttf italic: GenShinGothic-Light.ttf bold: GenShinGothic-Medium.ttf bold_italic: GenShinGothic-Medium.ttf base: font_family: GenShinGothic literal: font_family: GenShinGothic conum: font_family: GenShinGothic |
そして作業ディレクトリでコマンド実行します。
1 2 |
$ asciidoctor-pdf input.adoc -a pdf-style=my-theme.yml -a pdf-fontsdir=fonts -o output.pdf |
条件に合う ttf さえ定まっていれば、それほど難しくないかと思います。
最後に
AsciiDoc、すごい好きなんですが、日本語環境についての情報が少ないのが使用のハードルを高くしている気がします。
当ブログでも AsciiDoc 関連で検索して来る方が結構いるみたいなので、頑張って情報発信していきたいと思います。
AsciiDoc、asciidoctor-pdf の使い方の Tips とか、こういう情報がほしいとかあればコメントお願いします!
最後まで読んでいただきありがとうございます。 このブログを「いいな」と感じていただけましたら、Twiter にてフォローいただけるとうれしいです。ブログ更新情報などもお届けします。
Follow @ryuta461
この記事をシェアする