妙镜

十袭珍藏,但誓传家而永寳

打标点

2018-12-26


前段时间一朋友问, 为什么你打中文字, 却用着半宽的英文标点。

通常我会把 这个链接 扔给对方, 表示习惯来源于此。

这么说来, 我学着打西文标点, 是因为这些说法很有道理 …… 吗?
摸摸良心, 只好承认真实原因: 厉向晨创办文悦字库 (旧称 TypeLand) 以来, 发表过不少我喜欢的好字体, 所以才想尝试模仿一下。 惭愧惭愧。

虽然始于盲目模仿, 但我逐渐地认同起了这一习惯, 甚至还觉得受益无穷。 种种妙处, 下文聊以记之, 权当补充厉师傅的回答。

方便了电脑程序

首先, 半角标点后边自带空格, 能稍稍改善分词 (Tokenization) 缺失的问题。

众所周知, 欧洲字母语言 (以英语为例) 用空格划分词语, 又以标点符号区分段落的不同成分, 而且标点还自带空格。 因为英文是大量软件的默认文字, 所以电脑程序中许多与文字处理相关的功能, 都是基于 “空格分词” 这一点实现的。 换成中文, 段落中一般不含空格, 只有标点, 而且标点符号后面也不加空格, 于是那些依靠空格才能认出前后两坨是两个不同单词的软件一瞧, 全傻眼了。

简而言之, 很多软件只认英文标点, 不认得中文标点, 只将中文标点当作一般的中文字, 使得我们相较于英文用户缺失了一些便利。

比如靠键盘来导航定位, 移动光标在文本中的位置, 就得依靠电脑程序对空格、 标点与分词的辨认。 请看下例:

英文示例 (英国童谣)

London Bridge is falling down, 

中文标点 (古诗十九首)

弃捐勿复道,努力加餐饭。

中文, 混用拉丁标点 (古诗十九首)

弃捐勿复道, 努力加餐饭.

读者可以动手试验, 把这三处文本, 复制到电脑上不同地方, 然后分别按 Ctrl + ←/→, 看光标位置如何切换。 我试过一轮, 结果如下:

操作系统为 Windows 10 1803

文本样本\光标切换位置 Telegram 桌面端输入框 Sublime Text 3 火狐浏览器1 酷容系浏览器2 记事本3 cmd
英文 空格及标点处 空格处/空格及标点处 空格/标点处 空格处 空格处 空格处
中文标点 最前/最后 最前/最后 空格/标点处 常用词前后+标点后 逐字 最前/最后
中文, 混用拉丁标点 空格及标点处 空格处/空格及标点处 空格处 常用词前后+标点后 逐字 空格处

由此可见, 在许多软件中, 光标导航在英文中比较方便, 但到中文就不行了, 而中文混用拉丁标点, 从而弥补出一些空格, 可以稍微改善这一问题, 尤其能提升 Telegram 用户中文打字时的幸福感。 其实还可以得出其他结论, 和本文主题关系不大就先不说了。

虽然上述过程以 Ctrl+左右键 为例, 但其背后的逻辑, 还同时影响 Ctrl + DelCtrl + 退格键 、 鼠标双击文字选择范围 这些功能。 而它们对键鼠打字效率的影响都很大。

特别一提, Telegram 搜索垃圾, 都怪它没有对中文分词。 有一点比较奇怪, 即使目前新版搜索, 已经能区分中文标点了, 如果鼠标左键双击消息内容, 整段汉字还是黏在一起的一坨, 分辨不出中文标点。

说起来, 不光"文本编辑"这一处功能需要程序分辨出中文标点, 在一些软件中, 标点符号另有特殊意义。

一个是 git 。 经检测 , 当前版本的 git diff 能正确分辨出中文标点, 从而缩小 diff 中文的粒度 (精细程度), 值得表扬。

