テキスト文字の印刷にテキストからPostscriptに変換するa2psは大変便利です。 a2psのバージョン 4.10以降gettext化されていますのでこれも日本語NLSに対応 させました。 この版は日本で普及しているa2ps 1.39(Perlによるもの)と違い、さらにソー スなどを印刷すると字句解析してキーワードが目立つように違うフォントにな るので大変出力結果が見やすいです。
ただし、残念ながらこの版のa2psは日本語の印字には対応しておりません。せっ かく日本語NLSを作成してもこれでは意味がないので、しかたなしにその場し のぎで、これは片山 紀夫さんの fixeucfont のcompositefontのPostscriptを適当にカスタムして埋め込んで、 a2psで日本語が印刷できるようにしています。手を思いっきり抜いているので 2バイトEUCコードにべったり依存したコードしか書いておりません。
このパッチは a2ps-4.13-ja_nls.patch に置いておきます。a2ps-4.13bをベースに作成しています。 内部で倉光 君 郎さんによるlibjcodeを(適当にカスタムして)用いてEUC コードに変換するように処理するようにしていますのでユーザレベルでは JIS/SJIS/EUCを意識しなくていいようになっています。あと、簡略化のため、 libjcodeはパッチ内に含めてしまいました(いいのかな?)ので、パッチを当て たあと普通にconfigure, make すればいいと思います。
下に、このパッチを当てたa2psの出力例を載せておきます。 『a2ps -1』として印刷した例です。これが見やすいと思うかどうかは好みの 問題ですが‥‥。
さらに、
% a2ps --prologue=color ファイル |
a2ps
Linuxでは注意点がひとつあります。 a2psは印刷日時やファイル更新日時の出力にlibcにあるstrftime()関数を使っ ていて、このためシステムのLC_TIME データ(日付/時刻表示のためのロケールデータファイル)が参照されます。 個人的な趣味でこの部分もきちんと日本語化させたかったので、申し訳ありま せんが応急処置としてglibc用の私の作成したいんちきLC_TIMEデータ LC_TIME.glibcを /usr/share/locale/ja_JP.ujis/LC_TIME へコピーして下さい。古いlibc5だと、 このLC_TIMEです。 無くても動作はしますが、日本語LC_TIMEをコピーすると、 日付の表示が日本語の形式に従います。
こんなオンボロ日本語LC_TIMEロケールデータはいらない、無効にしたいとい う人は、パッチを当てた後、NLSファイル(po/ja.poファイル)中の
msgid "%A %B %d, %Y" msgstr "" |
もし、訳が気に入らなくて、自分でNLS用のPOファイル(テキスト)を作成し直 したい場合、ソースツリーのトップディレクトリ上で、
% cd po % make a2ps.pot % cp a2ps.pot ja.po |
% msgfmt -o ja.mo ja.po % cp ja.mo /usr/share/local/ja/LC_MESSAGES/a2ps.mo |
また、msgfmtやxgettextコマンド自体は GNU-gettext に含まれています。
このパッチはconfigureスクリプトだけでなく、その元になるconfigure.inや Makefile.inも改変してしまいます。そのため、パッチを当ててしまうと、勝 手にaclocalやautoconfが起動してしまい、おかしなconfigureスクリプトが再 作成されてしまってコンパイルできないという方がいるのではないかと思いま す。そういう場合、ちょっと反則的な方法ですが、パッチを当てた後、 configure実行前に(ソースツリーのトップで)
% touch `find $PWD` |
パッチデフォルトでは全角文字と半角文字の大きさのバランスは、 英字のフォントのサイズはオリジナルサイズのままにして、見た感じで適当に チューニングしています。ただし、全角半角のサイズ比が2:1になっていない ので、テキストで表を作成していて、それをa2psで通すとバラバラになってし まいます。その対処方法を書いておきます。 この場合、漢字フォント幅はオリジナルの大きさのままで、英字が若干小さめ になります。ただし、フォントの全体の大きさは『-f』オプションにて変更で きます。
インストール後、 $prefix/share/a2ps/encoding/euc-jp ($prefixにはデフォルトでは/usr/localが入ります)中に、
DefaultComposite: Ryumin-Light-EUC-H 1.0 1.1 |
他の太字フォントなども、例えば
Composite: Courier-Bold GothicBBB-Medium-EUC-H 1.0 0.8333 |
従来のPerl版からこのGNU a2ps 4.1x に移行する際、仕様が違うので注意して ください。Perl版a2psでは単なるフィルタとして動作しますが、このa2psでは、 いきなりプリンタへ出力します。そのため、
% a2ps ファイル -o 出力ファイル名 |
DefaultPrinter: | #{lp.default} |
DefaultPrinter: | cat |
あと、GNU版 a2ps の特徴に外部フィルタリング機能があります。 HTMLや、Texファイルを入力とした場合、Netscapeや、latexなどの外部アプリ ケーションを通して、自動的に整形したPostscriptを生成します。 ただ、日本語関係で必ずしもうまくいかないものもあり、これを止めさせたい 場合も多々あると思います。その場合、
% a2ps --delegate=no ファイル |