ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

Linuxでpdfにフォント埋め込み

この記事は

すでにおんなじこと書いてる所はあるのですが、自分のブログで引けた方が便利なのと勉強も兼ねてメモ。
内容としてはLaTeXなんかで作ったpdfに必要なフォントをすべて埋め込む方法についてです。原稿を投稿しようと思ったフォント足りなくて弾かれるとかありますからね。
環境はUbuntuを想定してます。

埋め込まれているフォントを調べる

まずは自分で作ったpdfに埋め込まれてるフォントを調べます。
コマンドはこちら

$ pdffonts hoge.pdf 
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
OMFZYW+IPAGothic                     CID TrueType      Identity-H       yes yes no       5  0
SUOPIA+CMR8                          Type 1C           Builtin          yes yes no       6  0
BBGPDK+IPAMincho                     CID TrueType      Identity-H       yes yes no       8  0
DMCXMK+CMR10                         Type 1C           Builtin          yes yes no       9  0
QGIFTA+CMBX12                        Type 1C           Builtin          yes yes no      10  0
IIMPHM+CMCSC10                       Type 1C           Builtin          yes yes no      11  0
MKNUZQ+CMR7                          Type 1C           Builtin          yes yes no      12  0
ESNUJX+CMBXTI10                      Type 1C           Builtin          yes yes no      13  0
XPMZMY+CMR6                          Type 1C           Builtin          yes yes no      14  0
JEGSLA+CMSY10                        Type 1C           Builtin          yes yes yes     15  0
UTIGJR+CMMIB10                       Type 1C           Builtin          yes yes no      16  0
UXDIRE+CMSY7                         Type 1C           Builtin          yes yes yes     17  0
AVWPRI+CMBX10                        Type 1C           Builtin          yes yes no      22  0
NOZBOL+CMBX8                         Type 1C           Builtin          yes yes no      23  0
ZZSIRD+CMMI8                         Type 1C           Builtin          yes yes no      24  0
INXSVI+CMSY6                         Type 1C           Builtin          yes yes yes     25  0
JQHMYY+CMMI6                         Type 1C           Builtin          yes yes no      26  0
QAVPQM+CMSY8                         Type 1C           Builtin          yes yes no      27  0
ZFBYGR+CMMIB8                        Type 1C           Builtin          yes yes no      28  0
LFQDNK+CMEX10                        Type 1C           Builtin          yes yes no      29  0
HXXGPT+CMMI10                        Type 1C           Builtin          yes yes no      30  0
QAJXMJ+CMBSY7                        Type 1C           Builtin          yes yes yes     31  0
XFJSWB+CMMI7                         Type 1C           Builtin          yes yes no      32  0
GVGHVM+CMTT8                         Type 1C           Builtin          yes yes no      42  0
Helvetica                            Type 1            Standard         no  no  no      46  0
YIURMJ+CMTT9                         Type 1C           Builtin          yes yes no      52  0

こんな感じで表がずらっと出てきます。
重要な列は``emd''でこいつが``yes''になっていればフォントはすべて埋め込まれています。
今回の例ではHelveticaがnoなので埋め込まれてないです。

フォントを埋め込む

ググるとdvipdfmxで…とかLaTeX環境いじって…とかいっぱい出てくるけど、環境は弄りたくない。
出来上がったpdfの不足フォントを補うようにしたい。
どうやらghostscriptでシコシコするとフォントが埋め込まれるらしい

gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=hoge_fix.pdf hoge.pdf

埋め込んだ後のファイルを見てみると

$pdffonts hoge_fix.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
BWOESW+CMSY7                         Type 1C           Custom           yes yes yes     34  0
WJPHOQ+IPAMincho-Identity-H          CID TrueType      Identity-H       yes yes no      15  0
WKUQQS+IPAGothic-Identity-H          CID TrueType      Identity-H       yes yes no       9  0
SDWKFM+CMBX12                        Type 1C           WinAnsi          yes yes no      20  0
MBUHEI+CMCSC10                       Type 1C           WinAnsi          yes yes no      22  0
YVNWUR+CMR7                          Type 1C           WinAnsi          yes yes no      24  0
IPIGPQ+CMBXTI10                      Type 1C           WinAnsi          yes yes no      26  0
TDYEMC+CMR6                          Type 1C           WinAnsi          yes yes no      28  0
RLJSCH+CMR8                          Type 1C           WinAnsi          yes yes no      12  0
EFQVIJ+CMSY10                        Type 1C           Custom           yes yes yes     30  0
EOVOWO+CMMIB10                       Type 1C           WinAnsi          yes yes no      32  0
KRGRAJ+CMR10                         Type 1C           Custom           yes yes no      18  0
PDZDER+CMBSY7                        Type 1C           Custom           yes yes yes     59  0
ETLMVG+CMBX8                         Type 1C           WinAnsi          yes yes no      43  0
XELTXX+CMEX10                        Type 1C           Custom           yes yes no      55  0
XBSBCY+CMMI7                         Type 1C           WinAnsi          yes yes no      61  0
TBADTE+CMMI8                         Type 1C           Custom           yes yes no      45  0
VYKHOT+CMMI10                        Type 1C           Custom           yes yes no      57  0
UHJYLQ+CMSY6                         Type 1C           Custom           yes yes yes     47  0
VRUABQ+CMMI6                         Type 1C           WinAnsi          yes yes no      49  0
RDWOYA+CMSY8                         Type 1C           Custom           yes yes no      51  0
AXNVXA+CMMIB8                        Type 1C           WinAnsi          yes yes no      53  0
OZCBQO+CMBX10                        Type 1C           WinAnsi          yes yes no      41  0
FOPPVP+Helvetica                     Type 1C           WinAnsi          yes yes no      80  0
UAYVAD+CMTT8                         Type 1C           WinAnsi          yes yes no      78  0
HXOQIT+CMTT9                         Type 1C           WinAnsi          yes yes no      87  0

たしかにHelveticaが埋め込まれている。

ところで

Helveticaは標準フォントというヤツらしく、LaTeX側で埋め込まないように設定されているようです。
なんででしょうね?