vine-users ML アーカイブ



[vine-users:055986] Re: Emacs 21.2 で清書印刷ができない

  • From: Toshiyasu KOJIMA (小島登志泰) <t_kojima@xxxxxxxxxxxxx>
  • Subject: [vine-users:055986] Re: Emacs 21.2 で清書印刷ができない
  • Date: Wed, 20 Nov 2002 07:00:33 +0900
一応事実関係だけは把握できました。結論から言うと、エラーなく印刷
することができることは分かりました。

(require 'ps-mule)
(defalias 'ps-mule-header-string-charsets 'ignore)
(setq ps-multibyte-buffer 'non-latin-printer)

を.emacsに書き加えて印刷してみてください。ヘッダの日本語文字列は
化け化けでも、本文の日本語は救い出せます。
# 最初とかわらんじゃん? その通り。でも最初はなんで? と思ったんで
# すよぉ。以下参照。

3行めを、

(setq ps-multibyte-buffer 'bdf-font)

として、bdfフォントのありかを指定すれば、HELLOの言語は全て印刷で
きます。

以下、(中間|最終)報告です。
# 恥の上塗りみたいなもんだけど、Webで検索されたときに役立つことを
# 願ってポストします。トホホ...

私の環境には、Emacs20時代のps-printを半田剣一さんが機能拡張した別
のps-printが入っていて、気づかないままずっとそれを使っていました。
それでいて、ソースはEmacs21の方を読んでいたというマヌケな状態だっ
たので、本当はEmacs21ならどのバージョンでもエラーになるはずの状態
を再現できなかったようです。
# 半田さんのps-printは現状のEmacs21でも使えちゃうのです。
# ftp://ftp.m17n.org/pub/mule/.notready/ps-print.tar.gz
# ですが、お薦めしません。印刷結果は同じようなものだからです。

さて、状況ですが、Emacs21のps-mule.elがheader部分を作るときに
multibyte characterがあるかどうかを判定し、見つかったものは全て
`?'に置き換えるのですが、このとき同時にcharsetも判定し、それを
headerのフォントタグに反映してしまうということから不具合が発生
します。

/h0 14.000000 /Ryumin-Light-H DefAsciiFontMule

という /h0 がそれです。日本語だから、Ryumin-Light-Hですね。

菊池> ヘッダーの日本語は "2002?11?19?" になっていますが、本文の日本語は

これもその部分からきます。しかし、ps-printの吐くpostscriptファイ
ルは、ヘッダ部分に日本語を使えないという状態なので、エラーになり
ます。

だから、ps-mule-header-string-charsetsというcharsetの判定をする関
数を殺せば、上の2つの事態を避けることができるわけです。そのかわり、
日本語部分が`?'に置き換わらずにそのまま使われるので、文字化けする
ようになります。日付はformat-time-stringをいじればなんとかなって
も、たとえば、Wanderlustからメッセージを印刷するとなると、Subject
の日本語はどうにもなりません。

しかし、これはバグとは呼ぶのは難しいですね。日本語euc+asciiに特化
すれば、中国語その他が全滅になるということもあるのだろうと想像で
きるので...

# XEmacsはまた他の時に。VineのXEmacs21.4はちゃんと印刷できました。
# また、変なものを入れてる可能性は否定できないけど...
-- 
toshi