Mac emacs PostSrcipt印刷 日本語文字化け対策2023-01-22

Machine : MacBookPro (2019)
OS Ventura 13.1

Install
emacs 28.2
TexShop 5.10
Printer CANON G5030

emacsから印刷する際に、postscriptを指定すると日本語が文字化けしてました。
長めのソースを印刷する場合など、emacsが色付けしてくれているそのままを印刷できると読みやすくて嬉しいのです。
ネットを見たら悩んでいる人は多いらしく、いろんな記述がありましたが、印刷がモノクロだったり、結局文字化けがあったりで私の環境ではなかなか上手くいきませんでした。
ns-printなら文字化けしないのですが、フォントが大きくてその分紙の無駄が多いし、何より美しくありません。
(ps-print-buffer)や(ps-spool-buffer)してからの(ps-despool)なども試したのですが、全て印刷出力のところで文字化けしてしまいます。
なんとかたった一つだけ、次の手順で処理すれば文字化けせずに美しい印刷ができました。
M-x ps-spool-buffer-with-faces とやって、できた*PostScript*というバッファに移動し、そのバッファに名前をつけて保存し、それをTexShop付属のps2pdfにてPDF化してから印刷するという手順です。


この一連の処理をショートカットキーに登録して呼び出せるようにしました。
https://club.jidaikobo.com/knowledge/129.html   <--このサイトの記述を参考にさせてもらいました。時代工房さんの2013年頃の記述ですが、2023現在は途中のフォントの設定は不要になっています。
最後の部分に記載されていたemacs-lispのソースを流用させていただきました。

.emacs.d/init.el に次の記述を入れました。
(global-set-key (kbd-"s-P")
       (lambda ()
       (interactive)
       (when (and
             (yes-or-no "PSprint current buffer?")
             (or 
             (<== (length (buffer-string)) 25000)
              (and (> (length (buffer-string)) 25000)
                 (yes-or-no "Buffer is large. It'd use lots of paper. Still do it?"))))
               (ps-spool-buffer-with-faces)
;;               (sleep-for 3.0)
               (set-buffer "*PostScript*")
               (write-file "psprint.ps")
               (shell-command-to-string
                 (mapconcat #'shell-quote-argument
                  (list "ps2pdf" "psprint.ps") " "))
                 (mapconcat #'shell-quote-argument
                  (list "lpr" "psprint.pdf") " "))
                )))
(setq ps-paper-type 'a4small)

[Shift]+[Command]+[P]キーでインタラクティブにpostscriptでカラー印刷します。
編集しているファイルと同じフォルダーにpsprint.ps とpsprint.pdfという二つのファイルが作成されます。psprint.pdf がプリンタに送っている本体ですので、必要な場合は名前を変えて保存しておいてください。
途中の行にある3秒スリープはコメントアウトしてありますが、大きなファイルを印刷する場合に必要かと思って残しています。私の環境では25Kbyteまでやってみて不要でした。
最後の行は、印刷サイズでa4を指定すると何故かヘッダ上部が欠けて印刷されていたので、a4smallにしてみたらいい具合におさまりました。私の環境だけかもしれませんので不要でしたら入れなくていいです。