Posso tirar capturas de tela de vetores (SVG) do Emacs?

15

O gtk-vector-screenshotprograma pode ser usado para fazer capturas de tela de vetores de aplicativos Gtk-3. Parece funcionar pedindo ao aplicativo que se redesenhe em uma tela SVG.

O Emacs no GNU / Linux pode ser construído com o Gtk +, mas tentar usar o aplicativo acima mencionado em uma janela do Emacs resulta em uma captura de tela que contém apenas elementos da GUI, como a barra de menus; buffers não são renderizados (tentei com e sem Cairo). Isso não é muito surpreendente, dado que a renderização do buffer do Emacs ocorre em um nível bastante baixo.

Ainda assim, existe uma maneira de capturar capturas de tela vetoriais escaláveis ​​do Emacs ?

Clemente
fonte

Respostas:

2

De acordo com a documentação, os widgets Gtk + no Emacs são:

  • menus,
  • diálogos,
  • barras de ferramentas e
  • barras de rolagem

Os buffers são renderizados pelo próprio Emacs. Nem o buffer nem as linhas em um buffer são widgets Gtk +. Isso significa que eles não sabem nada sobre a funcionalidade de exportação dos widgets Gtk +.

A melhor coisa que você pode fazer é usar htmlfontify-bufferpara incorporar o HTML gerado no seu SVG que contém os widgets. Mas isso exigirá algum trabalho adicional para mesclar o HTML e o SVG. Mas esteja ciente de que htmlfontify-buffertambém possui algumas limitações e não funciona com todos os buffers.

ceving
fonte
Não sei se isso responde à pergunta. Mencionei take-vector-screenshotcomo exemplo, mas também mencionei que não era de surpreender que não funcionasse. htmlfontify-buffertem muitas limitações para realmente se qualificam (não irá processar sobreposições, exibição de cordas, envoltórios de linha, fallback de fonte, etc.)
Clément
11
@ Clément A resposta curta é: de jeito nenhum.
ceving
É uma opinião pessoal ou você tem evidências para apoiar essa afirmação? Dado o número de back-end de renderização (Cairo, diretamente através do X, Gtk etc.) que o Emacs possui, pode-se imaginar que um pequeno ajuste em um deles pode ser suficiente.
Clément
2
@ Clément O Gtk + pode renderizar para o SVG, porque o Gtk + usa o Cairo, que possui um back - end para o SVG. O Emacs não usa o Cairo para a renderização do buffer. Mas há um ramo experimental para o Cairo. Talvez no futuro próximo seja possível.
ceving
1

É possível nas construções do 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
fonte