Tech
[分享发现] 为什么 ASCII 线框图(Wireframe)一出现中文就对不齐?是字体问题,还是 Unicode 字符宽度导致的?
最近在用 AI 生成 ASCII 线框图时,发现只要内容里出现中文,就很容易出现对齐问题。
例如:
+---------------+
| /Lesson |
| 事後回顧 |
+---------------+
理论上,两行内容都是从同一列开始,但实际在很多终端、Markdown 编辑器或代码编辑器中显示时,视觉上却没有垂直对齐。
查了一些资料后,大概了解到原因主要有几点:
ASCII 字符通常属于半角字符(宽度为 1 )。
中文、日文、韩文( CJK )字符通常属于全角字符(宽度约为 2 )。
不同字体、终端和 Markdown 渲染器,对 CJK 字符宽度的处理并不完全一致。
有些编辑器虽然英文使用等宽字体,但中文会自动回退到非等宽字体,因此即使字符宽度理论正确,显示效果仍然会错位。
目前看到的几种解决方案包括:
使用支持 CJK 的等宽字体,例如 Sarasa Mono 、Maple Mono 、LXGW Mono 等。
程序生成 ASCII 图时,不使用 len() 计算字符串长度,而是使用...
Read the full discussion on V2EX
This article was aggregated from V2EX. Click to join the conversation.
View on V2EX