跳到主要内容
ansicode

DECDHL / DECDWL / DECSWL — 双倍高 / 双倍宽行(ESC # 3 / # 4 / # 5 / # 6)

把当前行标记为双倍高(上半 / 下半)或双倍宽 / 单倍高 —— DEC 的逐行大横幅原语,VT100 启动画面常用。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b#3 (DHL top) \x1b#4 (DHL bottom) \x1b#5 (DECSWL) \x1b#6 (DECDWL)
\\033[\033#3 / \033#4 / \033#5 / \033#6
\\e[\e#3 / \e#4 / \e#5 / \e#6
ESC [ESC # 3 / ESC # 4 / ESC # 5 / ESC # 6
hex1b 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

参数

示例

bash
# Banner-style double-height header:\nclear\nprintf '\033#3WELCOME\n'   # top half\nprintf '\033#4WELCOME\n'   # bottom half — same text, completes the doubled glyph
python
import sys\nsys.stdout.write('\x1b#6BIG\n')   # double-width single-height\nsys.stdout.write('\x1b#5normal again\n')   # explicit single-width
go
// Construct a 2-line splash header:\nfor _, half := range []string{"\x1b#3", "\x1b#4"} {\n    fmt.Print(half + "ANSICODE\n")\n}
javascript
process.stdout.write('\x1b#6Wide Title\n')   // double-width\nprocess.stdout.write('\x1b#5')               // reset line to normal width
c
printf("\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
不支持

相关序列

在家族食谱中

ESC 食谱 · 4. 双宽 / 双高行 + 对齐测试 —— `\x1b#3-#6` 与 `\x1b#8`