Trong Emacs, làm thế nào để thêm phông chữ TrueType tùy chỉnh vào bản in ps?


3

Tôi đang tùy chỉnh Emacs để in lên PostScript với các mặt tùy chỉnh. Tôi đã tìm thấy tài liệu tham khảo này , giải thích cách thêm Helvetica. Để emacs ps-print.

Tôi đang cố gắng sử dụng Consolas , vì vậy tôi đã sử dụng đoạn mã sau:

;; 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))

Tài liệu in không có lỗi, nhưng nó sử dụng phông chữ mặc định thay vì Consolas. Khi tôi chuyển đổi tài liệu PostScript thành PDF, sau đó sao chép văn bản từ tệp PDF sang OpenOffice , tôi nhận được Consolas, nhưng trong PDF, văn bản hiển thị dưới dạng Courier .

Tôi nên sử dụng tên nào? Là Consolas-boldsai? Tôi không thể tìm thấy bất cứ điều gì trên web về vấn đề này.


Tôi không biết về emacs, nhưng bạn đã thử nó mà không có dấu gạch ngang, ví dụ "Consolas Bold"?
Jared Harley

Câu trả lời:


0

Lý do mà đoạn mã trên sẽ hoạt động với Helvetica là vì Helvetica là một trong những phông chữ tiêu chuẩn trong PostScript. Bạn thường có ba phông chữ luôn có sẵn trong PostScript - Times Roman, Helvetica và Courier.

Thêm phông chữ mới phụ thuộc vào phần mềm. Một số người sẽ tải xuống phông chữ PostScript Type 1 cho thiết bị đích ( phông chữ TTF được chuyển đổi trước khi tải xuống thường xuyên), nhưng điều đó phụ thuộc vào việc có một thiết bị đích có thể chấp nhận phông chữ. Một cách khác là phần mềm vẽ tài liệu dưới dạng một loạt các vectơ.

PDF sử dụng một hệ thống tương tự như cách đầu tiên để nó có thể nhúng phông chữ (hoặc một tập hợp con của nó để tiết kiệm không gian) vào tài liệu.

Tôi hoàn toàn không biết làm thế nào để làm điều đó trong Emacs, nhưng tôi hy vọng bạn sẽ cần cho Emacs biết phông chữ được đặt ở đâu và làm thế nào để nhúng nó - thậm chí có thể chuyển đổi nó thành Postcript Type 1.

TBH , tốt nhất bạn nên điều tra LaTeX để in PostScript / PDF.


Cảm ơn câu trả lời của bạn! Tuy nhiên, Emacs hiện là chương trình duy nhất thực hiện đánh dấu cú pháp cho ngôn ngữ của tôi, do đó tôi muốn in thành pdf từ đó. Tôi đã thử cài đặt phông chữ trong ghostscript, nhưng tôi không thể tìm ra cách để làm như vậy. Bạn có thể cho tôi một vài chi tiết? Tất cả những gì Emacs làm là tạo ra postcript, và sau đó gọi ps2pdf từ gói ghostscipt.
Clément

2

Điều này làm việc cho tôi (Emacs 23.3.1 / Windows 7 64x) [vẫn vật lộn với đầu ra màu]:

;; 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)

Chúc may mắn!


1

4 năm sau, tôi nghĩ cách tốt nhất để đạt được điều này là in ấn từ bên ngoài Emacs.

Thay vì tạo một .pstừ Emacs, trước tiên hãy tạo một bản sao html của bộ đệm (sử dụng htmlfontify-buffer), sau đó in từ trình duyệt web yêu thích của bạn.


Bạn có thể cung cấp một số chi tiết về điều này có nghĩa là gì?
Scott

@ Hủy bỏ: Đã xong; tốt hơn?
Clément

Tôi đoán vậy.⁠⁠⁠⁠
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.