Emacs:如何打印UTF-8格式的缓冲区

5
在Emacs中,关于UTF-8的所有工作都非常顺利。问题是,我有时候想打印一封包含Unicode字符的电子邮件(我使用mu4e作为我的MUA)。
我通常会在mu4e:view缓冲区中看到以下内容:
    From: A Person
    To: Me
    Subject: Notes on Chapter 9
    Date: Tue 22 Sep 2015 13:46:44 CEST
    Maildir: /mymaildir/INBOX
    User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

       “for open platforms” -> “for \textit{open platforms}, as defined in
        [123].  Such platforms include frobbing devices and home-assistant
        foobars.”

问题是,当我执行M-x ps-print-buffer命令时,纸张上的实际输出结果如下:

    ...

      ? ?for open platforms? -> ?for \textit{open platforms}, as defined in
        [123].  Such platforms include frobbing devices and home-assistant
        foobars.?

有人知道我该如何打印出与屏幕上一样的内容吗?经过一番搜索,我没有找到任何相关指导。

2个回答

2
有一个简单的解决方案,可能会产生令人满意的结果,也可能不会。Emacs知道如何使用GNU Intlfonts,这使得非ASCII字符可以被打印出来。
Intlfonts是位图字体,不是最漂亮的字体。对于只有偶尔使用非ASCII字符(引号、符号等)的ASCII文本,它们可能效果不错,但对于使用非拉丁字母的文本,结果并不好看(文本确实呈现正确,只是不够美观)。
要尝试它,请先安装字体。安装方式取决于操作系统及其发行版;例如Ubuntu:
sudo apt-get install emacs-intl-fonts

接下来调整以下Emacs设置:

(setq ps-multibyte-buffer :bdf-font-except-latin)
(setq bdf-directory-list "/usr/share/emacs/fonts/bdf")

第一个变量指示Emacs在非拉丁字符上使用Intlfonts。第二个变量指定字体的位置(确保设置正确,否则Emacs会默默地忽略该设置)。

尽管某些来源(例如M-x describe-variable ps-mule-font-info-database这些页面)表明可以配置ps-print以其他方式打印非ASCII字符而不是使用Intlfonts,但我未能找到正确的配置。如果您找到了,请告诉我。

顺便说一下,直接调用lpr-buffer似乎可以正常打印国际字符。


太好了,谢谢!尝试使用lpr-buffer后,我甚至不需要使用Intlfonts。它的表现已经足够好了(è仍然是一个方框,但像“”这样的字符打印得很好)。 - RogerTheDragon
lpr-buffer点赞 - dat

0

在mu4e中的另一种方法是使用view-in-browser(在视图中按'a V'),然后从那里打印。

或者,如果您有msg2pdf(mu的可选部分),您可以将其转换为pdf(在视图中按'a v'),然后在某个可以打印的查看器中打开生成的pdf。

(下面的函数可能对此很方便)

(defun xdg-open () "使用xdg-open打开当前文件。" (interactive) (when (buffer-file-name) (shell-command (format "xdg-open %s" (shell-quote-argument (buffer-file-name))))))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接