Page 144 - css揭秘
P. 144

20 连字符断行




                    难题


                        设计师迷恋文本的两端对齐效果。看一眼杂志和书籍中的精美排版,
                    就会发现这种效果无处不在。不过在网页中,两端对齐却极少使用,而且
                    越是有经验的设计师就越少使用。从 CSS 1 开始就已经有 text-align:
                    justify; 了,为什么还会形成这个局面呢?

                        只要看一眼图 5-1,其中的原因就会立刻浮出水面。在对文本进行两端
                    对齐处理时,需要调整单词的间距,此时会出现“单词孤岛”现象。这个结
                    果不仅看起来很糟糕,而且损伤了可读性。在打印媒介中,两端对齐总是与
                    连字符断行相辅相成的。因为连字符允许单词在音节分界处断开并折行,所
                    以在处理对齐时所需要调整的间距就少得多了,文本看起来也自然很多。
                        以前,有一些在网页上实现连字符断行的方法,但这类方法完全是“伤
                    敌八百,自损一千”。常见的方法包括服务器端预处理、JavaScript 后期处                              图 5-1
                    理、用在线生成器单独处理,甚至还有开发者耐着性子在单词中纯手工插入                                    CSS 两端对齐的默认效果
                    软连字符(­),以便浏览器可以在正确的地方断开单词。一般来说,这
                    种额外成本很不划算,因此设计师往往会改用其他的文本对齐方式。

                    解决方案


                        CSS 文本(第三版)引入了一个新的属性 hyphens。它接受三个值:




                     小 花 絮      文本折行的工作原理是怎样的?

                    与计算机科学中的很多事情类似,文本折行听起来简单易行,但实际上并非如此。这方面的算法有很多,
                    最流行的方案主要是贪婪算法和 Knuth-Plass 算法。贪婪算法的工作原理是每次分析一行,把尽可能多的
                    单词(当连字符可用时则以音节为单位)填充进该行;当遇到第一个装不下的单词或音节时,就移至下一
                    行继续处理。

                    Knuth-Plass 算法(得名于开发它的工程师)的工作方式就要高级很多。它会把整段文本纳入考虑的范
                    畴,从而产生出美学上更令人愉悦的结果,但其计算性能要明显差一些。

                    绝大多数桌面文字处理程序采用 Knuth-Plass 算法。不过出于性能考虑,浏览器目前采用的是贪婪算法,
                    因此它们的两端对齐效果往往不尽如人意。






                                                                                                              113
                                                                                             20 连字符断行
                                                                                             20 连字符断行         113





          ඀ࠡ  JOEC
   139   140   141   142   143   144   145   146   147   148   149