DECDHL / DECDWL / DECSWL — 双倍高 / 双倍宽行(ESC # 3 / # 4 / # 5 / # 6)
把当前行标记为双倍高(上半 / 下半)或双倍宽 / 单倍高 —— DEC 的逐行大横幅原语,VT100 启动画面常用。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b#3 (DHL top) \x1b#4 (DHL bottom) \x1b#5 (DECSWL) \x1b#6 (DECDWL)\033#3 / \033#4 / \033#5 / \033#6\e#3 / \e#4 / \e#5 / \e#6ESC # 3 / ESC # 4 / ESC # 5 / ESC # 61b 23 33 / 1b 23 34 / 1b 23 35 / 1b 23 36说明
四个 **C1 级**转义序列,中间字节 `#`(0x23),末字节为数字(`3`/`4`/`5`/`6`)。无 CSI、无参数 —— 仅 `ESC # n`。每个影响**当前行**(光标所在行),并**持续**直到该行被另一个 `ESC # n` 覆写、滚出屏幕或被清除。 - **`ESC # 3` — DECDHL 上半**:将本行渲染为双倍高,显示每个字形的**上半部分**(可见行高度是普通行的两倍,但仍占用一个网格行)。 - **`ESC # 4` — DECDHL 下半**:与上方 `# 3` 行写相同内容,但渲染双倍字形的**下半部分**。约定是在连续两行写相同字符串,第一行标 `# 3`、第二行标 `# 4` —— 终端把它们拼成一个双倍高的字。 - **`ESC # 5` — DECSWL**:单倍宽行(默认)。用于显式清除当前行上之前的 `# 6` / `# 3` / `# 4`。 - **`ESC # 6` — DECDWL**:双倍宽行 —— 每个字形占两个单元宽度。行高与普通行一致,但容纳的字形数减半。超出新可见宽度的字形被裁剪(不换行)。 为何四个而非两个?双倍高对(`# 3` + `# 4`)需要**相同文本**在相邻两行,因为渲染引擎从上行取上半、下行取下半 —— 每行仍占一个网格行,光标定位、滚动计算、擦除仍按「一字节一行」基础工作。双倍宽(`# 6`)无须搭档因为仅水平翻倍。实现这些序列的现代模拟器(xterm、mlterm、urxvt,gnome-terminal 与 konsole 部分实现)视觉上尊重它们;alacritty / kitty / wezterm / ghostty 静默忽略 —— 被视为图形化模拟器中无前路的遗留美学特性。今日用途:怀旧 / 复古计算演示、与 DECALN 配对的对齐测试(`ESC # 8`,slug `decaln`)、忠实的 VT100 ROM 模拟器。光标行为:进入双倍宽行时,光标的逻辑列 1-40 映射到视觉列 1-80;写入超过视觉列 80(逻辑 41)按 DECAWM 决定裁剪或换行。
规范出处: DEC VT100 (DECDHL / DECDWL / DECSWL) / xterm-ctlseqs
参数
示例
# Banner-style double-height header:\nclear\nprintf '\033#3WELCOME\n' # top half\nprintf '\033#4WELCOME\n' # bottom half — same text, completes the doubled glyphimport sys\nsys.stdout.write('\x1b#6BIG\n') # double-width single-height\nsys.stdout.write('\x1b#5normal again\n') # explicit single-width// Construct a 2-line splash header:\nfor _, half := range []string{"\x1b#3", "\x1b#4"} {\n fmt.Print(half + "ANSICODE\n")\n}process.stdout.write('\x1b#6Wide Title\n') // double-width\nprocess.stdout.write('\x1b#5') // reset line to normal widthprintf("\x1b#3SPLASH\n"); /* top */\nprintf("\x1b#4SPLASH\n"); /* bottom — terminal stitches into doubled glyphs */终端支持
- xterm
- 支持
- Linux console (fbcon)
- 不支持
- macOS Terminal.app
- 部分
- iTerm2
- 部分
- Windows Terminal
- 不支持
- cmd.exe / ConPTY
- 不支持
- kitty
- 不支持
- alacritty
- 不支持
- WezTerm
- 不支持
- Ghostty
- 不支持
- GNOME Terminal
- 部分
- Konsole
- 部分
- tmux
- 不支持
- GNU screen
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 部分 | 部分 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 部分 | 部分 | 不支持 | 不支持 |