わどぅー

記事については、中間出力の場合も多いので間違ってたらごめんなさい。twitter は waddlaw です。どうぞよろしく。

Ubuntu 12.10 + GhostScript 9.06 で Ricty を使う

a2ps で出力された ps ファイルを表示したときに、デフォルトのフォントだとなんかださいので Ricty にしてみました。

環境
 - Ubuntu 12.10
 - GhostScript 9.06

Ricty のインストールは以下のページを参考にしました。
 -プログラミング用の見やすいフォント「Ricty」をMacとUbuntuで生成 | Macとかの雑記帳
僕の場合、フォントのインストール先を

 $ cp Ricty-{Regular,Bold}.ttf ~/.fonts/

ではなく

 $ sudo mkdir /usr/share/fonts/truetype/ricty/
 $ sudo cp Ricty-*.ttf /usr/share/fonts/truetype/ricty/

としました。

フォントの設定
まず、cidfmap というファイルが無い場合は以下のように作成します。(僕は無かった)

 $ sudo touch /usr/share/ghostscript/current/Resource/Init/cidfmap

ファイルに以下の2行を追記します。

 /Ricty << /FileType /TrueType /CSI [(Japan1) 6] /Path (/usr/share/fonts/truetype/ricty/Ricty-Regular.ttf) >> ;
 /Ricty-Bold << /FileType /TrueType /CSI [(Japan1) 6] /Path (/usr/share/fonts/truetype/ricty/Ricty-Bold.ttf) >> ;

さらに、既存のファイルの内容もコピーします。下記のコマンドで表示された内容も追記しましょう。

 $ sudo cat /etc/ghostscript/cidfmap.d/90gs-cjk-resource-japan1.conf

表示させてみます。
以下の内容を test.ps として保存します。(文字列が枠内におさまるように文字列の横幅を自動調整する(PostScript)。 - sirocco の書いてもすぐに忘れるメモを参考にしました)

%!PS-Adobe-3.0 EPSF-3.0
/mm {2.834645669 mul} def

/verticalPosition   297 mm 20 mm sub def 
/horizontalPosition 25 mm  def

/newline { /verticalPosition verticalPosition 20 sub def
                   horizontalPosition verticalPosition moveto } def 

/putStrLn   { findfont 20 scalefont setfont show newline } def

horizontalPosition verticalPosition moveto
(main = putStrLn "日本語も大丈夫!") /Ricty-EUC-H putStrLn
(main = putStrLn "太字もチェック") /Ricty-Bold-EUC-H putStrLn

次に、文字コードEUC にします。

 $ nkf-e --overwrite test.ps

これでちゃんと表示できてれば OK です。

 $ evince test.ps
                                                                                                                                                  • -

ここからは個人的なこと。a2ps + ps2pdf で出力した際に日本語が文字化けるので何とかしてみた。
また、ソースコードの出力時のフォントを Ricty にした。
これでもう二度と何も言われないだろう。

まず、a2ps は EUC しか使えないらしい。ぐぐったら参考となる記述があったので使わせてもらいます。(404 Not Found)
ファイルに出力するバージョン (確認用)

 $ nkf -e <ファイル名> | env LANG=C a2ps -L 50 --prologue=color --line-numbers=1 -X euc-jp --header="Waddledooo" --footer="" --stdin="タイトル" -g -o <出力ファイル名> & evince <出力ファイル名>

プリンタに出力するバージョン (印刷用)

 $ nkf -e <ファイル名> | env LANG=C a2ps -d -L 50 --prologue=color --line-numbers=1 -X euc-jp --header="Waddledooo" --footer="" -g

ここまでで、日本語の印刷はちゃんとされるようになった。(たぶん ps2pdf が悪い)
次、フォントを変更することにする。僕の環境では test.ps をエディタで開くと以下の行があった。

706 % Dictionary for EUC-JP support
 707 /euc-jpdict 14 dict begin
 708   /fCourier EUC-JPEncoding /Ricty reencode_font
 709   /fCourier-Bold EUC-JPEncoding /Ricty-Bold reencode_font %キーワードのフォント
 710   /fHelvetica EUC-JPEncoding /Ricty reencode_font
 711   /fHelvetica-Bold EUC-JPEncoding /Ricty-Bold reencode_font
 712   /fTimes-Bold EUC-JPEncoding /Ricty-Bold reencode_font
 713   /fTimes-Roman EUC-JPEncoding /Ricty reencode_font
 714   /Ryumin-Light-EUC-H-Italic /Mika-EUC-H 0.200000 slantfont  definefont pop
 715   /GothicBBB-Medium-EUC-H-Italic /Mika-EUC-H 0.200000 slantfont  definefont pop
 716   /fCourier /fCourier /Mika-EUC-H 1.100000 0.000000 false  compositefont 0.909091 scalefont def %コメントのフォント
 717   /fCourier-Bold /fCourier-Bold /Ricty-EUC-H 1.100000 0.000000 false  compositefont 0.909091 scalefont def
 718   /fHelvetica /fHelvetica /Ricty-EUC-H 1.100000 0.000000 false  compositefont 0.909091 scalefont def
 719   /fHelvetica-Bold /fHelvetica-Bold /Ricty-EUC-H 1.100000 0.000000 false  compositefont 0.909091 scalefont def
 720   /fTimes-Bold /fTimes-Bold /Ricty-EUC-H 1.100000 0.000000 false  compositefont 0.909091 scalefont def
 721   /fTimes-Roman /fTimes-Roman /Ricty-EUC-H 1.100000 0.000000 false  compositefont 0.909091 scalefont def
 722 currentdict end def
 723 /bgcolor [ 0 0 0 ] def
 724 /bg false def
 725 /ul false def
 726 /bx false def
 727 % The font for line numbering
 728 /f# /Ricty-Bold findfont bfs .6 mul scalefont def %行番号のフォント
 729 /fSymbol /Symbol findfont def %記号のフォント

このへんの /Courier とかを /Ricty とかに変えればOK。あと色とかも変えれるみたい。

最終的には ps2pdf をやめて、lpr で ps ファイルを直接印刷することにしました。