一个小 bug
从上图可以看书逗号没有规避在行首,在我影响中文排版会有避头尾的规则不应该出现。为了确保准确性我们再来翻一遍 unicode 断行算法 Unicode 规范不仅是给字符安放了码位、制定了编码规则,还制定了大量与文字编码相关的规范并收在附件内,是规范不可缺少的组合部分。。
LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
LB19 Do not break before or after quotation marks, such as ‘ ” ’.
LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.
翻译下也就是
- LB13
在 ‘]’、‘!’、‘;’、‘/’ 之前不能断行,即使这些字符跟在空格后面。因此,此规则实质上此条规定了分隔号(/)需要避头; - LB19
引号的前、后均不能断行。也就是说常用的蝌蚪引号(“ ”)默认是既要避头也要避尾。 - LB21
在连字符、其他连字符、定宽空格、小写假名等字符前面不能断行,中文的连接号避头。 - LB22
两个省略号之间,以及字母数字叹号与省略号之间不能断行。也就是说,省略号不仅不能中间断开,而且要避头。
那为什么会出现前面那个 bug , 原来是同事使用了 word-break:break-all;
word-break:break-all
这个属性会把单词强制断开,为了实现中日韩排版里偶尔需要牺牲西文连字而定制的,不能保证中文的避头尾的正常使用。
word-wrap:break-word
CSS3 也已经明确要将 word-wrap 改为 overflow-wrap 。
这个属性会把单词断开,而且会尽可能地保持避头尾,也尽可能避免中途断开,例如解决超长网址。

