Kann ich Vektor-Screenshots (SVG) von Emacs machen?

15

Mit dem gtk-vector-screenshotProgramm können Vektor-Screenshots von Gtk-3-Anwendungen erstellt werden. Es scheint zu funktionieren, wenn die Anwendung aufgefordert wird, sich selbst auf eine SVG-Zeichenfläche neu zu zeichnen.

Emacs unter GNU / Linux kann mit Gtk + erstellt werden. Wenn Sie jedoch versuchen, die oben genannte Anwendung in einem Emacs-Fenster zu verwenden, wird ein Screenshot angezeigt, der nur GUI-Elemente wie die Menüleiste enthält. puffer werden nicht gerendert (ich habe es mit und ohne kairo versucht). Dies ist nicht allzu überraschend, da das Rendern von Emacs-Puffern auf einem relativ niedrigen Niveau erfolgt.

Gibt es dennoch eine Möglichkeit, skalierbare Vektor-Screenshots von Emacs aufzunehmen ?

Clément
quelle

Antworten:

2

Laut Dokumentation sind Gtk + Widgets in Emacs:

  • menüs,
  • dialoge,
  • Symbolleisten und
  • Bildlaufleisten

Puffer werden von Emacs selbst gerendert. Weder der Puffer noch die Zeilen in einem Puffer sind Gtk + Widgets. Dies bedeutet, dass sie nichts über die Exportfunktionalität von Gtk + Widgets wissen.

Das Beste, was Sie tun können, ist, htmlfontify-bufferden generierten HTML-Code in Ihre SVG-Datei mit den Widgets einzubetten. Dies erfordert jedoch einige zusätzliche Arbeiten zum Zusammenführen von HTML und SVG. Beachten Sie jedoch, dass dies htmlfontify-bufferauch einige Einschränkungen hat und nicht mit jedem Puffer funktioniert.

ceving
quelle
Ich bin mir nicht sicher, ob dies die Frage beantwortet. Ich erwähnte es take-vector-screenshotals Beispiel, aber ich erwähnte auch, dass es nicht überraschend war, dass es nicht funktionierte. htmlfontify-bufferEs gibt zu viele Einschränkungen, um sich wirklich zu qualifizieren (es werden keine Overlays, Display-Strings, Zeilenumbrüche, Font-Fallbacks usw. gerendert)
Clément
1
@ Clément Die kurze Antwort lautet: auf keinen Fall.
16.
Handelt es sich um diese persönliche Meinung, oder haben Sie Beweise, die diese Behauptung stützen? Angesichts der Anzahl von Rendering-Backends (Cairo, direkt über X, Gtk usw.), die Emacs hat, könnte man sich vorstellen, dass eine leichte Änderung an einem von ihnen ausreichen könnte.
Clément
2
@ Clément Gtk + kann in SVG rendern, da Gtk + Cairo verwendet, das ein Backend für SVG hat. Emacs verwendet Cairo nicht für das Puffer-Rendering. Für Kairo gibt es jedoch einen experimentellen Zweig . Vielleicht könnte es in naher Zukunft möglich sein.
ceving
1

Es ist möglich in Kairo zu bauen!

(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.
Clément
quelle