跳转到内容

为何选择 SVG 格式

console2svg 采用 SVG(Scalable Vector Graphics:基于 XML 的二维矢量图形标准)作为记录终端屏幕状态的主力输出格式。 相较于普通截屏工具常用的 PNG 等光栅位图或 GIF 动图,矢量格式更契合以文本与框线字符为主的终端界面呈现。

SVG 将图像记录为几何坐标与排版指令(如字符位置、线条矢量路径),而非固定的像素网格。

Terminal
fastfetch

fastfetch

fastfetch

在 PNG 等光栅位图格式中,高分辨率屏幕(如 Retina 视网膜屏)或放大查看时,字符轮廓与细线框线容易发虚变模糊。 而 SVG 允许浏览器或查看器根据当前的展示缩放比例实时计算字符轮廓,无论窗口如何缩放、屏幕分辨率多高,抑或用于印刷出版,都能保持锐利清晰的渲染品质。

终端屏幕绝大部分区域由大面积单色背景与离散的文字序列构成。

相比扫描整屏数十万像素并压缩色值的光栅图像,SVG 将连续的相同背景单元格聚合为一个矩形(<rect>),并将连续字符合并为结构化文本(<text>),消除了海量冗余数据。

  • output.png (60,717 bytes)
  • output.svg (8,455 bytes)

如上图所示,在记录完全相同的终端内容时,SVG 格式的文件体积仅为对应 PNG 格式的约七分之一。 即便在文档网站或 Git 仓库中嵌入大量终端操作示例,也能将存储占用与页面加载耗时降至极低。

SVG 是由 W3C 维护的开放 Web 标准,现代主流浏览器均提供原生渲染支持。

与 asciinema 等录制工具不同,SVG 无需向页面引入笨重的 JavaScript 播放器运行时或专用 CSS 样式表。 仅需采用 Markdown 原生图片语法(![...](...)),即可直接在 GitHub README、技术博客及静态网站生成器中无缝呈现:

README.md
![终端执行结果](./output.svg)

在 SVG 文件内部,终端上显示的字符串被原汁原味地保留在 <text> 元素中。

不同于将文本固化在像素里的位图,SVG 文件可以直接用代码编辑器打开查看,或使用 grep 等命令行工具搜索文本内容。 此外,保留文本结构还能更好地配合屏幕阅读器等辅助技术,兼具图形展示与纯文本的数据可访问性。