该gtk-vector-screenshot
程序可用于拍摄Gtk-3应用程序的矢量屏幕截图。似乎可以通过要求应用程序将自身重绘到SVG画布上来工作。
可以使用Gtk +构建GNU / Linux上的Emacs,但是尝试在Emacs窗口上使用上述应用程序会导致屏幕截图仅包含GUI元素(如菜单栏);不渲染缓冲区(我尝试使用开罗和不使用开罗)。鉴于Emacs的缓冲区渲染发生在相当低的水平,这并不奇怪。
仍然有办法拍摄Emacs的可伸缩矢量屏幕截图吗?
该gtk-vector-screenshot
程序可用于拍摄Gtk-3应用程序的矢量屏幕截图。似乎可以通过要求应用程序将自身重绘到SVG画布上来工作。
可以使用Gtk +构建GNU / Linux上的Emacs,但是尝试在Emacs窗口上使用上述应用程序会导致屏幕截图仅包含GUI元素(如菜单栏);不渲染缓冲区(我尝试使用开罗和不使用开罗)。鉴于Emacs的缓冲区渲染发生在相当低的水平,这并不奇怪。
仍然有办法拍摄Emacs的可伸缩矢量屏幕截图吗?
Answers:
根据文档,Emacs中的Gtk +小部件为:
缓冲区由Emacs本身呈现。缓冲区或缓冲区中的行都不是Gtk +小部件。这意味着他们对Gtk +小部件的导出功能一无所知。
最好的办法是使用htmlfontify-buffer
以便将生成的HTML嵌入到包含小部件的SVG中。但这将需要一些额外的工作来合并HTML和SVG。但是请注意,这htmlfontify-buffer
也有一些限制,并且不适用于每个缓冲区。
在开罗构建中可能!
(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.
take-vector-screenshot
了一个例子,但是我也提到它不起作用也就不足为奇了。htmlfontify-buffer
有太多的局限性,真正有资格(也不会呈现叠加,显示字符串的换行,字体回退等)