Puis-je prendre des captures d'écran vectorielles (SVG) d'Emacs?

15

Le gtk-vector-screenshotprogramme peut être utilisé pour prendre des captures d'écran vectorielles des applications Gtk-3. Il semble fonctionner en demandant à l'application de se redessiner sur un canevas SVG.

Emacs sur GNU / Linux peut être construit avec Gtk +, mais essayer d'utiliser l'application susmentionnée sur une fenêtre Emacs entraîne une capture d'écran qui ne contient que des éléments GUI tels que la barre de menus; les tampons ne sont pas rendus (j'ai essayé avec et sans Cairo). Ce n'est pas trop surprenant, étant donné que le rendu du tampon d'Emacs se produit à un niveau assez bas.

Pourtant, existe-t-il un moyen de prendre des captures d'écran vectorielles évolutives d'Emacs ?

Clément
la source

Réponses:

2

Selon la documentation, les widgets Gtk + dans Emacs sont:

  • menus,
  • dialogues,
  • barres d'outils et
  • barres de défilement

Les tampons sont rendus par Emacs lui-même. Ni le tampon ni les lignes d'un tampon ne sont des widgets Gtk +. Cela signifie qu'ils ne savent rien de la fonctionnalité d'exportation des widgets Gtk +.

La meilleure chose que vous puissiez faire est d'utiliser htmlfontify-bufferafin d'incorporer le code HTML généré dans votre SVG contenant les widgets. Mais cela nécessitera un travail supplémentaire pour fusionner le HTML et le SVG. Mais sachez que cela htmlfontify-buffera aussi quelques limitations et ne fonctionne pas avec tous les tampons.

ceving
la source
Je ne suis pas sûr que cela réponde à la question. J'ai mentionné à take-vector-screenshottitre d'exemple, mais j'ai également mentionné qu'il n'était pas surprenant que cela ne fonctionne pas. htmlfontify-buffera trop de limitations pour vraiment se qualifier (il ne rendra pas les superpositions, les chaînes d'affichage, les retours à la ligne, le remplacement des polices, etc.)
Clément
1
@ Clément La réponse courte est: pas question.
ceving
Est-ce une opinion personnelle ou avez-vous des preuves pour étayer cette affirmation? Étant donné le nombre de backends de rendu (Le Caire, directement via X, Gtk, etc.) qu'Emacs possède, on pourrait imaginer qu'un léger ajustement à l'un d'eux pourrait suffire.
Clément
2
@ Clément Gtk + peut être rendu en SVG, car Gtk + utilise Cairo, qui a un backend pour SVG. Emacs n'utilise pas Cairo pour le rendu du tampon. Mais il existe une branche expérimentale pour Le Caire. Peut-être que dans un avenir proche, cela pourrait être possible.
ceving
1

C'est possible dans les constructions du Caire!

(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
la source