为什么 OS X 和 Windows 不一样:两个等宽英文字符和一个中文字符宽度不一致

2015-05-02 16:32:51 +08:00
 gDD

一个困扰很久的问题,求解。

在 Windows 下,两个等款英文字符的宽度和一个中文字符的宽度是一致的。

但是在 OS X 下,许多富文本编辑器,例如 IntelliJ IDEA,Atom,甚至 Google Chrome 里,一个中文字符往往小于两个等宽英文字符的宽度,对不齐很看着很不舒服,特别是要完美排版一下 Markdown 表格的时候。目前发现明确能做到对齐的,只有在 Terminal 和 MacVim 里,当然这两者机制是非常规的,不具备通用性。

测试了一下,Consolas 12 号字体,混合中英文排版的纯文本(文本见下方链接):

粗看起来,可能是 OS X 下是因为英文字体和中文字体并不是同一种,字体宽度没调教成统一的。然后如果用上自带 Unicode 字符的等宽字体,比如 M+ 系列字体,就能对齐了。

测试页面与内容: https://gist.githubusercontent.com/gaomd/f3716b8630d1a74a8c59/raw/

这个页面在 Chorme 里渲染是等宽字体的,但是在 OS X 下的 Chrome 里打开,中英文却没有对齐。

5582 次点击
所在节点    macOS
8 条回复
richardtsai
2015-05-02 16:54:21 +08:00
感觉是OSX内置的等宽字体宽度的问题……
所以我把Firefox的默认等宽字体换成Ubunto Mono了……然后中文还是默认,这样就正常了
SoloCompany
2015-05-02 17:20:28 +08:00
用 input mono,字号12或14

主要的问题是fallback没做好导致中英文的宽度不一致
icylogic
2015-05-02 17:57:32 +08:00
gDD
2015-05-02 19:37:31 +08:00
@SoloCompany 这个字体很好看,但和中文混排的时候,两个英文字符的宽度还是大于一个中文字符的宽度。
gDD
2015-05-02 19:39:21 +08:00
@icylogic 虽然没用但是有启发,或许最后的解决办法就是用脚本编译一个混合字体出来。
SoloCompany
2015-05-02 19:57:34 +08:00
@gDD 你是怎么选的?我用 input mono 12pt / 14pt 没有不等宽的问题
gDD
2015-05-02 20:15:56 +08:00
@SoloCompany 我在 PhpStorm 里面,选了 Input Mono Compressed,12 或 14 确实是完美对齐了,但是在其他地方(比如 Google Chrome,Text Edit),Compressed 也对不齐了。而 Input Mono 到哪里都对不齐。
SoloCompany
2015-05-02 20:25:32 +08:00
@gDD 对,忘记说得要 Input Mono Compressed 了,其它的不能对齐,原因我前面说了,就是 fallback 的中文字体宽度不一致,但在所有地方只要选择 Input Mono Compressed 12pt 和 14pt 都能完美对齐,除了 Input Mono Compressed,其它还能实现完美对齐的,有还
- ubuntu mono
- M+ 1m
- 文泉驿正黑

但只有 Input 字体提供了完整的字重(我偏爱超细的字体),所以我也偏爱 Input Mono

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/187956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX