web-dev-qa-db-ja.com

Emacsでは、カスタムTrueTypeフォントをps-printに追加するにはどうすればよいですか?

私は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
Clément

上記のコードがHelveticaで機能する理由は、HelveticaがPostScriptの標準フォントの1つであるためです。通常、PostScriptで常に使用できる3つのフォント(Times Roman、Helvetica、Courier)があります。

新しいフォントの追加は、ソフトウェアによって異なります。 PostScript Type 1 フォントをターゲットデバイスにダウンロードするものもあります( [〜#〜] ttf [〜#〜] フォントは通常ダウンロードする前に変換されます)が、それはフォントを受け入れることができるターゲットデバイスを持っている。もう1つの方法は、ソフトウェアがドキュメントを一連のベクトルとして描画することです。

PDFは、フォント(またはスペースを節約するためにそのサブセット)をドキュメントに埋め込むことができるという点で、最初の方法と同様のシステムを使用します。

Emacsでそれを行う方法はよくわかりませんが、フォントの場所と埋め込み方法をEmacsに伝える必要があると思います。おそらくPostscript Type1に事前変換することもできます。

[〜#〜] tbh [〜#〜] 、PostScript用のLaTeXを調査するのが最善です/ PDF印刷。

0
Majenko

これは私にとってはうまくいきました(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)

幸運を!

2
23emacs

4年後、これを達成するための最良の方法は、Emacsの外部から印刷することだと思います。

Emacsから.psを生成する代わりに、最初にバッファーのhtmlコピーを生成し(htmlfontify-bufferを使用)、次にお気に入りのWebブラウザーから印刷します。

1
Clément