Posso prendere screenshot vettoriali (SVG) di Emacs?


15

Il gtk-vector-screenshotprogramma può essere utilizzato per acquisire screenshot vettoriali delle applicazioni Gtk-3. Sembra funzionare chiedendo all'applicazione di ridisegnare se stessa su una tela SVG.

Emacs su GNU / Linux può essere compilato con Gtk +, ma il tentativo di utilizzare la suddetta applicazione su una finestra di Emacs produce uno screenshot che contiene solo elementi della GUI come la barra dei menu; i buffer non sono renderizzati (ho provato con e senza Cairo). Questo non è troppo sorprendente, dato che il rendering del buffer di Emacs avviene a un livello piuttosto basso.

Eppure, c'è un modo per prendere screenshot vettoriali scalabili di Emacs ?

Risposte:


2

Secondo la documentazione, i widget Gtk + in Emacs sono:

  • i menu,
  • le finestre di dialogo,
  • barre degli strumenti e
  • barre di scorrimento

I buffer sono resi dallo stesso Emacs. Né il buffer né le righe in un buffer sono widget Gtk +. Ciò significa che non sanno nulla della funzionalità di esportazione dei widget Gtk +.

La cosa migliore che puoi fare è utilizzare htmlfontify-bufferper incorporare il codice HTML generato nel tuo SVG contenente i widget. Ma ciò richiederà del lavoro aggiuntivo per unire HTML e SVG. Tuttavia, tenere presente che htmlfontify-bufferpresenta anche alcune limitazioni e non funziona con tutti i buffer.


Non sono sicuro che questo risponda alla domanda. Ho citato take-vector-screenshotcome esempio, ma ho anche detto che non era sorprendente che non funzionasse. htmlfontify-bufferha troppe limitazioni per essere realmente qualificato (non visualizzerà overlay, stringhe di visualizzazione, wrapping di linee, fallback dei caratteri, ecc.)
Clément

1
@ Clément La risposta breve è: assolutamente no.
ceving il

È un'opinione personale o hai prove a sostegno di tale affermazione? Dato il numero di backend di rendering (Cairo, direttamente attraverso X, Gtk, ecc.) Che Emacs ha, si potrebbe immaginare che un leggero aggiustamento a uno di essi potrebbe essere sufficiente.
Clément,

2
@ Clément Gtk + può eseguire il rendering in SVG, perché Gtk + usa Cairo, che ha un backend per SVG. Emacs non utilizza Cairo per il rendering del buffer. Ma esiste un ramo sperimentale per il Cairo. Forse nel prossimo futuro potrebbe essere possibile.
ceving

1

È possibile nelle build del Cairo!

(x-export-frames FRAMES TYPE)

Return image data of FRAMES in TYPE format.
FRAMES should be nil (the selected frame), a frame, or a list of
frames (each of which corresponds to one page).  Each frame should be
visible.  Optional arg TYPE should be either `pdf' (default), `png',
`postscript', or `svg'.  Supported types are determined by the
compile-time configuration of cairo.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.