Несмотря на то, что может указывать природа элемента PRE, его поведение рендеринга фактически задается в CSS, а не в HTML, поскольку оно относится к рендерингу пробелов.
CSS2 говорит, что U+ 000D и U + 000A считаются новыми строками, и пользовательские агенты могут распознавать и нормализовать другие символы Юникода как таковые.Однако в нем нигде не упоминается U + 2028.
css-text-3 охватывает обработку пробелов и разрыв строки гораздо более полно.Он определяет термин разрыв сегмента следующим образом:
Для обработки CSS каждый определенный в языке документа разрыв сегмента, последовательность CRLF (U + 000D U +000A), возврат каретки (U + 000D) и перевод строки (U + 000A) в тексте обрабатываются как разрыв сегмента , который затем интерпретируется для рендеринга, как указаносвойство white-space
.
Как и CSS2, оно не упоминает U + 2028.
Но, в более позднем разделе , оно упоминает принудительноесимволы разрыва (один из которых U + 2028):
При определении разрыва строки:
- Независимо от значения
white-space
, строки всегда разбиваются при каждом сохраненном принудительномсимвол разрыва: для всех значений должно учитываться поведение разрыва строки, определенное для классов разрыва строки BK, CR, LF, CM, NL и SG в [UAX14].
Примечаниечто он даже говорит «Независимо от значения white-space
»;это означает, что даже вне элемента PRE U + 2028 должен вводить разрыв строки (аналогично элементу BR)!
Что касается реализаций, Internet Explorer и Microsoft EdgeПохоже, что это единственные браузеры, которые отображают U + 2028 как разрыв строки в элементе PRE со значением по умолчанию white-space: pre
.Единственное предостережение заключается в том, что они нормализуют его до U + 000A, поэтому в конечном итоге он рассматривается как обычный пробел за пределами элемента PRE (или white-space: pre
/ pre-line
).Это соответствует тому, что css-text-3 говорит о сохраненных принудительных перерывах, но я не уверен, допустим ли сам процесс нормализации U + 2028 до U + 000A, или нарушение спецификации Unicode / CSS.
Chrome в Windows 10 всегда печатает символ, помеченный LSEP, а Firefox всегда печатает символ нулевой ширины.
Независимо от того, является ли документ application / xhtml + xml или text / html, похоже, нетразница в любом из этих случаев.