不是字的图形:用形状符号在文本里画图
码点的档案 把字符分成七大类,其中 Symbol(\p{S})下有个 So(Symbol, other / 其他符号)小类。\p{Math} 速查 讲的是被数学借用的符号;这页讲另一大半:纯粹是图形的
So 字符——画框的 Box Drawing、填色的 Block Elements、方圆三角的 Geometric Shapes。它们不是「字」:没有读音、不属于任何 Script,\p{L} 与 \p{N} 都不沾。但在等宽字体里每个恰好占一格,于是能在纯文本里拼出进度条、表格框、TUI
与 ASCII art——commit log、CLI 输出、聊天框里随处可见。
1 · 进度条
最常见的用法:拿一对「实心 / 空心」形状,按比例重复,就是一条纯文本进度条。
建议 · 以 ▰▱ 为例:实心 ▰ 是 U+25B0 BLACK PARALLELOGRAM、空心 ▱ 是 U+25B1 WHITE PARALLELOGRAM,都在 Geometric Shapes 块、gc 都是 So。它们没有读音、不是字,纯粹是图形——但等宽下每个占一格,▰▰▰▱▱
就成了进度条。★ ☆ 是个例外:它住在 Miscellaneous Symbols 块,不在下面四个「画图」block 里,但同样 gc=So、同样能拼。
2 · Box Drawing
另一拨主力是 Box Drawing(128 个 ─ │ ┌ ┐ ╔ ╬ 等)——粗细、单双线、圆角、丁字接头一应俱全,纯文本里的表格、目录树、TUI 边框就靠它。
3 · 全量速查:画图字符工具箱
把「用文本画图」的四个核心 block 全量列出来——都是 gc=So,其中 Geometric Shapes 有 10 个同时是 Sm、被数学借走,也在 \p{Math} 速查 里。搜索支持码位 hex、Unicode 名(如
circle、triangle、shade),或直接粘一个字符。
注 · 三点要记。其一,\p{So} 远不止形状——它共 7468 个,还囊括货币以外的各种符号和绝大多数 emoji(😀 的 gc 就是 So)。这页只圈出其中「画图用的纯几何形状」四个 block,不是 \p{So} 全集。其二,之所以能拼图,是因为这些字符的
East_Asian_Width 多为 Narrow / Ambiguous,等宽字体里占一格;而 emoji 是 Wide(两格),拼起来就错位——这也是「形状能画图、emoji 不能」的根。其三,Symbols for Legacy Computing(U+1FB00–1FBFF)是 Unicode 13 新增的「文本画图」块(六分格 / 八分格 / 段码数字 / teletext
马赛克),分辨率比 Block Elements 更细,但字体支持还很零散,这页未纳入。
4 · 参考文献
- Wikipedia. Box-drawing characters. Box Drawing 与 Block Elements 的来龙去脉:从 VT100、Code Page 437 的制表符,到今天的 Unicode 块——纯文本画框、表格、TUI 的字符出处。en.wikipedia.org
- Wikipedia. Geometric Shapes (Unicode block). Geometric Shapes 块逐个码点:方 / 圆 / 三角 / 菱形的实心与空心配对,上方速查的官方对照。en.wikipedia.org
- Kane, B. (2026-05-27). 一条提到
▱White Parallelogram(U+25B1)的帖子,本页进度条 demo 的由头;配实心▰拼进度条的用法是本页自己的推衍。x.com - Compart. U+25B1 White Parallelogram. 空心平行四边形的官方字符信息;对照实心
U+25B0BLACK PARALLELOGRAM。compart.com