【问题标题】:Special line break handling of periods in browsers?浏览器中句点的特殊换行处理?
【发布时间】:2014-07-03 01:35:25
【问题描述】:

我今天在测试一个新的 EPUB 阅读器时发现了一些奇怪的东西。如果文本中有省略号呈现为. . .,则读者将这些句点视为一个单元,即使它们之间存在空格。于是我启动了 Chrome 来打开底层的 HTML 文档,我发现 Chrome 也有同样的行为,还有 iBooks 和 Readium。

我似乎无法在任何地方找到此文档——浏览器中是否对句点进行了特殊处理?我会假设空格始终是发生换行符的分隔符,但这似乎反驳了这个假设。

【问题讨论】:

    标签: html line-breaks


    【解决方案1】:

    HTML 用户代理可能在换行时对句点(和其他字符)进行特殊处理。这在规范中没有定义。特别是,HTML(或 CSS)规范要求或建议应用 Unicode line breaking rules。但是,这些规则的一部分已经在不同程度上在浏览器中实现,导致confusion既是由于浏览器的差异,也是因为这些规则并不适用于所有场合。

    特别是句点“.”,或正式的 U+002E FULL STOP,在 Unicode 规则 (UAX #14) 中具有换行类 IS(中缀分隔符)。正如口头说明所说,“当不用于数字上下文时,中缀分隔符是句尾标点符号。因此,他们总是事先防止休息。”这在规则 LB13 中正式规定。这意味着 ”。 . 。”保持在一起,并且在第一个句点之前也不允许换行(除非允许或被更高优先级的规则强制)。

    但是,据我所知,这并没有在一般的网络浏览器中实现(在 Win 7 上的 Chrome、Firefox、IE 上测试),所以您的文档或上下文中可能有一些特殊的东西,或者您可能正在使用不同版本的 Chrome。

    在 IE 中部分实现了在句点之前不中断的规则。如果你有,比如说,“foo .bar”,在句点之前有一个正常的空格,IE 不会破坏表达式。

    【讨论】:

    • 嗯,是否有一个 CSS 属性可以防止“...”上的换行符尽管?我看了但找不到。
    • @WaynnLue,只是在你将字符包裹在一个元素中(通常是span)的意义上,你可以在它上面设置white-space: nowrap
    猜你喜欢
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多