為什么你就不能加個空格呢?
“?閱讀本文大概需要 8 分鐘?!?/p>
想寫這篇文章很久了,也想做這件事很久了,我個人感覺自己是有強迫癥的,所以一直有什么事讓我看著不太舒服就想把它糾正過來。
文字,也不例外。
現(xiàn)在大家看各種新聞啊、文章啊,幾乎每篇文章都會有點數(shù)字和英文的吧,比如就拿 Python 來說,看下面兩句話:
臥槽Python真牛逼啊排名第1了。
臥槽 Python 真牛逼啊排名第 1 了。
Python 是不是第一先不說,就看看上面兩句話的排版,哪個看起來更舒服?說實話我是真覺得第一句話太別扭了。因為我們大部分的文本編輯器和瀏覽器是沒有對中文和外文的混排做排版優(yōu)化的,所以如果寫的時候如果二者之間不加個空格,二者就會緊緊貼在一起,然后就變成了上面第一句的樣子。
當(dāng)然如果你覺得第一句的排版更好看,好吧,那么本文后面的內(nèi)容其實可以不必看了。OK,如果你覺得第二個好看,那不妨接著看下去哈。
出發(fā)點
首先有一點需要明確的是,中英文排版的美學(xué)是在于 Readability,易讀性。而為了易讀性,中英文之間是需要留有"間距"的,注意這里是間距,不是說的"空格"。"空格"會造成間距,但是間距不一定非得需要"空格"。
好,所以,其實我們只需要留有適當(dāng)?shù)拈g距,就會顯得美觀易讀,這個間距大約是一個半角空格的距離。
好明確了這一點,我們只要能留有間距,不一定非得加空格。
現(xiàn)在很多專業(yè)的排版軟件,比如 Adobe InDesign、Microsoft Word 對中英文混排支持非常好,他們會有這么一個功能:可以設(shè)置中文西文之間留適當(dāng)?shù)拈g距。
所以,如果如果我們使用了這些軟件,本身就可以做到 Readability,這就夠了。
但是,為什么還會說空格的問題呢?這是因為現(xiàn)在絕大多數(shù)軟件,不管是文本編輯器還是網(wǎng)頁,都沒有這個機制。
幾乎所有的文本編輯器和瀏覽器中,只要我們中文和英文連續(xù)輸入,它們之間是不會出現(xiàn)間距的,就像文章開頭所示的樣例中的第一句話,顯得很別扭。但比如 Adobe InDesign、Microsoft Word、IE 瀏覽器會有這方面的支持。
所以,怎么解決?手動加空格。
因此,總結(jié)下:
間距要有,但不一定是空格。
部分軟件能自動呈現(xiàn)間距,那就不必加空格。
絕大多數(shù)軟件不能自動呈現(xiàn)間距,那就需要手動加空格。
所以,作為強迫癥的我,一定是會為了這個間距而去敲下一個空格的。
「有研究顯示,打字的時候不喜歡在中文和英文之間加空格的人,感情路都走得很辛苦,有七成的比例會在 34 歲的時候跟自己不愛的人結(jié)婚,而其余三成的人最后只能把遺產(chǎn)留給自己的貓。畢竟愛情跟書寫都需要適時地留白。與大家共勉之。」

