在 Emacs 中,如何向 ps-print 添加自定义 TrueType 字体?

在 Emacs 中,如何向 ps-print 添加自定义 TrueType 字体?

我正在定制 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)打印。

相关内容