IEEE PDF eXpress compliant な PDF の作成 (初稿を改編)

どんな問題?

 w32tex を利用して dvipdfmx により pdf をつくると,出来上がった pdf には欧文の基本14フォントが埋め込まれないのだそうです。それを忘れたまま IEEE PDF eXpress のチェックを受けると

Error :  Font xxxxx is not embedded 

というエラーメッセージが出ます。これは,w32tex でインストールされる dvipdfmx の pdf 変換設定が,デフォルトで

Courier,  Courier-Bold, Courier-Oblique, Courier-BoldOblique, Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique, Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic, Symbol, ZapfDingbats

 の欧文14フォントを埋め込まない設定となっていることが原因のようでした。

解決策(1)

 web 上の情報として,dvi ファイルから pdf を作成するときに,上記14フォントのmap 情報を指定した dlbase14.map ファイルを, -f オプションの引数として指定して

  dvipdfmx -f dlbase14.map hogehoge.dvi

 とすれば良いと書いてあったのですが... bunta の手元の環境ではなぜか symbol フォントだけがこの方法で埋め込めませんでした。

 

 慌てたbuntaは,adobe acrobat で解決しようとしましたが,acrobat の pdf 印刷機能の設定を「プレス設定」として作ったファイルには確かに symbol フォントも埋め込まれるものの,今度はその symbol フォントが使われている元凶?と思われるグラフ(MATLABで eps に export したもの)が原稿の中でずれてしまい,状況は余計悪化・・・。

 

最終解決策

 で,最終的な解決策ですが,以下の2つのことを行いました。備忘録Mさまのブログと奥村先生の TeXFaq を参考にさせて頂きました。

1)c:/Program Files (x86)/gs/gs9.0x/Resource/Init/gs_pdfwr.ps の頭の方,/.standardfonts[ から始まる部分のフォント14個の指定を以下のようにコメントアウト。

/.standardfonts [

%  /Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique

%  /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique

%  /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic

%  /Symbol /ZapfDingbats

] readonly def

 

2)c:\w32tex\share\texmf\dvipdfmx\config\dvipdfmx.cfg の内容変更

このファイルの中ほどにある,gs を用いて pdf を出力する configuration を指定している記述があります(下記参照)が,そこに以下の赤字で書いた内容を追加。

%% GhostScript (Windows):

D "gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o -c .setpdfwrite << /NeverEmbed [] >> -f %i -c quit"

また,同じファイルの下の方にある,font map file の読み込み指定で,デフォルトだとdlbase14.map がコメントアウトされているので,先頭の % を削除して dlbase14.map が読み込まれるようにする(これは解決策(1)に書いた -f オプションによる指定と同じ意味だと思いますが,cfg ファイルに書いておけばコマンドラインでいちいち指定しなくていいので、ずぼらな私にはこちらが合ってます)

 

dvipdfmx のバージョンによっては,.setpdfwrite のあとにもともと << /NeverEmbed [...] >> の記述があり,... の部分に1)の欧文14フォントが指定されているものもあるということで,「その場合は記載されていたフォントを消して、それらのフォントが埋め込まれるようにする必要がある」という web 情報を参考にしたのですが,私の dvipdfmx.cfg では /NeverEmbed 自体がもともと存在していなかったので,もしかしたら新しい dvipdfmx ではこれはしなくていいのかもしれません。

 

 ただ、bunta の手元ではこれで symbol フォントも含めフォントが pdf に埋め込まれるようになりました。

 

(bunta未解決疑問)文字コードからfontの対応関係を与える cmap ファイルと,*.map は別物?

MATLAB のスタートアップファイル startup.m

MATLABで eps を吐き出す場合等の環境設定のため,$USER/MATLAB の下に startup.m を作り,必要な設定を書いておくと良いそう。現状

 

set(0,'defaultAxesFontSize',14);

set(0,'defaultAxesFontName','century');

set(0,'defaultTextFontSize',14);

set(0,'defaultTextFontName','century');

 

の4行を記入。今後便利なものを見つけたら鋭意追加予定。

PCへのART-LINUXのインストール

ART-Linux のインストールで困ったことの解決策を書いておきます。対象は debian 6.0 (squeeze) です。

◎ カーネルのリビルド

  配布されている art-linux のカーネルは,modversion が有効になっているため,その後追加ボードのドライバを入れようとすると,チェックサム (version string?) が合わなくて "invalid module format" というエラーが出て悩むことになる。そこで,カーネルの再構築を行う。

  • 産総研 art-linux のHPから,カーネル本体にソースとヘッダを頂いてきてインストール。ソースはbz2ができるだけなので,その後は手動展開。ソースには /usr/src/linux でアクセスできるようリンク貼る。

  • cd /usr/src/linux をして,cp /boot/config-2.6.32-art .config により art カーネルの設定ファイルを作っておく。

  • apt-get install build-essentials kernel-packages libncursese-dev として必要なツールを入れておく。

  • make-kpkg clean ののち,make menuconfig し,以下の項目を変更のうえ,.configを更新保存。

   1)Loadable module support の中に入り,versioning に関する項目(デフォルト     では選択された状態)のチェックを外す【重要

   2)Processor feature の中に art のリアルタイム関係の設定可能項目がある。デフォルトだとタスク実行の最小周期は 1000 [micro sec] に設定されているので,それより短い時間を望む場合は1000よりも小さい数字にしておく。実行周期設定の限界がどの変化は不明だが、あまり短いとタスク本体の実行に支障が出るのでは?

  • make-kpkg --append-to-version hoge kernel-image とし,コンパイルが終わるのをお茶を飲みながら待つ。append-to-version に文字列をつけるのは重要(hogeは好きなものに入れ替えてね)。これをしておかないと,新たにビルドされたモジュールなどが /lib/modules/2.6.32-art に上書きされてしまい,最悪1からやり直しになる。
  • コンパイルが終わったら /usr/src に *.deb なカーネルができているので,dpkg -i でインストール
  • ls /lib/modules とすると,出来上がった新しいカーネルに対応する新しいフォルダができているはず。それをhogehogeとすると
    update-initramfs -c -k hogehoge
    として,initrd.img (起動時に使う ramdisk のイメージ?)を作成。
  • 最後に update-grub2 とすれば,次回再起動時よりメニューに新しいカーネルが追加されてめでたしめでたし。

◎ nVidia 謹製 driver のインストール

       nVidia のドライバインストールパッケージは,X が起動していない状態でインストールすることを要求するので,"init 3" として数秒待ったが変化なし (-_-; web 情報で,debian では runlevel 2-4 に明確な規定がなく,デフォルト設定では runlevel 2 or 3 でも gdm3 (Xウィンドウマネージャ)が起動してしまうことが判明。そこで以下のような手段でこれを回避した。

  • cd /etc/rc2.d し,mv S20gdm3 stopS20gdm3 とする。/etc/rc3.d にある S20gdm3 にも同じ処理をする。
  • init 3 を実行(だめなら一度リブートすると,ランレベル2で止まりコンソールログイン待ち状態で止まるはず)
  • ログインして root になり sh ./NVIDIA-***.sh を実行する。すでに versioning サポートを外してあるので問題なくモジュールの構築ができるはず。
  • インストールスクリプトが無事終わったら,名前を書き換えた S20gdm3 を元に戻しておく。

 さすがに,きちんとフルスクリーン使えるようになると見栄えが違いますね(笑)