Каково нормальное поведение разрыва строки HTML?
Я ищу список символов и элементов, которые могут разбивать строки HTML, такие как пробелы, но я не могу найти ни одной страницы в Интернете с определением, каково нормальное поведение разрыва строки HTML. Я нашел такие:
- делимое пространство,
- вкладка,
- новая линия
- Пространство нулевой ширины (азиатское)
- Меньше "-"
- Soft-дефис
Разумеется, я не ожидаю, что он будет добавлен в тег pre.
1 ответ
Если я правильно понимаю, вы хотите знать, какие символы создают возможность мягкого переноса, то есть они допускают разрыв строки, чтобы соответствовать содержанию в мере.
Ответ в том, что он не полностью определен и зависит от языка:
В большинстве систем письма при отсутствии переносов возможность мягкого переноса происходит только на границах слов. Многие такие системы используют пробелы или знаки препинания для явного разделения слов, и эти символы могут идентифицировать возможности мягкого переноса. Скрипты, такие как тайский, лаосский и кхмерский, однако, не используют пробелы или знаки препинания для разделения слов. Хотя пространство нулевой ширины (U+200B) может использоваться в качестве явного разделителя слов в этих сценариях, эта практика не распространена.
[...] CSS не в полной мере определяет, где возникают возможности мягкого переноса, однако для различения распространенных вариантов предусмотрены некоторые элементы управления.
Вы можете частично контролировать это поведение, используя некоторые свойства CSS, такие как
line-break
, чтобы указать, как упаковка взаимодействует с пунктуацией и символамиword-break
, что может позволить возможность мягкой переноски между буквамиhyphens
, чтобы контролировать, разрешен ли перенос слов для создания более мягких возможностейoverflow-wrap
/word-wrap
, что может допускать произвольные разрывы внутри слова, чтобы предотвратить переполнение
Если вам нужен полный список символов, которые создают возможность мягкого переноса, вы можете использовать JS:
var log = console.log;
console.log = Function.prototype;
console.config({maxEntries: Infinity});
console.log = log;
var test = document.createElement('div');
test.className = 'test';
document.body.appendChild(test);
for (var i=0; i<0xffff; ++i) {
var char = String.fromCharCode(i);
test.textContent = 'a' + char + 'b';
if (test.clientHeight > 1) {
console.log(i.toString(16) + ': ' + JSON.stringify(char));
}
}
document.body.removeChild(test);
.test {
width: 0;
line-height: 1px;
}
div.as-console-wrapper {
max-height: 100%;
}