2015-09-23 233 views
4

在Emacs中,关于UTF-8,一切似乎都工作得很好。问题是,我有时想打印出一个包含Unicode字符的电子邮件(我使用mu4e作为我的MUA)。Emacs:打印一个UTF-8缓冲区

我通常会碰到这样的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-xps-print-buffer,在纸面上的物理输出是这样的:

... 

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

有人知道我可以如何打印,以便它看起来像我的屏幕上一样?在一些Startpaging/DuckDuckGoing之后,我还没有设法找到任何指针。

回答

1

有一个简单的解决方案,可能会或可能不会令人满意的结果。 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-databasethesepages)表明可以配置ps-print以使用Intlfonts以外的方式打印非ASCII字符,但我找不到正确的配置。请让我知道,如果你找到一个。

顺便说一下,调用lpr-buffer直接似乎打印国际字符就好了。

+0

很好,谢谢!尝试使用'lpr-buffer'后,我甚至不需要使用Intlfonts。它能够很好地完成这项工作('è'仍然是一个盒子,但是像''“'这样的字符可以很好地打印出来)。 – RogerTheDragon

+0

赞成lpr缓冲区 – dat

0

mu4e的另一种方法是使用浏览器中的视图(视图中的'V'),然后从那里打印出来。

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

(以下功能可以很方便的为)

(defun xdg-open() "Open current file with xdg-open." (interactive) (when (buffer-file-name) (shell-command (format "xdg-open %s" (shell-quote-argument (buffer-file-name))))))