EUC で記述し、EUC-H、EUC-V のフォントを使用すれば日本語をそのまま表示することが出来ます。
%!PS-Adobe-3.0 EPSF-3.0 % bluebook P40 Chapter 5: PRINTING TEXT % EUC で保存。 % mm の定義 % 10 mm と記述すれば 10 * 2.834645669 の値となり、10 mmをポイントで表現した数字になります。 /mm {2.834645669 mul} def % A4 が297mmですのでそこから20 mm下から書きはじめます。 % そのための定義 /verticalPosition 297 mm 20 mm sub def % A4 297mm % 左横25 mmあけるための定数定義。 /horizontalPosition 25 mm def % 高さから20ポイント引いたのが新しい高さになり、その位置に % 移動します。 /newline { /verticalPosition verticalPosition 20 sub def horizontalPosition verticalPosition moveto } def % 横位置から20ポイント引いたのが新しい横位置になり、その位置に % 移動します。(20ポイント左にずれる) /newrow { /horizontalPosition horizontalPosition 20 sub def horizontalPosition verticalPosition moveto } def % 指定されたフォントを用い20ポイントの大きさで文字列を表示し、改行する。 % 1:使用する前に表示する文字列をスタックに積み、 % 2:フォント名をスタックに積む。 /putStrLn { findfont 20 scalefont setfont show newline } def % 横バージョン /putStrNrow { findfont 20 scalefont setfont show newrow } def horizontalPosition verticalPosition moveto (Times-Roman 20 point) /Times-Roman putStrLn (Times-Bold 20 point) /Times-Bold putStrLn (Times-Italic 20 point) /Times-Italic putStrLn (Times-BoldItalic 20 point) /Times-BoldItalic putStrLn (Helvetica-Oblique 20 point) /Helvetica-Oblique putStrLn (Helvetica-Bold 20 point) /Helvetica-Bold putStrLn (Helvetica-BoldOblique 20 point) /Helvetica-BoldOblique putStrLn (Courier 20 point) /Courier putStrLn (Courier-Oblique 20 point) /Courier-Oblique putStrLn (Courier-Bold 20 point) /Courier-Bold putStrLn % Windows にインストールしたGhostScriptならC:\Program Files\gs\gs9.06\lib\cidfmap % に記述されているフォントを使用できます。 (MS-Gothic-EUC-H 日本語の表示 20 point) /MS-Gothic-EUC-H putStrLn (MS-Mincho-EUC-H 日本語の表示 20 point) /MS-Mincho-EUC-H putStrLn newline % GsViewのOptions -> Advanced Configure -> GhostScript Options に -dWINKANJI % を加えれば縦書きの句読点も正しく表示されます。 % そうすると横書きが文字化けします。Ryumin-Light、GothicBBB-Mediumでなければ % 大丈夫なようです。MS-Gothic、MS-Minchoなら文字化けしません。内部のフォントは % 同じものですが、Ryumin-Light、GothicBBB-Mediumについてのみ縦書きの処理をして % いるようです。 % 縦書きの表示開始位置を指定します。 /horizontalPosition 210 mm 25 mm sub 20 sub def % A4 幅210mm 右スペース 25mm 文字幅 20 horizontalPosition verticalPosition moveto (日本語の表示) /GothicBBB-Medium-EUC-V putStrNrow (吾輩は猫である。名前はまだない。) /Ryumin-Light-EUC-V putStrNrow % for ループです。初期値 0 から 30ずつ増加して330まで。 % 300 200 moveto gsave はスタックを消費しませんので、forが生成した値は % rotate が使用します。 0 30 330 {300 200 moveto gsave rotate ( 日本語の表示。) show grestore} for showpage
- Cygwin + Ghostscrpit + Windows TrueTypeフォント ps2pdf でPDFに変換できます。基本的に指定されたパス以外のフォントは読み込めないようになっているので、挙動を変えるために、-dNOSAFER オプションを付けます。
$ ps2pdf -dNOSAFER hoge.ps
ps2pdf は縦書き日本語の句読点位置の問題には対応していません。ps2pdf は ps2pdf14 を呼んでいて、さらに ps2pdfwrを呼んで、さらに gswin32c を呼んでいます。GsView に-dWINKANJIのオプションをつけると縦書きでも句読点の表示が正しくなるのですが、ps2pdf に-dWINKANJIを加えると固まってしまいます。