Emacs의 벡터 (SVG) 스크린 샷을 찍을 수 있습니까?


15

gtk-vector-screenshot프로그램은 Gtk-3 애플리케이션의 벡터 스크린 샷을 찍는 데 사용할 수 있습니다. SVG 캔버스에 응용 프로그램을 다시 그리도록 요청하여 작동하는 것 같습니다.

GNU / Linux의 Emacs는 Gtk +로 빌드 할 수 있지만, Emacs 윈도우에서 위에서 언급 한 응용 프로그램을 사용하려고하면 메뉴 막대와 같은 GUI 요소 만 포함하는 스크린 샷이 생성됩니다. 버퍼는 렌더링되지 않습니다 (카이로를 사용하거나 사용하지 않고 시도했습니다). Emacs의 버퍼 렌더링이 매우 낮은 수준에서 발생한다는 것을 감안할 때 이것은 놀라운 일이 아닙니다.

여전히 Emacs의 확장 가능한 벡터 스크린 샷을 찍을 수있는 방법이 있습니까?

답변:


2

Emacs의 Gtk + 위젯 문서 에 따르면 :

  • 메뉴,
  • 대화 상자
  • 툴바 및
  • 스크롤 바

버퍼는 Emacs 자체에 의해 렌더링됩니다. 버퍼와 버퍼의 라인 모두 Gtk + 위젯이 아닙니다. 즉, Gtk + 위젯의 내보내기 기능에 대해 아무것도 모릅니다.

가장 좋은 방법 htmlfontify-buffer은 생성 된 HTML을 위젯이 포함 된 SVG에 포함시키기 위해 사용 하는 것입니다. 그러나 HTML과 SVG를 병합하려면 추가 작업이 필요합니다. 그러나 알고 htmlfontify-buffer도 가지고 몇 가지 제한을 모든 버퍼 작동하지 않습니다.


이것이 질문에 대한 대답인지 확실하지 않습니다. take-vector-screenshot예를 들어 언급 했지만 작동하지 않았다는 것은 놀라운 일이 아니라고 언급했습니다. htmlfontify-buffer실제로 적용하기에는 너무 많은 제한이 있습니다 (오버레이, 표시 문자열, 줄 바꿈, 글꼴 대체 등은 렌더링되지 않음)
Clément

1
@ Clément 짧은 대답은 없습니다.
ceving

이 개인적인 의견입니까, 아니면 그 주장을 뒷받침 할 증거가 있습니까? 이맥스가 가지고있는 렌더링 백엔드 (Cairo, X, Gtk 등을 통해 직접)의 수를 고려할 때, 그중 하나에 약간의 조정만으로 충분하다고 상상할 수 있습니다.
Clément

2
Gtk +는 SVG에 대한 백엔드 가있는 Cairo를 사용하기 때문에 @ Clément Gtk +는 SVG로 렌더링 할 수 있습니다 . 이맥스는 버퍼 렌더링에 카이로를 사용하지 않습니다. 그러나 카이로 에는 실험적인 지점 이 있습니다. 아마도 가까운 시일 내에 가능할 수도 있습니다.
8:17에

1

카이로 빌드에서 가능합니다!

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