iosevka字体让中文 ASCII diagram 图表对齐
Posted | stdout
对齐前:
┌──────────────┐ ┌──────────────┐
│ 用户请求😆 │────▶│ 网关服务 │
│ User Req │ │ Gateway │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 认证服务 │ │ 业务逻辑 │
│ Auth Svc │ │ BizLogic │
└──────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ 数据存储 │
│ Database │
└──────────────┘
对齐后:
┌──────────────┐ ┌──────────────┐
│ 用户请求😆 │────▶│ 网关服务 │
│ User Req │ │ Gateway │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 认证服务 │ │ 业务逻辑 │
│ Auth Svc │ │ BizLogic │
└──────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ 数据存储 │
│ Database │
└──────────────┘
AI 的解释:
Iosevka 的作者 be5invis 当年做这个字体时明确说过:因为他和很多朋友生活在中国、日本,所以他把这款字体做成严格的 1/2 em 宽,专门用来跟汉字对齐——面向亚洲用户,用这个就能保住完美对齐。也就是说 Iosevka 的西文字形宽度天生就是 0.5em,不需要任何 CSS 补偿或 size-adjust 魔法,配任何满格 1em 的 CJK 字体(Hiragino、PingFang、Source Han Sans 等)都是精确 2:1。而且它的构建系统是声明式的,用 TOML 配置文件驱动,可以精细控制粗细、宽度、每个字形的风格变体。
中英混合是搞定了,emoji 有的时候手动调整下。case是:
农民 emoji 🧑🌾 其实是"人"+ 零宽连接符(ZWJ)+ "农作物"两个 emoji 码位拼成的
在 wcwidth 计算,会分别得到宽度 2、0、2,加起来变成 4 列宽导致错位
Comments