Are We Legacy Computing Yet?

Are We Legacy Computing Yet?

Are We Legacy Computing Yet? Tracking terminal emulator support for Unicode’s “Symbols for Legacy Computing” (U+1FB00-U+1FBFF) and its supplement block (U+1CC00-U+1CEBF). 我们已经进入“传统计算”时代了吗?本文旨在追踪终端模拟器对 Unicode“传统计算符号”(Symbols for Legacy Computing,U+1FB00-U+1FBFF)及其补充区块(U+1CC00-U+1CEBF)的支持情况。

Symbols for Legacy Computing and its supplement are unicode blocks containing graphical characters that were found on computers from the 70s, 80s, and 90s. These characters were used to show semi-graphical elements on the terminal’s text grid, and were used to display pictures, render games, and enhance terminal UIs. “传统计算符号”及其补充区块是包含图形字符的 Unicode 区块,这些字符曾广泛存在于 70、80 和 90 年代的计算机中。它们被用于在终端的文本网格上显示半图形元素,常用于展示图片、渲染游戏以及增强终端用户界面(UI)。

Demos

演示

Here’s some demos of what can build with these characters. If you have any that you’d like to contribute, please send them my way! 以下是一些利用这些字符构建的演示。如果你有任何想要贡献的作品,请发送给我!

  • Smooth Mosaic: The smooth mosaic terminal graphic characters can be used to draw filled shapes, perfect for area charts or sparklines. Or graphical symbols. 平滑马赛克:平滑马赛克终端图形字符可用于绘制填充形状,非常适合面积图或迷你图,也可以作为图形符号使用。
  • Sextant and Octant: The Sextant (Legacy Computing) and Octant (Supplement) characters give you a 2x3 and 2x4 grid. Use it for pixel art or bar charts, where you can fit two datapoints in a single character. 六分仪与八分仪:六分仪(传统计算)和八分仪(补充区块)字符提供了 2x3 和 2x4 的网格。你可以用它来制作像素艺术或柱状图,在单个字符内即可容纳两个数据点。
  • Corner styles for UI elements: UI 元素的边角样式
  • Circles: Circles can inhabit one of nine positions in a 2x2 grid. Potentially useful for games. 圆形:圆形可以占据 2x2 网格中的九个位置之一,在游戏中可能非常有用。

Terminal Emulator Support

终端模拟器支持

These are unicode characters, why is this section concerned with terminal emulators? Shouldn’t this be “font support”? Although these codepoints could be drawn by the standard text rendering in a terminal, very few fonts actually contain the paths necessary to display them, so many terminal emulators implement custom drawing routines for them instead. 这些是 Unicode 字符,为什么本节要关注终端模拟器?这不应该是“字体支持”的问题吗?虽然这些码位可以通过终端的标准文本渲染来绘制,但实际上很少有字体包含显示它们所需的路径,因此许多终端模拟器转而为它们实现了自定义的绘制程序。

But there’s another benefit to having the terminal draw the glyphs: the paths can be customized to the users display settings, allowing graphical elements to properly connect to one another even if the terminal would otherwise add padding between glyphs. 让终端自行绘制字形还有另一个好处:路径可以根据用户的显示设置进行定制,从而使图形元素能够正确地相互连接,即使终端在默认情况下会在字形之间添加间距。

The Symbols for Legacy Computing and Symbols for Legacy Computing Supplement blocks contain symbols that are useful for building graphical displays, and others that are less useful (unless you’re building a space-invaders or pacman clone), so for the purposes of showing terminal support, I’ve grouped them into “Important” and “Unimportant” categories, which you can view separately. “传统计算符号”及其补充区块中包含了一些对构建图形显示有用的符号,也有一些用处较小(除非你在制作《太空侵略者》或《吃豆人》的克隆版)。因此,为了展示终端支持情况,我将它们分为“重要”和“不重要”两类,你可以分别查看。

Methodology

方法论

To see which terminals implement custom drawing for codepoints in these blocks, I configured each emulator to use a font that didn’t contain glyphs for any of the characters and then used a script to print all of them anyway. Any characters that still appeared on screen must have had custom logic in the emulator. 为了查看哪些终端为这些区块中的码位实现了自定义绘制,我将每个模拟器配置为使用一种不包含这些字符字形的字体,然后使用脚本将它们全部打印出来。任何仍然显示在屏幕上的字符,必然是模拟器中内置了自定义逻辑。

This was a very manual process, and I may have made mistakes; If you notice that any of the data is incorrect, please email me or submit a pull request against the repository here or here. 这是一个非常手动的过程,我可能会犯错;如果你发现任何数据不正确,请给我发邮件,或者向这里的仓库提交 Pull Request。

Overview

概览

EmulatorLegacy Computing (U+1FB00-U+1FBFF)Legacy Computing Supplement (U+1CC00-U+1CEBF)
ghostty100%85%
kitty99%53%
urxvt84%74%
vte63%33%
xtermjs0%0%

(Note: The original table data provided in the prompt was slightly inconsistent; the above reflects the summary provided in the text.)

To summarize

总结

  • Ghostty is killing it. Ghostty 表现极其出色。
  • Kitty and libvte-based terminals (e.g. gnome-terminal and xfce’s terminal) have excellent support for Legacy Computing and support the most important part of the Supplement (the octant characters). Kitty 和基于 libvte 的终端(如 gnome-terminal 和 xfce 终端)对“传统计算”有极好的支持,并支持补充区块中最关键的部分(八分仪字符)。
  • xtermjs has great coverage of Legacy Computing, but sadly no support for anything in the Supplement. xtermjs 对“传统计算”有很好的覆盖,但遗憾的是不支持补充区块中的任何内容。
  • urxvt (and presumably its entire family of terminals) support nothing. urxvt(以及推测其整个终端家族)完全不支持。