Emacsのベクター(SVG)スクリーンショットを撮ることはできますか?


15

このgtk-vector-screenshotプログラムは、Gtk-3アプリケーションのベクタースクリーンショットを撮るために使用できます。アプリケーションに自身をSVGキャンバスに再描画するように依頼することで機能するようです。

GNU / Linux上のEmacsはGtk +でビルドできますが、前述のアプリケーションをEmacsウィンドウで使用しようとすると、メニューバーなどのGUI要素のみを含むスクリーンショットが表示されます。バッファーはレンダリングされません(Cairoを使用して、または使用せずに試しました)。Emacsのバッファーレンダリングが非常に低いレベルで行われることを考えると、これはそれほど驚くことではありません。

それでも、Emacsのスケーラブルなベクタースクリーンショットを撮る方法はありますか?

回答:


2

ドキュメントによると、EmacsのGtk +ウィジェットは次のとおりです。

  • メニュー、
  • ダイアログ、
  • ツールバーと
  • スクロールバー

バッファーはEmacs自体によってレンダリングされます。バッファーもバッファー内の行もGtk +ウィジェットではありません。これは、Gtk +ウィジェットのエクスポート機能について何も知らないことを意味します。

できることはhtmlfontify-buffer、生成されたHTMLをウィジェットを含むSVGに埋め込むために使用することです。ただし、HTMLとSVGをマージするには追加の作業が必要になります。ただし、htmlfontify-bufferこれにはいくつかの制限があり、すべてのバッファーで機能するわけではないことに注意してください。


これが質問に答えるかどうかはわかりません。私は言及をしたtake-vector-screenshot例として、私はまた、それが機能しなかったことは驚くべきことではなかったことを述べました。htmlfontify-buffer本当に(それはオーバーレイ、表示文字列、行ラップ、フォントフォールバックなど表示されません)資格をあまりにも多くの制限がある
クレマン

1
@Clément簡単な答えは:ありません。
セビング

これは個人的な意見ですか、それともその主張を裏付ける証拠がありますか?Emacsのレンダリングバックエンド(Cairo、X、Gtkなどを直接使用)の数を考えると、それらの1つを少し調整するだけで十分であると想像できます。
クレメント

2
Gtk +はSVGのバックエンドを持つCairoを使用するため、@ClémentGtk +はSVGにレンダリングできます。EmacsはバッファレンダリングにCairoを使用しません。しかし、カイロには実験的なブランチがあります。近い将来、可能になるかもしれません。
16

1

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.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.