為什麼電腦在處理西文長單詞換行時會出現如下圖示的現象?

標點,空格,行末的西文長單詞的換行(這個說法請專業人士修改),這些都經常會出現一些莫名其妙錯誤。任何一個認真學過書寫規則的小學生都會覺得看起來彆扭。不管是在網頁上,還是在很多文字處理程序裡面,尤其是在中英文混合的文段裡面更是如此。

想問這種情況是否有一個專業的名稱?它怎樣產生?為什麼計算機科學發展了這麼多年也不見它有何改善?

注意紅框部分:


這裡沒有任何錯誤可言。在我眼中這完全正常。

截圖中顯示的是完全正常的 word wrap [1] 結果。(不過第一個框里是 @許瀚文 Julius Hui 手誤多打了一個回車,是人為錯誤,和自動排版無關。)

Word wrap 指的是自動換行時不打斷西文單詞。

如果你覺得右邊不齊,那是因為這些文本是左對齊的,右端提前換行了就肯定會短一些,除非你讓段落齊頭尾 [2]。這和單詞長短也沒什麼關係。

「任何一個認真學過書寫規則的小學生都會覺得看起來彆扭」——那小學生在寬度一定的稿紙上會如何書寫這樣的段落?當你覺得這是「排版錯誤」,你想過你心目中正確的排版效果應該是什麼樣嗎?

以下寫得比較倉促,改天重新寫:

常見的 word wrap 行為大致都是這樣的:

如果行末空間放不下某個單詞,那麼這個單詞就換到下一行;長度超過一行的單詞就強制斷行;中文因為不用空格分詞,所以一般被排版引擎理解為一個超長的單詞或每字一個單詞;標點避頭尾也在考慮之內。

許多在乎字體排印細節的朋友都偏好在中西文之間留空格 [3]。這空格有個附加的好處就是可以幫助瀏覽器斷開中西文。

CSS 有個 word-break 屬性專門控制是是否進行 word wrap。人人網之類的妖怪網站用反人類的「word-break: break-all;」,行末放不下一個單詞了就從中間隨意斷開,避頭尾規則也被忽略。

[1] Word wrap http://en.wikipedia.org/wiki/Word_wrap

[2] Web 排版中,應該用左對齊還是兩端對齊? http://www.zhihu.com/question/20122284

[3] 中英文混排時中文與英文之間是否要有空格? http://www.zhihu.com/question/19587406


我個人比較喜歡使用justify的風格,在這種情況下,西文應該考慮適當的採用hyphenation來控制合理的word break的位置,這樣閱讀起來整體更加規整。

這個截圖中沒有採用justify的風格,所以右端沒有對齊是很正常的。


推薦閱讀:

有哪些較為符合漢字「舊字形」的電腦字體?
中文排版中有必要使用「首字下沉」嗎?使用時需要注意什麼問題?
中英文文本混排時,圓括弧該用中文括弧還是西文括弧?
做 PPT、Excel 時,Windows XP 里哪幾款字體最美觀且通用?

TAG:排版 | 字體排印 | 中文排版 |