2013年11月9日土曜日

Mac OS XでGhostScriptを使わない、日本語PostScriptファイルのPDF化

よくPostScriptを手書きして、漢字の大きな文字とかを表示させて喜んでいるのですがw、Macで日本語フォントが化けてしまう現象にあたまを悩ませていました。
具体的にはGhostScriptのように、

/Ryumin-Light-EUC-H findfont 23 scalefont setfont
72 72 moveto (あ) show

と、EUCコードのファイルに書けば昔は漢字が簡単に出せたのですが、
最近のMacでは文字化けしてしまいます。


最近調査して、原因と対策が解りましたので、まとめます。
この方法を使えばGhostScriptをインストールすることなく、
Mac OS Xで、ヒラギノフォントをopenコマンドでPS->PDF変換
することが可能です。

端的に言ってしまうと:
・CMapをダウンロードしてきてPostScriptファイルにEmbeddedする
・composefont を使い、新しいフォントを生成する

ことで日本語を簡単に表示させることができ、ファイルをUTF8エンコーディング
で直接 (日本語)show  のようなことが出来るようになります。


1. 準備:

http://sourceforge.jp/projects/sfnet_cmap.adobe/releases/

より、日本語CMapファイルを取得します。
cmapresources_japan1-6.tar.z
がそのファイルとなります。


2. %%EOFを削る
展開して、aj16/CMap/UniJIS-UTF8-H ファイルを取り出し、
末尾の%%EOFを削ります。
後でこれをPostScriptファイルに貼付けるのですが、そのときに
こちらのCMapは変えずに貼付けてから%%EOFを削っても大丈夫です。

3. PostScriptファイルを手書きする

次のようなPostScriptファイルを作成します

%!PS-Adobe-3.0 EPSF-3.0
%APL_DSC_Encoding: UTF8
%%BoundingBox: 0 0 300 200
%%Title: postscript encoding sample
%%DocumentNeedResource: font Times-Italic
%%DocumentNeedResource: font HiraMinProN-W3
%%+ encoding UTF8Encoding
%%EndComments

/HiraMinProN-W3-UniJIS-UTF8-H
/UniJIS-UTF8-H /CMap findresource
[/HiraMinProN-W3 /CIDFont findresource]
composefont pop

/HiraMinProN-W3-UniJIS-UTF8-H
findfont
30 scalefont setfont

50 150 moveto
<40 41 42 43 44 45 46 47 48> show

50 100 moveto
(こんにちは) show
/Times-Italic findfont
20 scalefont setfont
100 10 moveto
(HiraKakuProN-W3) show
%%EOF


そして、%%EndCommentsの下に、先ほどダウンロードしたCMapファイル(UniJIS-UTF8-H)を貼付けます。%%EOFを削るのを忘れないでください

キモは、

/HiraMinProN-W3-UniJIS-UTF8-H
/UniJIS-UTF8-H /CMap findresource
[/HiraMinProN-W3 /CIDFont findresource]
composefont pop

のところ、CMapのfindresourceが通常は失敗するのでResourceとしてCMapを引用して与えると、CIDFontから新しいフォントを生成できます。
あとは従来の各種tutorialのやり方で文字を表示させるだけです。
PostScriptファイルをUTF8にしておけば、漢字だけでなく特殊な
Unicode文字も表示できます。

4. openコマンドか、ダブルクリックでPostScriptファイルを開く

そして、作ったhoge.psのようなpsファイルを開きます。すると自動的にPDFに
変換されます

4 件のコメント:

  1. CMapの場所(URL)が変わっているので注意です。Googleすると見つかると思います。
    基本的にファイル名などが若干違うだけで、やることは一緒です☆

    返信削除
  2. はじめまして。
    こちらの記事を参考にさせていただきました。自分なりにGhostScriptについてまとめた記事を書きました。もしよろしければ、ご覧になってみてください。

    http://xanadu62.blogspot.jp/2014/11/ghostscript.html

    それでは失礼します。

    返信削除
    返信
    1. どもですー。

      拝見致しました。gs関連のまとまった記述で、ステキな記事だと思います。

      フォント名関係って最終的にgs内のpsファイルいじらないといけなかったりで、大変ですよね。15年くらい前にFreeBSDでTrueType使うときに同じようなところでハマった記憶ありまするー。

      削除
    2. こんばんは。

      拙作の記事閲覧、ありがとうございます。
      PSファイルを見るなんてしないで、何から何までウェブ検索で書き上げたので、今更ながら慚愧に堪えない思いを抱きました。(^ ^;

      削除