ラベル PostScript の投稿を表示しています。 すべての投稿を表示
ラベル PostScript の投稿を表示しています。 すべての投稿を表示

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に
変換されます