В Emacs, как добавить пользовательские шрифты TrueType в ps-print?

1413
Clément

Я настраиваю 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
Я ничего не знаю об emacs, но вы пробовали это без черточек, например, "Consolas Bold"? Jared Harley 13 лет назад 0

3 ответа на вопрос

2
23emacs

Это сработало для меня (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
Clément

4 years later, I think the best way to achieve this is to do the printing from outside Emacs.

Instead of generating a .ps from Emacs, generate an html copy of the buffer first (using htmlfontify-buffer), then print from your favourite web browser.

Можете ли вы дать некоторые подробности о том, что это значит? Scott 9 лет назад 0
@ Скотт: Готово; лучше? Clément 9 лет назад 0
Я так думаю. Scott 9 лет назад 0
0
Majenko

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

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

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

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

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

Спасибо за Ваш ответ! Тем не менее, Emacs в настоящее время является единственной программой, которая реализует подсветку синтаксиса для моего языка, поэтому я хочу печатать из нее в формате pdf. Я пытался установить шрифт в ghostscript, но я не мог понять, как это сделать. Не могли бы вы дать мне несколько деталей? Все, что делает Emacs - это генерирует postscript, а затем вызывает ps2pdf из пакета ghostscipt. Clément 13 лет назад 0

Похожие вопросы