Wie fügt man in Emacs ps-print benutzerdefinierte TrueType-Schriftarten hinzu?

1480
Clément

Ich passe Emacs an, um mit benutzerdefinierten Gesichtern nach PostScript zu drucken . Ich habe diese Referenz gefunden, die erklärt, wie man Helvetica hinzufügt. Um Emacs ps-print.

Ich versuche Consolas zu verwenden, deshalb habe ich folgenden Code verwendet:

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

Das Dokument wird ohne Fehler gedruckt, es werden jedoch Standardschriftarten anstelle von Consolas verwendet. Wenn ich das PostScript-Dokument in PDF konvertiere und dann Text aus der PDF-Datei in OpenOffice kopiere, bekomme ich Consolas, aber in der PDF-Datei wird der Text in etwa wie Courier angezeigt .

Welche Namen soll ich verwenden? Ist Consolas-boldfalsch Ich konnte im Internet nichts über dieses Problem finden.

3
Ich weiß * nichts * über emacs, aber hast du es ohne die Bindestriche versucht, zB "Consolas Bold"? Jared Harley vor 13 Jahren 0

3 Antworten auf die Frage

2
23emacs

Das funktionierte für mich (Emacs 23.3.1 / Windows 7 64x) [immer noch mit Farbausgabe zu ringen]:

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

Viel Glück!

1
Clément

4 Jahre später denke ich, der beste Weg, dies zu erreichen, ist den Druck von außerhalb von Emacs.

Generieren Sie anstelle .psvon Emacs eine HTML-Kopie des Puffers (mit htmlfontify-buffer), und drucken Sie dann über Ihren bevorzugten Webbrowser.

Können Sie etwas näher erläutern, was dies bedeutet? Scott vor 8 Jahren 0
@Scott: Fertig besser? Clément vor 8 Jahren 0
Ich denke schon Scott vor 8 Jahren 0
0
Majenko

Der Grund, warum der obige Code für Helvetica funktionieren würde, ist, dass Helvetica eine der Standardschriftarten in PostScript ist. Normalerweise haben Sie drei Schriftarten, die in PostScript immer verfügbar sind - Times Roman, Helvetica und Courier.

Das Hinzufügen neuer Schriftarten hängt von der Software ab. Einige laden eine PostScript Type 1- Schriftart auf das Zielgerät herunter ( TTF- Schriftarten werden vor dem Herunterladen normalerweise konvertiert), dies hängt jedoch davon ab, ob ein Zielgerät vorhanden ist, das Schriftarten akzeptieren kann. Die andere Möglichkeit besteht darin, dass die Software das Dokument als eine Reihe von Vektoren zeichnet.

PDF verwendet ein ähnliches System wie die erste Methode, indem es die Schriftart (oder eine Teilmenge davon, um Platz zu sparen) in das Dokument einbetten kann.

Ich weiß nicht genau, wie es in Emacs geht, aber ich würde erwarten, dass Sie Emacs mitteilen müssen, wo sich die Schriftart befindet und wie sie eingebettet wird. Vielleicht konvertieren Sie sie sogar in Postscript Type 1.

TBH, Sie sollten LaTeX am besten für den PostScript / PDF-Druck untersuchen.

Danke für deine Antwort! Emacs ist derzeit jedoch das einzige Programm, das Syntax-Highlighting für meine Sprache implementiert. Daher möchte ich aus diesem Grund in pdf drucken. Ich habe versucht, die Schrift in Ghostscript zu installieren, konnte mir aber nicht vorstellen, wie ich das tun soll. Könnten Sie mir ein paar Details geben? Alles, was Emacs macht, ist, Postscript zu generieren und dann ps2pdf aus dem ghostscipt-Paket aufzurufen. Clément vor 13 Jahren 0