不管你怎麼換字體、調字距,都達不到那種自然的效果。這其實不是你的鍋,也不是設計師的問題——而是瀏覽器長期沒有正確處理中文與西文混排的間距。在中文網頁排版的世界裏,這個問題已經困擾了我們很多年。
如果你經常寫內容類應用,一定有過這樣的困惑:
為什麼中文和英文、數字混在一起,總是看起來那麼彆扭?
比如「我愛Vue」、「版本2.0」,這些混排的文字總顯得擠在一起、不太舒服。
不管你怎麼換字體、調字距,都達不到那種自然的效果。
這其實不是你的鍋,也不是設計師的問題——而是瀏覽器長期沒有正確處理中文與西文混排的間距。
在中文網頁排版的世界裏,這個問題已經困擾了我們很多年。
曾經的無解時代
根據中文排版規範,當漢字與西文或數字相鄰時,應當有一個微小的間距。
這被稱為“文字間距”或“中西文混排間距”。
過去,我們為了讓排版更舒服,試過各種土辦法:
•用腳本在中英文之間自動加空格;
•在字體文件裏做字距補丁;
•甚至用 letter-spacing、word-spacing 硬調。
但這些方法都不完美:有的破壞語義,有的導致對齊錯亂,還有的在不同瀏覽器下效果完全不同。
想讓下面這段話顯示得順眼:
我愛Vue,也愛React。
幾乎得靠一點“玄學”調試。
CSS 給出的答案:text-autospace
現在,終於有了官方方案。
在最新的 CSS Text 模塊中,W3C 定義了一個新屬性:
text-autospace: normal;
text-autospace 是 CSS Text Module Level 4 中新增的規範。
它的核心目的就是自動處理表意文字(如中文 CJK)與非表意文字(西文、數字等)之間的間距。
通俗點講,就是——在中文(或日文、韓文)與英文、數字之間,自動插入合適的視覺間距,
讓排版更自然、更有呼吸感,不再貼在一起。
原來在網頁中是這樣的:
加上這個屬性後,就變成了這樣:
差別雖然細微,但閲讀體驗完全不同。
當頁面裏有大量中英混排時,整篇文字會更均衡、更舒服。
目前,我注意到知乎已經啓用了這個 CSS 屬性。作為一個內容類網站,為他們點個贊!
兼容性:終於等來了黃金時代
其實,這個屬性在很多年前的草案裏就已經被提出,但一直沒人實現。直到最近,情況終於發生了變化:
也就是説,現在主流瀏覽器幾乎都支持了!
中文排版那點“小別扭”,終於能用標準 CSS 解決了。
使用建議
使用也很簡單,只需一行 CSS,就可以在全局生效(推薦寫在 body 或 :root 上):
:root {
/* 啓用自動混排間距 */
text-autospace: normal;
}
不過,為了保險起見,建議加上兼容判斷:
@supports (text-autospace: normal) {
:root {
text-autospace: normal;
}
}
這樣舊瀏覽器會自動忽略這個屬性,不會出錯。
寫在最後
這些年,中文網頁的中英文混排一直是個小麻煩。
為了那半個空格,我們寫過正則、改過字體、甚至造過插件。
現在,一個標準 CSS 屬性就能搞定:
text-autospace: normal;
這不僅是中文排版的改進,更是漢字文化影響 Web 的一個新起點。