3

Я настраиваю Emacs для печати в PostScript с настраиваемыми лицами. Я нашел эту ссылку, которая объясняет, как добавить Helvetica. К emacs ps-print .

Я пытаюсь использовать Consolas, поэтому я использовал следующий код:

;; 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 в OpenOffice, я получаю Consolas, но в PDF текст отображается как что-то вроде Courier.

Какие имена я должен использовать? Неужели Consolas-bold не прав? Я не смог найти в Интернете ничего об этой проблеме.

3 ответа3

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)

Удачи!

1

4 года спустя, я думаю, что лучший способ добиться этого - это печатать из-за пределов Emacs.

Вместо того, чтобы создавать .ps из Emacs, сначала создайте html-копию буфера (используя htmlfontify-buffer), а затем распечатайте его из вашего любимого веб-браузера.

0

Причина того, что приведенный выше код будет работать для Helvetica, заключается в том, что Helvetica является одним из стандартных шрифтов в PostScript. Обычно у вас есть три шрифта, которые всегда доступны в PostScript - Times Roman, Helvetica и Courier.

Добавление новых шрифтов зависит от программного обеспечения. Некоторые загружают шрифт PostScript Type 1 на целевое устройство (шрифты TTF обычно преобразуются перед загрузкой), но это зависит от наличия целевого устройства, которое может принимать шрифты. Другой способ для программного обеспечения нарисовать документ в виде серии векторов.

PDF использует систему, аналогичную первому способу, в которой он может встраивать шрифт (или его подмножество для экономии места) в документ.

Я не совсем знаю, как это сделать в Emacs, но я ожидаю, что вам нужно будет сообщить Emacs, где расположен шрифт и как его встраивать - возможно, даже предварительно преобразовать его в Postscript Type 1.

TBH, вам лучше всего исследовать LaTeX для печати PostScript / PDF.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .