No Emacs, como adicionar fontes TrueType personalizadas ao ps-print?

3

Estou personalizando o Emacs para imprimir em PostScript com faces personalizadas. Eu encontrei esta referência , que explica como adicionar a Helvetica. Para emacs ps-print .

Estou tentando usar Consolas , então usei o seguinte código:

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

O documento é impresso sem erros, mas usa fontes padrão em vez de Consolas. Quando eu converter o documento PostScript para PDF e, em seguida, copiar o texto do arquivo PDF para OpenOffice , eu recebo Consolas, mas no PDF o texto é exibido como algo como Courier .

Quais nomes devo usar? Consolas-bold está errado? Não encontrei nada na Web sobre este problema.

    
por Clément 13.04.2011 / 10:40

3 respostas

0

O motivo pelo qual o código acima funcionaria para a Helvetica é que a Helvetica é uma das fontes padrão em PostScript. Você normalmente tem três fontes que estão sempre disponíveis em PostScript - Times Roman, Helvetica e Courier.

A adição de novas fontes depende do software. Alguns baixam uma fonte PostScript Type 1 para o dispositivo de destino (TTF são convertidas antes do download normalmente), mas isso depende de ter um dispositivo de destino que possa aceitar fontes. O outro jeito é que o software desenhe o documento como uma série de vetores.

O PDF usa um sistema semelhante à primeira maneira de incorporar a fonte (ou um subconjunto dela para economizar espaço) no documento.

Eu não sei como fazer isso no Emacs, mas eu esperaria que você precisasse dizer ao Emacs onde a fonte está localizada e como incorporá-la - talvez até mesmo pré-converta em Postscript Tipo 1.

TBH , seria melhor investigar o LaTeX para impressão PostScript / PDF.

    
por 13.04.2011 / 10:53
2

Isso funcionou para mim (Emacs 23.3.1 / Windows 7 64x) [ainda lutando com saída de cores]:

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

Boa sorte!

    
por 09.12.2011 / 03:46
1

4 anos depois, acho que a melhor maneira de conseguir isso é fazer a impressão de fora do Emacs.

Em vez de gerar um .ps do Emacs, gere uma cópia html do buffer primeiro (usando htmlfontify-buffer ), depois imprima a partir do seu navegador favorito.

    
por 14.11.2015 / 23:07