另一个是 Markdown 渲染器。 起码我见过的渲染器中, 貌似没有一个能够处理 [超链接](http://example.com) 或者 ![图像](http://example.com/pic.jpg)

对于渲染器作者来说,他们没必要理会中文的 ()! 符号; 但对于惯用中文标点打字的人而言, 每次在 .md 文稿里贴几张图/加超链接, 都只得来回切换输入法的中英文状态, 切换好几次, 烦不胜烦。 而始终用英文标点的人, 就不存在这种烦恼。

所以说, 有的软件能分辨出中文标点也算一种标点, 固然好, 但总不能指望所有软件都有心兼顾中文输入法打出的默认标点符号。


说到 Markdown, 还有一个特别的例子, Markdown 手动换行。

如果有人按 Markdown 的格式打字, 可能觉得 “空两格回车才真换了行” 别扭。
假如手动换行只需多空一格, 感觉更符合个人直觉。
为什么规定多空两格呢?

个人推测, 因为手动换行, 通常发生在句尾, 而且发明 Markdown 的美国人 John Gruber, 平时用英文写作, 英文句尾符号, 都会紧跟一个空格, 敲这个空格已经成了肌肉记忆。 所以无论换不换行, 人家的第一个空格本来就有, 手动换行相当于只多敲一个空格, 而非两个。

回到中文语境, 标点占一个汉字, 也就是两个字符的宽度, 而中国内地所用句号偏左下角, 右侧留白, 相当于隐含着一个空格。 如果我们需要用到 Markdown 的手动换行, 于行尾 句号之后再多打两个空格, 就好像空了三格。

这一减一增之间, 难怪中文打字会觉得 Markdown “空两格回车才换行” 这个规矩别扭了。 而使用拉丁标点, 半角字符, 会迫使你始终在逗号句号之后多打一个空格, 于是免除了 Markdown 手动换行的不谐之处。

排版更灵活

留白更灵活

善用半角字符, 使得留白控制得更精细。 标点符号前后的空白只靠空格补齐, 打字者便可更自由地决定标点符号间的距离。 所以据厉老板所述 , 噫! 好了!! 我中了!!! 应当比 噫!好了!!我中了!!! 看起来更整洁。 又比如, 你可以写成 "人若过了二十岁中状元,便索然了。", 而非 “人若过了二十岁中状元,便索然了。”
上例用到的引号与句号, 会在下文详细说明。

引号更灵活

中国大陆沿用美式键盘布局, 诺大的 QWERTY 全尺寸键盘上, 圆、 方、 花、 尖括号, 谁不成双成对? 偏偏四种引号全都挤在一个键位上。 因此, 中文输入法不得不单独为了引号, 打个额外的补丁。 这便是奇数次时上左引号, 偶数次时上右引号。

此举无疑给中文打字人员带来了不便。 比如, 初学打字者, 习惯眼盯键盘, 但若每每按到引号, 又必须提心吊胆地抬头看, 唯恐引号错位, 引起无穷后患。

万一多按了中文引号, 比如 “哈哈哈”“,通常应当再补一个, 然后才能回删两格。 可是好习惯不见得人人都有, 有时贪图省事, 直接删掉那个多的。 这就使得, 用过一段时间的电脑, 引号就像薛定谔箱子里的猫, 处于左引号和右引号的量子叠加态。

总之, 中文引号的奇偶性, 让人心神不宁。 如果换成西文的半角引号", 不分左右, 即使多打一个, 也可以直接删掉, 让人用得放心、 舒心、 开心。

亦可兼顾审美习惯

不记得谁说过, 因中西两种系统默认字体的风格相去甚远, 使得中文带上英文标点, 显示出来的效果就会不堪入目。
诚然, 某些系统上确实有此问题, 然而这锅标点符号可不背。 “常在河边走”, 中文写作时也难免遇上专业名词、 洋人本名等不得不中西混排的情况。 所以, 与其竭力避免混排, 不如换用风格相近的中西两套系统字体, 或直接换成中西兼备的字体。

朋友在此补充道:

用等寬字型的時候比較適合半形標點
普通的 Sans-Serif 字型配半形標點不是很好看。

另外, 那朋友还劝说道, 句号本来就该是一个圈, 不然不好看。 我心下认同, 表面上强辩两句, 一时也不知如何解决。
直到几天之后, 目光由西向东, 注意到了日文标点。 万幸, 日本規格協会提出的 JIS X 0201 有个 , 既是中式句号, 又是半角符号。 而且还意外发现了迫真顿号 (読点), 也只占半个汉字宽度, 亦可一并拿来

终于, 通过换用 而不用 . 表示句尾, 既坚持了半宽标点, 又兼顾了大部分中文读者的审美习惯, 两全其美, 真棒啊。

现用打字标点方案

我用 Windows 10 系统, 自带的微软拼音前一阵还不能自订双拼方案。 所以今天我还在用手心输入法, 这个输入法已经用惯了。

刚入门半角标点, 只是在 “设置属性” 面板勾选了 “初始状态 > 中文状态下使用英文标点”。 用过一段时间发现, 这样不是很顺手, 比如打省略号 ……, 书名号 《》 等挺麻烦, 也用不了 JIS 的

后来经过仔细摸索, 发现了完美搞定的办法: “设置属性” 面板找到 “按键” 选项卡, 选择下方 “自定义标点设置”。

于是就可以把 手心输入法-中文状态 下的标点符号 (常用为"中文半角"一栏) 改成你想要的符号。 令人惊喜的是, 竟然可以设定一个按键等于多个字符, 比如, 我的句号改成了 “。 “, 逗号改成了 “, “。 通过这种设定, 每次打标点, 能少打一个空格, 提高效率, 妙啊。

手心输入法——自定义标点设置

如果有人因为一些原因反感 “手心输入法”, 想必善用 AHK 也能够满足你的需要。 假如手心输入法乐意施舍小弟一点点赞助, 前一句话可以删掉。

总结和补充说明

中文标点符号, 美则美矣, 若用于打字, 只有全角, 仍诸多不便。 既然中文的全角标点不方便, 便问西洋借来半角标点 ,:;?!", 再向东洋借些半角标点 、。, 这样一来, 打字更顺。

像这样子打标点, 其实没有遵守规范, 个人认为在非正式的场合下, 从审美偏好和个人方便的角度, 适当作些权衡取舍, 也应合情合理, 不伤大雅, 无可厚非。

因此, 并不鼓励撰稿出版的时候参考本文; 所谓"排版”,本文中也仅指普普通通的纯文本 (txt/md) , 不涉及字处理软件 (如 MS Word) 及排版软件 (如 InDesign) 等制作的更复杂的格式。 倘若出版/排印行业的老师傅看到本文, 还请勿怪, 先向您道个歉。 如不吝赐教, 指出疏漏, 那就更好了。

看了眼时间, 2018 年, 还应该补充一句: 上述讨论仅适用于 PC 机或手提电脑以及相应美式键盘布局, 其他种类电子设备 (如用触摸屏输入的设备) / 键盘布局, 不在讨论范围内。


  1. 65.0b6, 地址栏 ↩︎

  2. Chromium 70.0.3538.110, 地址栏 ↩︎

  3. Notepad.exe ↩︎