「Re:VIEW を apache で動かす」
https://qiita.com/nanbuwks/items/dd15819ec7798a9eca7b
「AWS上にRe:VIEW環境を構築する」
https://qiita.com/nanbuwks/items/da9136f1b6f789aaffcf
でPDFを作りましたが、このPDF、フォントが埋め込まれていません。
印刷所からダメ出しされました。
# pdffonts book.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
GothicBBB-Medium-Identity-H CID Type 0 Identity-H no no no 9 0
TQIECX+NimbusSanL-Bold Type 1C WinAnsi yes yes no 10 0
GothicBBB-Medium,Bold-Identity-H CID Type 0 Identity-H no no no 15 0
Ryumin-Light-Identity-H CID Type 0 Identity-H no no no 17 0
[none] Type 3 Custom yes no no 18 0
[none] Type 3 Custom yes no no 19 0
[none] Type 3 Custom yes no no 20 0
[none] Type 3 Custom yes no no 134 0
[none] Type 3 Custom yes no no 257 0
- GothicBBB-Medium-Identity-H
- GothicBBB-Medium,Bold-Identity-H
- Ryumin-Light-Identity-H
の emb が no になってますね。
フォントを埋め込む設定を行います。
環境
- Ubuntu 16.04
- Re:VIEW 2.20
(2021/12/21 以下の環境でも確認しました)
- Ubuntu 20.04
- Re:VIEW 5.3
kanji-config-updmap
$ kanji-config-updmap ipaex
とするといいらしいですが、これでpdfを作りましたが変わってないみたい。
ipaexフォント自体、入っているかな?
$ ls /usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/jfontmaps # Ubuntu16.04
hiragino hiragino-pron ipa ipaex kozuka kozuka-pr6 kozuka-pr6n morisawa morisawa-pr6n ms noEmbed yu-osx yu-win
$ ls /usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps # Ubuntu20.04
adobe canon founder ipaex moga-mobo-ex ms-win10 sourcehan yu-win
apple cjkunifonts haranoaji kozuka morisawa noEmbed sourcehan-otc yu-win10
arphic cjkunifonts-ttf hiragino kozuka-pr6 morisawa-pr6n noto ume
baekmuk dynacomware hiragino-pron kozuka-pr6n ms noto-otc unfonts
bizud fandol ipa moga-mobo ms-osx solaris yu-osx
ちゃんとありますね。
「日本語フォントの使用に関して」
http://www.fugenji.org/~thomas/texlive-guide/font.html
によると、
実は、現行の TeX Live には updmap-sys のラッパーである perl スクリプト kanji-config-updmap(-sys)(当初は updmap-setup-kanji(-sys) という名称でした)が収録されています。これを使用すると、オプション等でミスをすることなしに、システムのデフォルトフォントセットを設定することができます。
kanji-config-updmap(-sys) は、システムに収録されている "otf-" から始まる名前のフォントマップを読み込み、これをシステムのデフォルトセットとして登録することができます。
ということで、kanji-config-updmap は TeX Live のツールだそうで。
そういえば今使っている環境は「upLaTeX」だった。それが原因かな?
kpsewhich で調査
「使用書体の変更(upLaTeX 編)」
https://review-knowledge-ja.readthedocs.io/ja/latest/latex/uptex-fonts.html
によると、
kpsewhich フォントファイル名(たとえば kpsewhich HiraMinPro-W3.otf)で返ってこなかったら、そのフォントは TeX からまだ使えません。kpsewhich -show-path="opentype fonts" で表示されるパスのいずれかにフォントを移動・あるいはリンクした後、mktexlsr コマンドでファイルデータベースを更新します。
ということで、まずはフォントファイルが使えるかどうか調べてみます。
$ kpsewhich ipa
うーむ、何も出ない。
保管場所を調べてみます。
# kpsewhich -show-path="opentype fonts" | tr : '\n'
.
/home/ubuntu/.texmf-config/fonts/opentype//
/home/ubuntu/.texmf-var/fonts/opentype//
/home/ubuntu/texmf/fonts/opentype//
/etc/texmf/fonts/opentype//
!!/var/lib/texmf/fonts/opentype//
!!/usr/local/share/texmf/fonts/opentype//
!!/usr/share/texmf/fonts/opentype//
!!/usr/share/texlive/texmf-dist/fonts/opentype//
/home/ubuntu/.texmf-config/fonts/truetype//
/home/ubuntu/.texmf-var/fonts/truetype//
/home/ubuntu/texmf/fonts/truetype//
/etc/texmf/fonts/truetype//
!!/var/lib/texmf/fonts/truetype//
!!/usr/local/share/texmf/fonts/truetype//
!!/usr/share/texmf/fonts/truetype//
!!/usr/share/texlive/texmf-dist/fonts/truetype//
/usr/share/fonts//
これの表記ですが、
「LaTeX::設定基本事項」
http://www.yamamo10.jp/yamamoto/comp/latex/settings/basic/index.php
によると、
パスの最後が「//」で終わっているものは,再帰的にサブディレクトリーも検索対象になります.一方,先頭が「!!」の場合,ディスクは捜さないで ls-R のデータベースのみを捜します.
だそうです。
この中の、
/usr/share/texlive/texmf-dist/fonts から調べてみると、
truetype/public/ipaex/
中に
ipaexg.ttf ipaexm.ttf ipag.ttf ipam.ttf
が入ってました。
ということで以下のようにして調べてみると、
$ kpsewhich ipaexg.ttf
/usr/share/texlive/texmf-dist/fonts/truetype/public/ipaex/ipaexg.ttf
ということで、ttfフォントファイルは認識しているみたいです。
さて、先にうまくいかなかった kanji-config-updmap は、otf-ではじまるファイルをサーチしているようなので、以下のようにして調べてみました。
$ find /usr -name otf-ipa* # Ubuntu16.04 の場合
/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/jfontmaps/ipaex/otf-ipaex.map
/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/jfontmaps/ipa/otf-ipa.map
$ find /usr -name otf-ipa* # Ubuntu20.04 の場合
/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/ipaex/otf-ipaex.map
/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/ipa/otf-ipa.map
mapファイルが出てきました。この mapファイルは upLaTeX に認識されているのかな?
$ kpsewhich otf-ipaex.map # Ubuntu 16.04 の場合
/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/jfontmaps/ipaex/otf-ipaex.map
$ kpsewhich otf-ipaex.map # Ubuntu 20.04 の場合
/usr/share/texlive/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/ipaex/otf-ipaex.map
認識しているようです。
解決法
ここまで調べた内容を元に、解決してみます。いろいろ方法はありますが、今回は RE:VIEW のプロジェクトフォルダにある sty ファイル内で指定するようにしました。
Ubuntu16.04 + Re:VIEW 2.20 の場合
先のサイト
https://review-knowledge-ja.readthedocs.io/ja/latest/latex/uptex-fonts.html
の「プリセットを使う」を参考に、Re:VIEW プロジェクトディレクトリの中で review-custom.sty ファイルを編集します。
$ vim sty/review-custom.sty
として、内容を以下のようにしました。
\usepackage[ipa-hg]{pxchfon}
この後、rm book.pdf して rake pdf すると以下のようにフォントが埋め込まれたファイルが作成できました。
# pdffonts book.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
AICVAK+IPAGothic CID TrueType Identity-H yes yes no 9 0
FJSRDQ+NimbusSanL-Bold Type 1C WinAnsi yes yes no 10 0
DSBQIA+IPAMincho CID TrueType Identity-H yes yes no 15 0
[none] Type 3 Custom yes no no 16 0
[none] Type 3 Custom yes no no 17 0
[none] Type 3 Custom yes no no 18 0
[none] Type 3 Custom yes no no 132 0
[none] Type 3 Custom yes no no 255 0
もしかしたら、HGフォントが無い環境ではエラーが起こるかも知れません。その場合は以下のようにするのが良いかも。
Ubuntu20.04 + Re:VIEW 5.3 の場合
上のようにしても、エラーが出る。
⨯ ERROR failed to run command: dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
Error log:
__REVIEW_BOOK__.dvi -> __REVIEW_BOOK__.pdf
[1
dvipdfmx:warning: Could not locate a virtual/physical font for TFM "uphgothr-h".
dvipdfmx:warning: >> This font is mapped to a physical font "hgrgm.ttc".
dvipdfmx:warning: >> Please check if kpathsea library can find this font: hgrgm.ttc
dvipdfmx:fatal: Cannot proceed without .vf or "physical" font for PDF output...
No output PDF file written.
rake aborted!
Command failed with status (1): [review-pdfmaker config.yml...]
/var/www/html/C99Robot/book/Rakefile:60:in `block in <top (required)>'
/usr/share/rubygems-integration/all/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
Tasks: TOP => pdf => book.pdf
(See full trace by running task with --trace)
なんだこれ。どうやら ipa-hg というのは IPAフォント+HGフォント のことで、HGフォントが無いというのが問題みたいです。
ipa-hg とすることで、太字および丸ゴシック体を HGフォントを使って実現できるそうです。
今回は Ubuntu 上の texlive-lang-japanese パッケージを使って環境設定を行っていてそれに IPAフォントは収録されていますが、HGフォントは収録されていません。ライセンスの問題でインストールするのも難しそうです。
なので今回はHGフォントを使わないようにしてみました。
$ vim sty/review-custom.sty
として、内容を以下のようにしました。
\usepackage[ipa]{pxchfon}
$ pdffonts book.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
JUTLWN+IPAGothic CID TrueType Identity-H yes yes no 5 0
VCBSGH+NimbusSanL-Bold Type 1C WinAnsi yes yes yes 6 0
MWNZPE+IPAMincho CID TrueType Identity-H yes yes no 12 0
VXGLSO+LMRoman10-Regular Type 1C Custom yes yes yes 13 0
WKBMIX+LMRoman10-Regular Type 1C Custom yes yes yes 14 0
STTLEP+LMRoman10-Bold Type 1C Custom yes yes yes 15 0
BROQSD+LMMono10-Regular Type 1C Custom yes yes yes 182 0
WNFXFN+LMMono9-Regular Type 1C Custom yes yes yes 183 0
埋め込まれているようです。
kanji-config-updmap の使い方
今回は、styファイルを使って設定しましたが、kanji-config-updmap を使うやりかたについて、以下に解説がありました。これのよると、kanji-ocnfig-updmap-user と kanji-config-updmap-sys があり、kanji-config-updmap-sys を使うべきだそうです。