Emacs:打印 UTF-8 缓冲区

Rog*_*gon 5 printing unicode emacs utf-8

在 Emacs 中,关于 UTF-8 的一切似乎都运行良好。问题是,我有时想打印出一封包含 Unicode 字符的电子邮件(我使用 mu4e 作为我的 MUA)。

\n\n

我通常会在 a 中包含类似以下内容的内容mu4e:view:

\n\n
    From: A Person\n    To: Me\n    Subject: Notes on Chapter 9\n    Date: Tue 22 Sep 2015 13:46:44 CEST\n    Maildir: /mymaildir/INBOX\n    User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)\n\n      \xe2\x80\xa2 \xe2\x80\x9cfor open platforms\xe2\x80\x9d -> \xe2\x80\x9cfor \\textit{open platforms}, as defined in\n        [123].  Such platforms include frobbing devices and home-assistant\n        foobars.\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,当我这样做时M-x ps-print-buffer,纸上的物理输出如下所示:

\n\n
    ...\n\n      ? ?for open platforms? -> ?for \\textit{open platforms}, as defined in\n        [123].  Such platforms include frobbing devices and home-assistant\n        foobars.?\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人知道如何打印才能使其看起来与屏幕上的一样吗?经过一些 Startpaging/DuckDuckGoing 我还没有找到任何指针。

\n

sha*_*rov 2

有一个简单的解决方案,可能会也可能不会产生令人满意的结果。Emacs 知道如何使用 GNU Intlfonts,它允许打印非 ASCII 字符。

Intlfonts 是位图字体,并不是最漂亮的字体。它们可能适用于仅偶尔包含非 ASCII 字符(引号、项目符号等)的 ASCII 文本,但对于使用非拉丁字母的文本,结果看起来并不令人愉快(文本是,只是不正确)漂亮)。

要尝试一下,请先安装字体。执行此操作的方法取决于操作系统及其发行版;以 Ubuntu 为例:

sudo apt-get install emacs-intl-fonts
Run Code Online (Sandbox Code Playgroud)

然后调整以下 Emacs 设置:

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

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

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

顺便说一句,lpr-buffer直接打电话似乎可以打印国际字符。