为什么一行可以有7~9个字?为确保按词分行,不在词内断开(例如应写作
现代化
而不是现
+LF
+代化
)而牺牲字距的做法。中文由于不按词分写(如朝鲜语、英文词间加空格),往往需要人工干预,因此仅在导语、小标题常用,长篇正文罕用。——@Kongque_Chinese
专用词按词换行:例如地名、人名、国名、重要的专有名词尽可能不要断开。
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/nobr
<!--不推荐用法,非标准特性-->
<nobr>中华民族</nobr>
<!--替代用法-->
<span style="white-space: nowrap">中华民族</span>
可以从字符的层面使用 Unicode 的控制字符
U+2060
(WORD JOINER
,简称 WJ,词连接符)2保证特殊词内部不断开,相对来说比其他方法更能保证在不同的环境下的效果。Unicode 自 3.2 版就引入了这个控制字符,其在 HTML 的转义表达为⁠
。这个字符在显现时不会占用字宽,读者完全看不见这个字符,不会为排版造成负面影响,但能明确提示用户代理(比如浏览器)禁止在该位置换行。
需要注意的是,Unicode 定义了相当数量的控制字符,用户最好能够按照规定正确使用,比如中文的「特殊词汇不换行」功能里就不推荐使用
U+200D
(ZERO WIDTH JOINER
,零宽连接符),因为这个字符原本是为阿拉伯文、天城文等书写系统里单词内字母连写用的。参考控制字符。
示例
<p>毛⁠泽⁠东</p>
码点为 U+6BDB
U+2060
U+6CFD
U+2060
U+4E1C
UTF-8 11100110
10101111
10011011
11100010
10000001
10100000
11100110
10110011
10111101
11100010
10000001
10100000
11100100
10111000
10011100
Requirements for Chinese Text Layout 中文排版需求 https://w3c.github.io/clreq
Chinese Gap Analysis 中文支持差距分析 https://www.w3.org/TR/clreq-gap
W3C《CSS文本模块》(工作草案) https://drafts.csswg.org/css-text-3/