Введение
Особенность переноса на новую строку при заполнении строки.
Разбиение строки, также известное как перенос слов, — это разделение текста на строки таким образом, чтобы он соответствовал доступной ширине страницы, окна или другой области отображения. В текстовом отображении перенос строк означает автоматический переход на новую строку при заполнении текущей, чтобы каждая строка помещалась в видимую область, позволяя читать текст сверху вниз без горизонтальной прокрутки. Перенос слов — это дополнительная функция большинства текстовых редакторов, текстовых процессоров и веб-браузеров, которая позволяет разбивать строки между словами, а не внутри них, когда это возможно. Перенос слов избавляет от необходимости вручную добавлять символы новой строки в абзацах и позволяет гибко и динамически адаптировать отображение текста к дисплеям различных размеров.
Мягкий и твердый доход
Мягкий перенос строки или мягкий перенос слов – это разрыв, возникающий в результате переноса строки или слов (автоматического или ручного), в то время как жесткий перенос строки или жесткий перенос слов – это намеренный разрыв, создающий новый абзац. При жестком переносе можно (и следует) применять форматирование разрыва абзаца (например, отступ или вертикальный интервал). Мягкий перенос позволяет автоматически регулировать длину строки при изменении ширины окна пользователя или настроек полей и является стандартной функцией всех современных текстовых редакторов, текстовых процессоров и почтовых клиентов. Ручные мягкие переносы не нужны, когда перенос слов выполняется автоматически, поэтому нажатие клавиши "Enter" обычно создает жесткий перенос. В качестве альтернативы, "мягкий перенос" может означать намеренный, сохраненный разрыв строки, который не является разрывом абзаца. Например, принято печатать почтовые адреса в многострочном формате, при этом несколько строк воспринимаются как один абзац. Разрывы строк необходимы для разделения слов адреса на строки подходящей длины. В современных графических текстовых процессорах Microsoft Word и LibreOffice Writer пользователям предлагается вводить перенос строки между абзацами. Настройки форматирования, такие как отступ первой строки или интервал между абзацами, применяются в месте переноса строки. Непараграфный разрыв строки, то есть мягкий перенос, вставляется с помощью сочетания клавиш или через меню и предназначен для случаев, когда текст должен начинаться с новой строки, но не требуется никаких других эффектов, связанных с началом нового абзаца. В языках разметки текста мягкий перенос обычно предлагается в виде тега разметки. Например, в HTML есть тег <br>, который выполняет ту же функцию, что и мягкий перенос в текстовых процессорах, описанных выше.
Границы слов, дефис и пробелы
Мягкие переносы обычно размещаются после окончания полных слов или после знаков препинания, следующих за полными словами. Однако перенос слова может происходить и после дефиса внутри слова. Иногда это нежелательно, и этого можно избежать, используя неразрывный дефис (или твердый дефис) вместо обычного дефиса. Слово без дефисов можно сделать переносимым, добавив в него мягкие дефисы. Когда слово не переносится (то есть не разбивается на строки), мягкий дефис не виден. Но если слово переносится, то перенос происходит по мягкому дефису, который в этом случае отображается как видимый дефис в конце первой строки. (В редких случаях, когда слово должно переноситься, разбиваясь на строки, но без отображения дефиса, в допустимой точке переноса в слове ставится пробел нулевой ширины.) Иногда перенос нежелателен между соседними словами. В таких случаях перенос обычно можно заблокировать, используя твердый пробел или неразрывный пробел между словами вместо обычных пробелов.
Алгоритм
Опаковка слов — это задача оптимизации. В зависимости от того, что требуется оптимизировать, используются различные алгоритмы.
Минимальная разрывистость
Другой алгоритм, используемый в TeX, минимизирует сумму квадратов длин интервалов в конце строк, чтобы добиться более эстетичного результата, чем жадный алгоритм, который не всегда минимизирует суммарный квадрат интервалов.
История
Первоначальная функция переноса строк была использована в 1955 году в "устройстве управления печатью страниц", разработанном Western Union. Эта система использовала реле, а не программируемые цифровые компьютеры, и поэтому требовался простой алгоритм, который можно было реализовать без буферов данных. В системе Western Union каждая строка разбивалась на перенос при первом пробельном символе, встретившемся после 58-го символа, или на 70-м символе, если пробельный символ не был найден. "Жадный" алгоритм переноса строк предшествовал методу динамического программирования, описанному Дональдом Кнутом в неопубликованной служебной записке 1977 года, посвященной его системе компьютерной верстки TeX, и позднее более подробно опубликованному Кнутом и Плассом (1981).