我正在定制 Emacs 以打印到后记自定义面孔。我发现此引用,解释了如何添加 Helvetica。 到 emacs ps-print
。
我正在尝试使用康索拉,因此我使用了以下代码:
;; Add Consolas to supported printing fonts.
(require 'ps-print)
(setq ps-font-info-database
(append
'((Consolas
(fonts (normal . "Consolas")
(bold . "Consolas-Bold")
(italic . "Consolas-Italic")
(bold-italic . "Consolas-BoldItalic"))
(size . 10.0)
(line-height . 10.48)
(space-width . 5.51719)
(avg-char-width . 5.51719)))
ps-font-info-database))
文档打印时没有错误,但它使用默认字体而不是 Consolas。当我将 PostScript 文档转换为 PDF,然后将文本从 PDF 文件复制到开发办公室,我确实得到了 Consolas,但在 PDF 中文本显示为类似导游。
我应该使用哪个名字?Consolas-bold
错了吗?我在网上找不到有关此问题的任何信息。
答案1
上述代码适用于 Helvetica 的原因是 Helvetica 是 PostScript 中的标准字体之一。PostScript 中通常有三种字体始终可用 - Times Roman、Helvetica 和 Courier。
添加新字体取决于软件。有些软件会下载PostScript 类型 1字体到目标设备(特福字体通常在下载前进行转换),但这取决于目标设备是否能接受字体。另一种方法是让软件将文档绘制为一系列矢量。
PDF 使用与第一种方式类似的系统,它可以将字体(或其子集以节省空间)嵌入到文档中。
我不太清楚如何在 Emacs 中做到这一点,但我希望你需要告诉 Emacs 字体的位置以及如何嵌入它 - 甚至可能将其预先转换为 Postscript Type 1。
老实说,您最好研究一下 LaTeX 的 PostScript / PDF 打印。
答案2
这对我有用(Emacs 23.3.1 / Windows 7 64x)[仍然在与颜色输出搏斗]:
;; Printing
(require 'ps-print)
(setq printer-name '"USB001")
(setq ps-printer-name t)
(setq ps-lpr-command "g:/dev/bin/ghostscript/gs9.04/bin/gswin64c.exe")
(setq ps-lpr-switches '("-q" "-dNOPAUSE" "-dBATCH"
"-sDEVICE=mswinpr2"))
;; Add Consolas
(setq ps-font-info-database
(append
'((Consolas
(fonts (normal . "Consolas")
(bold . "Consolas-Bold")
(italic . "Consolas-Italic")
(bold-italic . "Consolas-Bold-Italic"))
(size . 11.0)
(line-height . 13.0)
(space-width . 6.04688)
(avg-char-width . 6.04688)))
ps-font-info-database))
(setq ps-font-family 'Consolas)
(setq ps-font-size 11)
;; Print in color
(setq-default ps-print-color-p t)
;; Page layout: Header [file-name 2011-12-05]
;; Footer [ n/m]
;; Header
(setq ps-header-lines 1)
(setq ps-header-font-size 11)
(setq ps-header-title-font-size 11)
(setq ps-header-font-family 'Consolas)
(setq ps-right-header '(ps-time-stamp-yyyy-mm-dd))
(setq ps-print-header-frame nil) ; no box top
;; Footer
(setq ps-footer-lines 1)
(setq ps-footer-font-size 11)
(setq ps-footer-font-family 'Consolas)
(setq ps-print-footer t)
(setq ps-left-footer nil)
(setq ps-right-footer (list "/pagenumberstring load"))
(setq ps-footer-offset .50)
(setq ps-footer-line-pad .50)
(setq ps-print-footer-frame nil) ; no box bottom
;; Keystroke to print
(global-set-key (kbd "C-|") 'ps-print-buffer-with-faces)
祝你好运!
答案3
4 年后,我认为实现此目的的最佳方法是从 Emacs 外部进行打印。
不要.ps
从 Emacs 生成,而是先生成缓冲区的 html 副本(使用htmlfontify-buffer
),然后从您最喜欢的 Web 浏览器(Mx browse-url-of-file
)打印。