盤古之白
所以,求求你加個空格吧(逃。
規(guī)范
好,下面就說到規(guī)范的問題了,到底什么時候應(yīng)該加空格什么時候不加,這也是有講究的。下面的內(nèi)容摘自 GitHub 上的一個中英文混排規(guī)范,網(wǎng)址為:
https://github.com/mzlogin/chinese-copywriting-guidelines,下面轉(zhuǎn)述一下。
1. 中英文之間需要增加空格
中英文之間是需要添加空格的,不論是普通英文還是引用的英文,下面給個示例:
正確:
在 LeanCloud 上,數(shù)據(jù)存儲是圍繞?AVObject?進行的。
錯誤:
在LeanCloud上,數(shù)據(jù)存儲是圍繞AVObject進行的。
在 LeanCloud上,數(shù)據(jù)存儲是圍繞AVObject?進行的。
完整的正確用法:
在 LeanCloud 上,數(shù)據(jù)存儲是圍繞?AVObject?進行的。每個?AVObject都包含了與 JSON 兼容的 key-value 對應(yīng)的數(shù)據(jù)。數(shù)據(jù)是 schema-free 的,你不需要在每個?AVObject?上提前指定存在哪些鍵,只要直接設(shè)定對應(yīng)的 key-value 即可。
但有例外,比如「豆瓣FM」等產(chǎn)品名詞,按照官方所定義的格式書寫。
再比如,我的公眾號為「進擊的Coder」,那么這里面就不要加空格,按照其本身的形式書寫即可。
中文與數(shù)字之間需要增加空格
中文和數(shù)字之間也是需要的,下面給個示例:
正確:
今天出去買菜花了 5000 元。
錯誤:
今天出去買菜花了 5000元。
今天出去買菜花了5000元。
數(shù)字與單位之間無需增加空格
但是數(shù)字和單位之間不需要再加額外的空格了,下面給個樣例:
正確:
我家的光纖入戶寬帶有 10Gbps,SSD 一共有 10TB。
錯誤:
我家的光纖入戶寬帶有 10 Gbps,SSD 一共有 20 TB。
另外,度/百分比與數(shù)字之間不需要增加空格:
正確:
今天是 233° 的高溫。
新 MacBook Pro 有 15% 的 CPU 性能提升。
錯誤:
今天是 233 ° 的高溫。
新 MacBook Pro 有 15 % 的 CPU 性能提升。
全角標(biāo)點與其他字符之間不加空格
標(biāo)點是分全角和半角的,全角標(biāo)點一般是在中文狀態(tài)下輸出來的,比如,、。、!,半角標(biāo)點一般是在英文狀態(tài)下輸出來的,比如,、.、!,兩個看起來不一樣吧?所以,如果是中文標(biāo)點,即全角標(biāo)點,那不需要加空格。
正確:
剛剛買了一部 iPhone,好開心!
錯誤:
剛剛買了一部 iPhone ,好開心!
嗯,基本就是以上的幾個規(guī)范,只要明白了這些規(guī)范,中英文混排就 OK 了!
網(wǎng)頁
有人說,我就是不想打空格,在網(wǎng)頁中,我能像 Microsoft Word 一樣不打空格而直接顯示間距嗎?
也就是說,我能不能設(shè)置一個 CSS 樣式,就能使得中英文之間自動留有間距呢?
其實,只有 IE 有這樣的支持。這個 CSS 樣式叫做?-ms-text-autospace?,可以在這里了解下:https://msdn.microsoft.com/library/ms531164(v=vs.85).aspx。
但是很遺憾的是,幾乎所有其他的瀏覽器都不支持這個,Chrome、Firefox 統(tǒng)統(tǒng)都不支持這個特性。放棄吧。

樣式詳情
這里提供一些手動的解決方案,比如使用 JavaScript 添加標(biāo)記,然后 CSS 控制標(biāo)記的間距,解決方案可以參考:http://mastermay.github.io/text-autospace.js/。
編輯器
那么有編輯器支持這個嗎?有,Microsoft Word,用它我們不用加空格,會自動給我們加好間距。
有人說,我平時不想用 Word,我就想用 Markdown,有編輯器嗎?有,叫做 MarkEditor,它的 2.0 Pro 版本可以在打字的時候自動給我們添加空格。注意,這里是自動添加空格,不是自動留間距,是用空格的方式實現(xiàn)了間距。但是這個只能在你一個個打字的時候自動添加空格,如果把一個不帶空格的話粘貼進去是不行的。另外 MarkEditor 解鎖這個功能需要付費,所以我個人感覺其實不太劃算的。
所以,平時還是自己手動加空格吧,經(jīng)濟實惠方便。
其他的編輯器如有好用的歡迎大家推薦哈。
類庫
好吧,看到現(xiàn)在,你是不是現(xiàn)在都想把自己的中英文筆記加上空格了?難道要手調(diào)嗎?不需要。
有現(xiàn)成的工具了,名字叫做 pangu,它支持各種語言,另外還有瀏覽器插件可以用,列表如下:
瀏覽器插件
Google Chrome
Mozilla Firefox
開發(fā)工具包
pangu.go (Go)
pangu.java (Java)
pangu.js (JavaScript)
pangu.py (Python)
pangu.space (Web API)
pangu.clj (Clojure)
pangu.dart (Dart)
pangu.ex (Elixir)
pangu.objective-c (Objective-C)
pangu.php (PHP)
pangu.rb (Ruby)
pangu.rs (Rust)
pangu.swift (Swift)
比如 Python 的話,就可以使用 pangu.py 這個包,GitHub 地址為:https://github.com/vinta/pangu.py,安裝方式如下:
pip3?install?-U?pangu
這么用就好了:
import?pangu
print(pangu.spacing_text('當(dāng)你凝視著bug,bug也凝視著你'))
運行結(jié)果如下:
當(dāng)你凝視著?bug,bug?也凝視著你
嗯,它自動給我們添加好了空格,非常不錯。
不過這有點費勁,有簡單一點的工具嗎?
有,我為此專門做了一個網(wǎng)頁,功能很簡單。
在左側(cè)輸入源文本,右側(cè)就會顯示添加空格之后的文本,頁面如下:

工具頁面
這個是我用 Vue.js 開發(fā)的,實際上就是用了 pangu.js 這個庫實現(xiàn)的,原理非常簡單,主要目的就是為了方便空格排版。
另外這個網(wǎng)站我也部署了一下,叫做:http://space.cuiqingcai.com/,大家以后也可以直接訪問使用,以后我有想調(diào)整的文本,直接就用它了。
P.S. 如果不能訪問的話好像是臨時掛了,我重新調(diào)整下,如果能訪問的請忽略這句話。
如果大家想獲取源碼,可以在公眾號「進擊的Coder」回復(fù)"空格"即可。
希望對大家有所幫助。
最后,為了世界的美好與和平,加個空格吧!
