LuaTeX で生成した PDF から ToUnicode CMap を除去する
以前に紹介した原ノ味フォントだが, $\mathrm{Lua\LaTeX}$ で組版 & PDF 出力する際に Adobe-Identity-0 フォントとして埋め込まれてしまうそうで,フォントの性能を上手く活かしきれてないらしい。 しかも
そこで原ノ味フォントの作者が pdf-rm-tuc
というツールを公開されている。
このツールを使うと
更に言うと PDF ファイルのサイズがちょびっとだけ小さくなる。
ありがたや m(_ _)m
pdf-rm-tuc のビルドとインストール
pdf-rm-tuc
はソースコードのみの公開なので GCC を使って自前でビルドする必要がある1。
ここでは Ubuntu プラットフォームを前提に紹介する。
事前準備
たまに GCC が入ってないことがあるので,入ってなければ APT でインストールしておく。
$ sudo apt install build-essential
更に pdf-rm-tuc
の GitHub リポジトリを clone して直接ビルドする場合は Autoconf および Automake が必要になる。
もし入ってなければ,これもインストールしておこう。
$ sudo apt install autoconf automake
更に更にビルドの際に libqpdf が必要らしいので,これもインストールしておく。
$ sudo apt install libqpdf-dev
これで準備完了。
ビルドとインストール
では,ビルドからインストールまで一気にやってしまおう。
$ git clone https://github.com/trueroad/pdf-rm-tuc.git
$ cd pdf-rm-tuc
$ ./autogen.sh
$ mkdir build
$ cd build
$ ../configure
$ make
$ make check # TeX Live 2020 が導入済みであること
$ sudo make install
$ pdf-rm-tuc -V
Remove ToUnicode CMap from PDF 1.0.0
Copyright (C) 2019 Masamichi Hosoda. All rights reserved.
License: BSD-2-Clause
https://github.com/trueroad/pdf-rm-tuc
インストールが成功すれば pdf-rm-tuc
コマンドが以下に置かれる。
$ which pdf-rm-tuc
/usr/local/bin/pdf-rm-tuc
pdf-rm-tuc を試してみる
入力テキストは以下の通り。 TeX Live 2020 が導入されていることが前提ね。
\documentclass{ltjsarticle}
\usepackage[deluxe]{luatexja-preset}
\usepackage{luatexja-otf}
\begin{document}
{\mcfamily\ltseries ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・細字)}\par
{\mcfamily ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・中字)}\par
{\mcfamily\bfseries ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・太字)}\par
{\gtfamily ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・中字)}\par
{\gtfamily\bfseries ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・太字)}\par
{\gtfamily\ebseries ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・極太)}
\end{document}
これを組版すると以下のような結果になる。
このときのフォント情報はこんな風になっている2。
$ pdffonts lualatex-sample.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
OLUZKZ+HaranoAjiMincho-Light CID Type 0C Identity-H yes yes yes 4 0
PTNBJH+HaranoAjiMincho-Regular CID Type 0C Identity-H yes yes yes 5 0
BMAPJQ+HaranoAjiMincho-Bold CID Type 0C Identity-H yes yes yes 6 0
HOSFGF+HaranoAjiGothic-Regular CID Type 0C Identity-H yes yes yes 7 0
ULINFN+HaranoAjiGothic-Bold CID Type 0C Identity-H yes yes yes 8 0
PJPUYK+HaranoAjiGothic-Heavy CID Type 0C Identity-H yes yes yes 9 0
JFRMQG+LMRoman10-Regular CID Type 0C Identity-H yes yes yes 10 0
uni
の項目が ToUnicode CMap の有無を示すもので,原ノ味フォントの全てに ToUnicode CMap があるのが分かる。
では pdf-rm-tuc
を実行してみよう。
$ pdf-rm-tuc lualatex-sample.pdf lualatex-sample-notuc.pdf
実行結果は以下の通り。
$ pdffonts lualatex-sample-notuc.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
JFRMQG+LMRoman10-Regular CID Type 0C Identity-H yes yes yes 10 0
PTNBJH+HaranoAjiMincho-Regular CID Type 0C Identity-H yes yes no 5 0
OLUZKZ+HaranoAjiMincho-Light CID Type 0C Identity-H yes yes no 4 0
BMAPJQ+HaranoAjiMincho-Bold CID Type 0C Identity-H yes yes no 6 0
HOSFGF+HaranoAjiGothic-Regular CID Type 0C Identity-H yes yes no 7 0
ULINFN+HaranoAjiGothic-Bold CID Type 0C Identity-H yes yes no 8 0
PJPUYK+HaranoAjiGothic-Heavy CID Type 0C Identity-H yes yes no 9 0
原ノ味フォントの uni
項目が全て no
になっていることが確認できた。
よーし,うむうむ,よーし。
注意事項
- $\mathrm{up\LaTeX}$ 等で組版したものを
dvipdfmx
で PDF に出力する場合は Adobe-Japan1 フォントであれば ToUnicode CMap の生成・埋め込みはしないのでpdf-rm-tuc
は不要 - PDF ビュア側で Adobe-Japan1-UCS2 等の ToUnicode CMap を持っていない場合は PDF 側の ToUnicode CMap を削除すると日本語のテキスト抽出が上手く行かないらしい。 Ubuntu に標準で入ってる Evince は画面から普通にコピペできたけど,大丈夫ってこと?
- PDF/A を構成する場合,適合レベルによっては ToUnicode CMap を削除すると拙い場合があるのだが Adobe-Japan1 フォントについては例外らしい? veraPDF 等の Validator で確認したほうがいいかも
ブックマーク
参考図書
- [改訂第8版]LaTeX2ε美文書作成入門
- 奥村晴彦 (著), 黒木裕介 (著)
- 技術評論社 2020-11-14
- 大型本
- 4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)
- 評価
2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。版元には PDF 版もある。
-
Windows であれば MSYS2 等の環境が必要になるかもしれない。あるいは TeX Live ひっくるめて WSL2 に引っ越すか(笑) ↩︎
-
pdffonts
は Poppler のコマンドのひとつ。 Windows 版 TeX Live には既定で同梱されているらしい。他のプラットフォームについては「Poppler - TeX Wiki」を参考に導入すればいいだろう。 ↩︎