vvakame / docker-review

Re:VIEW build container by docker
MIT License
148 stars 38 forks source link

最近のDockerイメージでtatsumacro.styをスタイル指定するとシンプルなPDFの生成が失敗する #19

Closed muojp closed 6 years ago

muojp commented 6 years ago

概要

あるタイミングのdocker-reviewイメージから、tatsumacro.styに含まれるusefont指定によってPDFビルドが失敗する。

再現手順

再現用ファイルの準備

まずは以下を /tmp以下の適当な場所あたりでコピペポンしてください。

mkdir -p repro/sty
cd repro
echo '= hello' > 01.re
echo '{CHAPS: [01.re]}' > catalog.yml
echo '{review_version: 2.0, bookname: book, booktitle: foo, aut: muo, texstyle: tatsumacro}' > config.yml
echo '\renewcommand{\reviewtitlefont}[0]{%
  \usefont{T1}{pag}{b}{n}\gtfamily\ebseries}' > sty/tatsumacro.sty
echo '#!/bin/sh
cd /book && review-pdfmaker config.yml' > build.sh
chmod +x build.sh

ビルド実施

docker run -it --rm -v ....:/book vvakame/review:2.4 /book/build.sh

結果

(略)
(/usr/share/texmf/tex/latex/lm/omxlmex.fd) [1] (./01.tex
第1章
(/usr/share/texmf/tex/latex/lm/t1lmss.fd)) [1] (./book.aux) )
Output written on book.dvi (2 pages, 1764 bytes).
Transcript written on book.log.
book.dvi -> book.pdf
[1
dvipdfmx:fatal: Failed to read UCS2/UCS4 TrueType cmap...

Output file removed.
/var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:39:in `system_or_raise': failed to run command: dvipdfmx -d 5 book.dvi (RuntimeError)
        from /var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:201:in `block in build_pdf'
        from /var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:153:in `chdir'
        from /var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:153:in `build_pdf'
        from /var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:230:in `generate_pdf'
        from /var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:123:in `execute'
        from /var/lib/gems/2.3.0/gems/review-2.4.0/lib/review/pdfmaker.rb:81:in `execute'
        from /var/lib/gems/2.3.0/gems/review-2.4.0/bin/review-pdfmaker:16:in `<top (required)>'
        from /usr/local/bin/review-pdfmaker:22:in `load'
        from /usr/local/bin/review-pdfmaker:22:in `<main>'

docker-reviewのリビジョンごとの挙動差

最新リビジョンからDockerイメージをビルド(対照)

本issueの作成時点でDocker Hubにて公開されている最新版である https://github.com/vvakame/docker-review/commit/096620d71a3b1845b45ac05056423ce1cf454e5f に相当するイメージを096620d7-2.4としてビルドして前述の再現パックをビルド:

前掲のログと同じ(PDF生成失敗)

少し前のリビジョンからDockerイメージをビルド

Noto関連のコミットをmergeする直前、 https://github.com/vvakame/docker-review/commit/f1378c8aec54c9616aaccecc384234920552b401 をもとにf1378c8a-2.4としてDockerイメージをビルドして前述の再現パックをビルド:

問題なくPDFの生成が完了。

(略)
(./tatsumacro.sty) (./book.aux)
(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd)
(I search kanjifont definition file: . . ) (I search font definition file: . .
. . . . . . ) (/usr/share/texmf/tex/latex/lm/t1lmr.fd)
*geometry* driver: auto-detecting
*geometry* detected driver: dvips
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
(./book.out) (./book.out)
(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pag.fd)
(/usr/share/texmf/tex/latex/lm/ot1lmr.fd)
(/usr/share/texmf/tex/latex/lm/omllmm.fd)
(/usr/share/texmf/tex/latex/lm/omslmsy.fd)
(/usr/share/texmf/tex/latex/lm/omxlmex.fd) [1] (./01.tex
第1章
(/usr/share/texmf/tex/latex/lm/t1lmss.fd)) [1] (./book.aux) )
Output written on book.dvi (2 pages, 1764 bytes).
Transcript written on book.log.
book.dvi -> book.pdf
[1][2
dvipdfmx:warning: Object @page.1 already defined.
]
9181 bytes written

暫定対応策

Docker環境内でのビルド開始直前に kanji-config-updmap auto をかけることでPDFが生成される。 たとえば前述のコピペもろもろの場合、

echo '#!/bin/sh
kanji-config-updmap auto
cd /book && review-pdfmaker config.yml' > build2.sh
chmod +x build2.sh

というビルドスクリプトを作成して

docker run -it --rm -v ....:/book vvakame/review:2.4 /book/build2.sh

のようにビルドを実施するとPDFが生成される。

muojp commented 6 years ago

暫定策と記載した kanji-config-updmap(/-sys) auto は多分順位的にIPAフォントが埋め込み対象になってPDF生成が通る(この状態で kanji-config-updmap(/-sys) noto を叩いてNotoを埋め込み設定すると元通りエラー)

vvakame commented 6 years ago

@kmuto ひぇ〜〜〜

kmuto commented 6 years ago

tatsumacro.sty is 何、でしたが、要するにgothic+extraboldのとき用のフォントが不足していました。

正確には

分離後パッケージを入れれば直ることはわかったのでPR出します。

muojp commented 6 years ago

ありがたやありがたや…! experimental時との差っぽいところまではなんとなく想像しつつも、マッピングファイルがおかしいのかな? と別方面を掘りに行って手ぶらで戻ってきていました。