読者です 読者をやめる 読者になる 読者になる

dvipdfmxをすると、fontでエラー吐く

移転しました。

TexShopで、タイプセットをすると、dvipdfmxで次のエラーを吐いて進まない。

dvipdfmx tmp.dvi
tmp.dvi -> tmp.pdf
[1][2][3][4Error: /typecheck in /findfont
Operand stack:
   Arial
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1967   1   3   %oparray_pop   1966   1   3   %oparray_pop   --nostringval--   1950   1   3   %oparray_pop   1836   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   1919   1   10   %oparray_pop
Dictionary stack:
   --dict:1200/1684(ro)(G)--   --dict:0/20(G)--   --dict:85/200(L)--   --dict:5/8(L)--   --dict:85/200(L)--   --dict:5/8(L)--   --dict:85/200(L)--   --dict:5/8(L)--   --dict:85/200(L)--   --dict:184/256(L)--
Current allocation mode is local
Current file position is 20118
GPL Ghostscript 9.18: Unrecoverable error, exit code 1

dvipdfmx:warning: Filtering file via command -->rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile='/var/folders/z1/sml48c6n5qz1rc04s3fsck7c0000gn/T//dvipdfm-x.8068844cd047fdb67e64f642c4b7c5ba' './fig1.eps' -c quit<-- failed.
dvipdfmx:warning: Image format conversion for "./fig1.eps" failed...
dvipdfmx:fatal: pdf_ref_obj(): passed invalid object.

Output file removed.
  • gnuplotで出力したepsファイルの処理中に/findfontで失敗していて、Arialが見つからないらしい。
  • osxのユーティリティーのFont Bookで調べると、Arialは/Library/Fontsに存在するので、ghostscriptが見つけられないのが問題。
  • ghostscriptでのフォントパスは、Fontmapファイルに書く。
  • brewでghostscriptを入れている。
  • Fontmapファイルの場所を探す。
$ find /usr/local/share/ghostscript/9.18/  -name "*Fontmap*
/usr/local/share/ghostscript/9.18//Resource/Init/Fontmap
/usr/local/share/ghostscript/9.18//Resource/Init/Fontmap.GS
  • Fontmap.GSに書き方がのっているのでその通りに書く。あるいは、fontパスをそのときどきGS_FONTPATH環境変数に入れると良いらしい。
  • さて、gnuplotでeps出力するときには古い指定の方法で"Arial"とか"Arial-Italic"とフォント指定している。
  • postscript内にも"(Arial)"とか"(Arial-Italic)"フォント指定されている。
  • これだとデフォルトのghostscriptの設定では読んでくれない。そもそもArialはpostscript 1のcore font set に入っていない。PostScript fonts - Wikipedia, the free encyclopedia
  • そのため、サンセリフを使いたいなら Helvetica, Helvetica-Obliqueを使ったほうがよいのではないか。
  • 今回は、epsファイルをvimで開いて、
:%s/Arial/Helvetica/g
:%s/Italic/Oblique/g

と置換して、無事タイプセットが通るようになりました。(Arial, Arial-Italic, Symbolしかフォントを使っていない)