V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Dustland
V2EX  ›  分享创造

中英混排手动挡——「为什么我就是能这样娴熟地加上空格呢?」

  •  1
     
  •   Dustland · 2014-12-04 22:49:51 +08:00 · 9441 次点击
    这是一个创建于 3287 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。与大家共勉之。[1]

    如果真正在意 typography,那么汉字与西文之间应该插入一个半角空格。Adobe In Design、Microsoft Word 等对中文与西文混合排版支持较好的软件,都默认增大汉字和西文的间距。[2]

    汉学家称这个空白字元为「盘古之白」,因为它劈开了全形字和半形字之间的混沌,增加了文字的 readability。[1]

    如果你是一个虔诚的「空格党」,可以使用这个简单的工具,每当 Plain Text 的场景(例如电子邮件与 V2EX 发帖),在所有的汉字与拉丁字母间添加一个空格。如果原本已经手动添加了空格,这个工具并不会在这之间再添加额外的空格。

    项目地址: https://dustland.github.io/daft-auto-spacing/
    GitHub 地址: https://github.com/Dustland/daft-auto-spacing/

    [1]. 為什麼你們就是不能加個空格呢?: https://github.com/vinta/paranoid-auto-spacing
    [2]. 中英文混排时中文与英文之间是否要有空格? http://www.zhihu.com/question/19587406/answer/12298128
    [3]. text-autospace.js: https://github.com/mastermay/text-autospace.js
    第 1 条附言  ·  2014-12-04 23:42:47 +08:00
    如果这个工具对你有用,无耻地求一波 Star(
    33 条回复    2014-12-06 03:33:55 +08:00
    lihua
        1
    lihua  
       2014-12-04 22:54:30 +08:00   ❤️ 1
    楼主为什么不在中文的标点跟英文之间也加上空格呢?
    c4pt0r
        2
    c4pt0r  
       2014-12-04 22:55:27 +08:00   ❤️ 1
    神器!作为强迫症,想有这么一个东西很久了,感谢分享
    frittle
        3
    frittle  
       2014-12-04 23:18:17 +08:00   ❤️ 1
    『研究显示』……谁的研究?
    zhangxiao
        4
    zhangxiao  
       2014-12-04 23:33:29 +08:00   ❤️ 1
    呃... Feature request: 做成浏览器插件,在白/黑名单域名下的 textarea 里启用/禁用这个插件。
    Dustland
        5
    Dustland  
    OP
       2014-12-04 23:44:18 +08:00
    @zhangxiao 引用来源 1 的「為什麼你們就是不能加個空格呢?」是一个浏览器插件,应该能满足你的需求。
    xuc
        6
    xuc  
       2014-12-04 23:50:15 +08:00   ❤️ 1
    支持一下
    目前用的是输入法自带的功能
    gdm
        7
    gdm  
       2014-12-05 00:52:59 +08:00   ❤️ 1
    汉学家,哪个汉学家?
    JamesRuan
        8
    JamesRuan  
       2014-12-05 00:56:16 +08:00   ❤️ 1
    真正在意Typography的会加上1/4个空格符号。
    seki
        9
    seki  
       2014-12-05 00:56:58 +08:00   ❤️ 1
    试过 han.js 的汉拉间隙之后我感觉还是加空格更实在,不管手动还是自动
    rankjie
        10
    rankjie  
       2014-12-05 01:32:53 +08:00   ❤️ 1
    封装成了 factory 用在网站上了 谢谢楼主 :)
    jprovim
        11
    jprovim  
       2014-12-05 01:51:53 +08:00   ❤️ 1
    既然你都問了, 那我就star了.
    lightening
        12
    lightening  
       2014-12-05 03:00:55 +08:00   ❤️ 1
    这么常用的功能,用个 OS X Service 其实更方便。
    est
        13
    est  
       2014-12-05 09:18:29 +08:00   ❤️ 3
    这个空格叫什么呢?逼格。
    lucifer9
        14
    lucifer9  
       2014-12-05 09:18:33 +08:00   ❤️ 1
    还是算了
    宁愿手动
    丢不起那个人
    TheLamb
        15
    TheLamb  
       2014-12-05 09:22:45 +08:00   ❤️ 1
    @xuc win下居然没有这个设置
    话说楼主难道就是插件「空格之神」的作者?
    likid
        16
    likid  
       2014-12-05 09:34:12 +08:00   ❤️ 1
    手动,这是一个习惯,不想要自动。
    aha
        17
    aha  
       2014-12-05 09:50:46 +08:00   ❤️ 1
    我有时候加有时候不加为什么?
    puras
        18
    puras  
       2014-12-05 10:06:10 +08:00   ❤️ 1
    想问LS的各位,用百度五笔的,如何能把临时切换拼音的快捷键从FN改成Z?
    XerWandeRer
        19
    XerWandeRer  
       2014-12-05 10:22:03 +08:00 via Android   ❤️ 1
    @lihua 之前自己总结了几点,DesiringClick 上有比较严肃的讨论,其中就说到了英文与中文标点的问题:
    1. 避免使用全形英文字与定宽字体,他们并不适合作为文章阅读中使用。
    2. 阿拉伯数字与符号等视同英文处理。
    3. 中文与英文间使用半形空格分开,英文与英文间亦按照原本的方式使用半形空格。
    4. 中文段落中使用中文的全形标点符号,英文段落中则使用英文的标点符号。
    5. 如果英文刚好前或后衔接上中文的全形标点符号时,则不需要加上空格。
    zhouzm
        20
    zhouzm  
       2014-12-05 10:29:32 +08:00   ❤️ 1
    @XerWandeRer
    被你这么一总结,我发现自己完全就是按这几点做的。
    另外,叫全角半角更通俗些。
    XerWandeRer
        21
    XerWandeRer  
       2014-12-05 10:56:19 +08:00   ❤️ 1
    @zhouzm 我只是引用了 DesiringClick 上讨论的原文,这个网站真的很不错,不知道为什么近来已经打不开了。
    jedicxl
        22
    jedicxl  
       2014-12-05 11:25:59 +08:00 via iPhone   ❤️ 1
    文章的立论来源实在是。。。
    nicai000
        23
    nicai000  
       2014-12-05 11:28:01 +08:00   ❤️ 1
    不加, 太难看
    cdfmr
        24
    cdfmr  
       2014-12-05 14:02:28 +08:00   ❤️ 4
    以前加空格,现在不加。中英文混排时,中文字符与相邻的英文字符间确实要留一定宽度的“空白”,但不是“空格”,这个“空白”应该由排版软件或者浏览器渲染引擎进行优化,而不是用空格符代替。
    soolby
        25
    soolby  
       2014-12-05 14:02:52 +08:00
    搜狗输入法也有 中英文中间加入空格选项
    jakwings
        26
    jakwings  
       2014-12-05 14:08:58 +08:00   ❤️ 1
    不喜欢自动,真正的自动应该交给排版工具来干。我见过真正对此挑剔的程序员,连等宽界面下都要强迫自己加上一个半角空格,因为他已经对等宽排版绝望了,于是他在非等宽排版环境下也坚持使用「半角空格」,声称那才是(同时在两种环境下)最完美的留白技术。
    Daniel65536
        27
    Daniel65536  
       2014-12-05 14:11:25 +08:00   ❤️ 1
    @JamesRuan InDesign 的默认设置是 1/4 的全角空格宽度(遵从 JIS),也就是约等于一个半角空格。你说的 1/4 空格指的应该就是ID的默认设置,不过你弄混淆空格的全角半角了
    pockry
        28
    pockry  
       2014-12-05 14:21:33 +08:00   ❤️ 3
    我认为加空格不对,因为它违反了内容与样式分离的原则,中英文间距属于样式的范畴,但空格是内容,是可被读取为字符的。Word里面可以调整中英文间距,用Javascript也完全可以查找文章中的中英文并给中英文加上间距,说明这是可自动化的,我们只是处在一个对文字排版支持不完善的时代,就像低分辨率下点阵字体的渲染一样,directwrite基本放弃了小字体尺寸的点阵字体渲染,我们现在当然会有不爽,但过了这阵子就好了。

    加空格是同样的道理,当HTML标准和浏览器支持更多的文字排版样式后,中英文间距根本不是个问题。

    最后,很多时候这种情况是由于操作系统/浏览器内核引擎都是国外人开发的缘故,汉字的支持对他们来说是edge case,如果太麻烦就会放弃。只有我们用汉字的人去研究如何更好的渲染、排版,向世界贡献出我们的技术,汉字的显示才会真正完善。
    JamesRuan
        29
    JamesRuan  
       2014-12-05 14:33:55 +08:00   ❤️ 1
    @Daniel65536
    Unicode里表示空格的字符有很多: http://www.alanwood.net/unicode/general_punctuation.html
    姑且认为所谓的半角空格是EN SPACE,全角空格是EM SPACE。

    英文字符的词间空格推荐使用0.25em的空格,也就是FOUR-PER-EM SPACE。

    事实上, 纯英文的排版环境就很复杂,比如说要求在首字母缩写前后和数字与英文混排前后加HAIR SPACE。
    JamesRuan
        30
    JamesRuan  
       2014-12-05 14:36:27 +08:00   ❤️ 1
    @pockry 同意。内容和样式分离不清,虽然是简单的在不支持混排的环境中改善排版的方式,但一旦遇到支持的环境就弄巧成拙了。
    AthensBird
        31
    AthensBird  
       2014-12-05 19:18:15 +08:00   ❤️ 1
    加上空格的确易读美观一些
    zzColin
        32
    zzColin  
       2014-12-06 03:18:50 +08:00   ❤️ 1
    @pockry 怎么解释英文标点符号都要加空格……

    事实上我喜欢加空格并不主要是因为好看问题——因为英文单词是用空格定界的,那我的理解就是,一个英文单词要和同一行里面之前和之后的单词(或者类似概念的东西)隔开,就需要有一个空格,不论这些内容是用何种文字书写。

    我其实真正看不惯的是中文的全角标点符号——为什么专业排版一直都在用所谓的“开明式”,却不能像日语那样,在非等宽的字体里面就做成这个样子?所以在碰到全角标点符号的时候,我不得不妥协成不加空格了。
    zzColin
        33
    zzColin  
       2014-12-06 03:33:55 +08:00   ❤️ 1
    @pockry 补充: 暂且不谈标点符号问题的话, 英文的规定是单词需要用空格定界, 理论上应该并未默认单词与非拉丁字符之间可以省掉空格; 而中文的规定是汉字之间不能空格, 并没有规定汉字和非汉字之间的情况, 所以我认为, 不加空格的话会违反英文的排版规则, 而加上空格后, 中英文两边都不相冲。

    话说对于标点符号, 跟英语这边的情况放一起看的话, 也许我有必要考虑除了中文特定标点外, 全部用半角 + 空格 (这里我已经这样用了); 记得 Unicode 最初就是把全角标点当成兼容字符来看待的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3164 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.