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