Открыть сервис

Перевод строки

Перевод строки — это элемент форматирования текста, обозначающий переход на новую строку. В зависимости от контекста (письменность, типографика, компьютерные технологии) перевод строки может быть реализован как графический приём (перенос текста на следующую строку), так и как специальный управляющий символ или последовательность символов, используемых в цифровых данных. Основная функция перевода строки — разделение текста на логические блоки (строки, абзацы, стихи) или управление его отображением.

История

Ручной набор и пишущие машинки

В допечатную эпоху и в период ручного набора (типографского) перевод строки был физическим действием: наборщик вручную перемещал каретку или литеру. С изобретением пишущей машинки в XIX веке появился механизм возврата каретки (Carriage Return, CR) — рычаг, который сдвигал бумагу влево и одновременно переводил каретку на новую строку. В некоторых моделях для этого требовалось два действия: сначала возврат каретки, затем перевод строки (Line Feed, LF) — прокрутка валика на одну строку вверх. Эти механические операции легли в основу цифровых кодов управления.

Электронные и компьютерные системы

С развитием телетайпов и первых компьютерных терминалов в 1960-х годах возникла необходимость в стандартизации управляющих символов. Американский стандарт ASCII (1963 год) определил два кода: CR (Carriage Return, код 13) и LF (Line Feed, код 10). Однако разные производители и операционные системы использовали их по-разному:

  • Системы на базе Unix и Linux (включая macOS после версии 10) — используют только LF (код 10).
  • Системы семейства WindowsMS-DOS) — используют последовательность CR+LF (коды 13 и 10).
  • Классическая Mac OS (до версии 9) — использовала только CR (код 13).

Эта несовместимость сохраняется до сих пор, вызывая проблемы при переносе текстовых файлов между разными платформами (например, при открытии файла, созданного в Windows, в текстовом редакторе Linux могут отображаться символы «^M»).

Виды и классификация

По способу реализации

  1. Физический (механический) перевод строки — осуществляется в печатных устройствах (принтерах, пишущих машинках) путём перемещения бумаги или печатающей головки.
  2. Визуальный (графический) перевод строки — в системах вёрстки и текстовых процессорах (Microsoft Word, Adobe InDesign) строка переносится автоматически при достижении правой границы поля (автоматический перенос) или вручную (принудительный разрыв строки).
  3. Цифровой (программный) перевод строки — реализуется с помощью управляющих символов (CR, LF, CR+LF) или специальных тегов в разметке (например, <br> в HTML, \n в языках программирования).

По типу использования

  • Жёсткий перевод строки — вставляется автором или редактором принудительно (например, в стихах, адресах, списках). При изменении ширины окна или шрифта такие строки не переформатируются автоматически.
  • Мягкий перевод строки — генерируется программой автоматически при переносе текста на новую строку в пределах абзаца. При изменении параметров форматирования (ширина окна, размер шрифта) мягкие переносы пересчитываются заново.

Техническая реализация

Управляющие символы

В современных компьютерных системах перевод строки кодируется одним или двумя байтами:

  • LF (Line Feed, «\n», код 0x0A) — переводит курсор на следующую строку без изменения горизонтальной позиции. Используется в Unix-подобных системах, Linux, macOS, а также в большинстве языков программирования как универсальный символ новой строки.
  • CR (Carriage Return, «\r», код 0x0D) — возвращает курсор в начало текущей строки. В классической Mac OS использовался как единственный символ перевода строки.
  • CR+LF («\r\n», коды 0x0D 0x0A) — последовательность, принятая в Windows, MS-DOS, а также в протоколах интернета (HTTP, SMTP, FTP).

Особенности в разных средах

  • Текстовые редакторы (Notepad++, Visual Studio Code, Vim) обычно автоматически определяют тип перевода строки и могут конвертировать его. В Windows Notepad (до версии Windows 10) не распознавал строки с LF без CR, что приводило к отображению всего текста одной строкой.
  • Веб-технологии: в HTML перевод строки в исходном коде (кроме тега <br>) игнорируется браузером — пробелы и переносы схлопываются в один пробел. Для отображения переноса используется тег <br> или блочные элементы (например, <p>, <div>).
  • Языки программирования: в большинстве языков (C, C++, Java, Python, JavaScript) символ \n обозначает перевод строки, но при записи в файл на Windows он может автоматически заменяться на \r\n (например, в C при открытии файла в текстовом режиме).

Применение

В типографике и вёрстке

В профессиональной вёрстке (книги, газеты, журналы) перевод строки регулируется правилами переноса слов (слогового переноса) и выключки (выравнивания). Автоматический перенос строки в абзацах выполняется с учётом словарных правил, запрета на разрыв отдельных слов (например, аббревиатур) и висячих строк. Принудительный перевод строки (жёсткий) используется в стихах, заголовках, подписях к рисункам.

В программировании и обработке данных

Перевод строки является ключевым элементом при разборе текстовых файлов (парсинге), работе с логами, передаче данных по сети. В протоколах, таких как HTTP, каждая строка заголовка завершается последовательностью CR+LF. В базах данных перевод строки может храниться как часть строки, что требует экранирования при импорте/экспорте (например, в CSV-файлах).

В пользовательских интерфейсах

В текстовых полях, мессенджерах, редакторах кода перевод строки выполняется нажатием клавиши Enter (или Shift+Enter для мягкого переноса). В некоторых системах (например, в командной строке) перевод строки используется для завершения ввода команды.

Проблемы и особенности

Несовместимость платформ

Различие в символах перевода строки (CR+LF в Windows против LF в Unix) является одной из самых частых причин ошибок при работе с текстовыми файлами. Для решения этой проблемы существуют утилиты (например, dos2unix и unix2dos в Linux), а также настройки в текстовых редакторах и системах контроля версий (Git может автоматически конвертировать переводы строк).

Висячие строки

В типографике висячей строкой называют одну строку абзаца, оставшуюся на предыдущей странице (или в начале следующей). Это считается дефектом вёрстки, и для его устранения применяют принудительный перевод строки или изменение межсловных интервалов.

Символы-невидимки

В некоторых редакторах (например, в Microsoft Word) перевод строки может отображаться как специальный символ (¶), что помогает пользователю контролировать форматирование. В коде же символы CR и LF не видны, что может затруднять отладку.

Интересные факты

  • В стандарте ASCII коды CR и LF были заимствованы из телеграфных протоколов XIX века, где они управляли движением печатающей головки.
  • В некоторых языках программирования (например, в Python) при чтении текстового файла в режиме «r» (текстовый) перевод строки автоматически нормализуется до \n, независимо от исходной платформы.
  • В эпоху телетайпов и первых компьютеров (например, Teletype Model 33) последовательность CR+LF занимала около 0,2 секунды, что было заметно при быстрой печати.

Источники

  • ASCII standard (ANSI X3.4-1963, 1968)
  • Документация GNU Coreutils (утилиты dos2unix, unix2dos)
  • Спецификация HTML5 (W3C, раздел 4.5.2 — «The br element»)
  • Книга: «The Unicode Standard, Version 14.0» (Chapter 5, «Line Breaking Properties»)
  • Статья: «Newline» в Wikipedia (англ.) — версия от 10.10.2023

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →