¿Puedo tomar capturas de pantalla vectoriales (SVG) de Emacs?

15

El gtk-vector-screenshotprograma se puede utilizar para tomar capturas de pantalla vectoriales de aplicaciones Gtk-3. Parece funcionar al pedirle a la aplicación que se vuelva a dibujar en un lienzo SVG.

Emacs en GNU / Linux se puede construir con Gtk +, pero intentar usar la aplicación mencionada anteriormente en una ventana de Emacs da como resultado una captura de pantalla que solo contiene elementos GUI como la barra de menú; los buffers no se procesan (lo intenté con y sin Cairo). Esto no es demasiado sorprendente, dado que la representación del búfer de Emacs ocurre a un nivel bastante bajo.

Aún así, ¿hay alguna manera de tomar capturas de pantalla vectoriales escalables de Emacs ?

Clemente
fuente

Respuestas:

2

De acuerdo con la documentación, los widgets Gtk + en Emacs son:

  • menús,
  • diálogos,
  • barras de herramientas y
  • barras de desplazamiento

Los buffers son prestados por Emacs. Ni el búfer ni las líneas en un búfer son widgets Gtk +. Esto significa que no saben nada sobre la funcionalidad de exportación de los widgets Gtk +.

Lo mejor que puede hacer es usarlo htmlfontify-bufferpara incrustar el HTML generado en su SVG que contiene los widgets. Pero esto requerirá un trabajo adicional para fusionar el HTML y SVG. Pero tenga en cuenta que htmlfontify-buffertambién tiene algunas limitaciones y no funciona con cada búfer.

ceving
fuente
No estoy seguro de que esto responda la pregunta. Hice mención take-vector-screenshotcomo un ejemplo, pero también he mencionado que no era sorprendente que no funcionó. htmlfontify-buffertiene demasiadas limitaciones para calificar realmente (no representará superposiciones, cadenas de visualización, ajustes de línea, retroceso de fuente, etc.)
Clément
1
@ Clément La respuesta corta es: de ninguna manera.
ceving
¿Es esta opinión personal, o tiene evidencia para respaldar esa afirmación? Dado el número de backends de renderizado (El Cairo, directamente a través de X, Gtk, etc.) que tiene Emacs, uno podría imaginar que un ligero ajuste a uno de ellos podría ser suficiente.
Clément
2
@ Clément Gtk + puede renderizar a SVG, porque Gtk + usa Cairo, que tiene un back - end para SVG. Emacs no usa Cairo para la representación del búfer. Pero hay una rama experimental para El Cairo. Quizás en el futuro cercano sea posible.
ceving
1

¡Es posible en las construcciones de El 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.
Clemente
fuente