Bisakah saya mengambil tangkapan layar vektor (SVG) Emacs?

15

The gtk-vector-screenshotprogram dapat digunakan untuk mengambil screenshot vektor dari Gtk-3 aplikasi. Tampaknya berfungsi dengan meminta aplikasi untuk menggambar ulang sendiri ke kanvas SVG.

Emacs di GNU / Linux dapat dibangun dengan Gtk +, tetapi mencoba menggunakan aplikasi yang disebutkan di atas pada jendela Emacs menghasilkan tangkapan layar yang hanya berisi elemen GUI seperti bilah menu; buffer tidak diberikan (saya mencoba dengan dan tanpa Kairo). Ini tidak terlalu mengejutkan, mengingat bahwa rendering buffer Emacs terjadi pada level yang cukup rendah.

Namun, apakah ada cara untuk mengambil tangkapan layar vektor yang dapat diukur dari Emacs ?

Sejuk
sumber

Jawaban:

2

Menurut dokumentasi Gtk + widget di Emacs adalah:

  • menu,
  • dialog,
  • bilah alat dan
  • scroll bar

Buffer diberikan oleh Emacs sendiri. Baik buffer maupun baris dalam buffer adalah widget Gtk +. Ini berarti mereka tidak tahu apa-apa tentang fungsi ekspor widget Gtk +.

Hal terbaik yang dapat Anda lakukan adalah menggunakan htmlfontify-bufferuntuk menanamkan HTML yang dihasilkan ke SVG Anda yang berisi widget. Tetapi ini akan membutuhkan beberapa pekerjaan tambahan untuk menggabungkan HTML dan SVG. Namun perlu diperhatikan bahwa htmlfontify-bufferjuga memiliki beberapa keterbatasan dan tidak bekerja dengan setiap buffer.

ceving
sumber
Saya tidak yakin ini menjawab pertanyaan. Saya memang menyebutkan take-vector-screenshotsebagai contoh, tetapi saya juga menyebutkan bahwa itu tidak mengejutkan bahwa itu tidak berhasil. htmlfontify-buffermemiliki terlalu banyak batasan untuk benar-benar memenuhi syarat (tidak akan menampilkan overlay, string tampilan, pembungkus baris, font fallback, dll.)
Clément
1
@ Clément Jawaban singkatnya adalah: tidak mungkin.
ceving
Apakah ini pendapat pribadi, atau apakah Anda memiliki bukti untuk mendukung klaim itu? Mengingat jumlah rendering backend (Kairo, langsung melalui X, Gtk, dll.) Yang dimiliki Emacs, orang dapat membayangkan bahwa sedikit perubahan pada salah satu dari mereka mungkin sudah cukup.
Clément
2
@ Clément Gtk + dapat merender ke SVG, karena Gtk + menggunakan Kairo, yang memiliki backend untuk SVG. Emacs tidak menggunakan Kairo untuk rendering buffer. Tetapi ada cabang eksperimental untuk Kairo. Mungkin dalam waktu dekat ini dimungkinkan.
ceving
1

Mungkin saja dibangun di Kairo!

(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.
Sejuk
sumber