V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gDD
V2EX  ›  macOS

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

  •  
  •   gDD · 2015-05-02 16:32:51 +08:00 · 5314 次点击
    这是一个创建于 3293 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    • 在 Windows 的 Notepad 里,是等宽的。
    • 在 OS X 的 OneNote 里,却不是等宽的。

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

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

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

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

    主要的问题是fallback没做好导致中英文的宽度不一致
    icylogic
        3
    icylogic  
       2015-05-02 17:57:32 +08:00 via Android
    gDD
        4
    gDD  
    OP
       2015-05-02 19:37:31 +08:00
    @SoloCompany 这个字体很好看,但和中文混排的时候,两个英文字符的宽度还是大于一个中文字符的宽度。
    gDD
        5
    gDD  
    OP
       2015-05-02 19:39:21 +08:00
    @icylogic 虽然没用但是有启发,或许最后的解决办法就是用脚本编译一个混合字体出来。
    SoloCompany
        6
    SoloCompany  
       2015-05-02 19:57:34 +08:00
    @gDD 你是怎么选的?我用 input mono 12pt / 14pt 没有不等宽的问题
    gDD
        7
    gDD  
    OP
       2015-05-02 20:15:56 +08:00
    @SoloCompany 我在 PhpStorm 里面,选了 Input Mono Compressed,12 或 14 确实是完美对齐了,但是在其他地方(比如 Google Chrome,Text Edit),Compressed 也对不齐了。而 Input Mono 到哪里都对不齐。
    SoloCompany
        8
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1178 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:57 · PVG 06:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.