不是字的图形:用 \p{So} 形状符号在文本里画图
码点的档案页把字符分成七大类,其中 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 输出、聊天框里随处可见。
进度条:实心 / 空心拼出来
最常见的用法:拿一对「实心 / 空心」形状,按比例重复,就是一条纯文本进度条。拖滑块、换字符对看看:
进度 60%
实心 ▰
空心 ▱
60%
换一对「实心 / 空心」字符
▰ 是 U+25B0 BLACK PARALLELOGRAM、空心 ▱ 是 U+25B1 WHITE PARALLELOGRAM,
都在 Geometric Shapes 块、gc 都是 So。它们没有读音、不是字,纯粹是图形——但等宽下每个占一格,▰▰▰▱▱ 就成了进度条。
(★ ☆ 是个例外:它住在 Miscellaneous Symbols 块,不在下面的四个「画图」block 里,但同样 gc=So、同样能拼。)
画框:Box Drawing 把表格 / 树 画进纯文本
另一拨主力是 Box Drawing(128 个 ─ │ ┌ ┐ ╔ ╬…)——粗细、单双线、圆角、丁字接头一应俱全,纯文本里的表格、目录树、TUI 边框就靠它:
全量速查:画图字符工具箱(359 个)
把「用文本画图」的四个核心 block 全量列出来——都是 gc=So(其中 Geometric Shapes 有 10 个同时是
Sm,被数学借走、也在 \p{Math} 速查里)。
按 block 分类、可搜索、可快速切换。搜索支持 码位 hex、Unicode 名(如 circle、triangle、shade)、或直接粘一个字符。
\p{So} 远不止形状——它共 8617 个,还囊括货币以外的各种符号和绝大多数 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 更细——但字体支持还很零散,这页未纳入。
相关链接
- Box-drawing characters · Wikipedia · en.wikipedia.org Box Drawing / Block Elements 的来龙去脉:从 VT100、Code Page 437 的制表符,到今天的 Unicode 块——纯文本画框 / 表格 / TUI 的字符出处。
- Geometric Shapes (Unicode block) · Wikipedia · en.wikipedia.org Geometric Shapes 块逐个码点:方 / 圆 / 三角 / 菱形及其实心-空心配对,上方速查的官方对照。
- 用 ▱ 排列表示进度条 · x.com · beyarkay 本页进度条 demo 的出处:用 ▱ White Parallelogram(配实心 ▰)在纯文本里拼出进度条。
- U+25B1 White Parallelogram · Compart · compart.com 空心平行四边形的官方字符信息;对照实心 U+25B0 BLACK PARALLELOGRAM。