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

Стандартный текстовый буфер

Стандартный текстовый буфер (англ. Standard Text Buffer, СТБ) — формат хранения текстовых документов в виде плоского двумерного массива символов, где каждый символ занимает фиксированную позицию, определяемую номером строки и номером столбца. СТБ является базовой абстракцией, на которой построены многие текстовые редакторы, форматы файлов и протоколы обмена текстом.

История

Идея текстового буфера как двумерного массива символов возникла в 1960-х годах вместе с появлением первых текстовых редакторов и терминалов. В ранних системах текст хранился в оперативной памяти именно в виде линейного массива символов с фиксированной шириной строки, что соответствовало возможностям текстовых дисплеев того времени.

В 1970-е годы формат СТБ стал основой для разработки текстовых редакторов в Unix-системах, таких как ed и vi. В 1980-е годы концепция развилась в формате IBM DCF (Document Content Architecture), а также в формате IBM 3270, где текстовый буфер терминала хранился в виде массива 24×80 символов.

Устройство

В стандартном текстовом буфере текст представляется как двумерная сетка символов:

  • Строки нумеруются сверху вниз, начиная с 1 или 0 (в зависимости от реализации).
  • Столбцы нумеруются слева направо.
  • Каждая позиция занимает ровно один символ фиксированной ширины.

Типичная реализация СТБ включает:

КомпонентОписание
Массив символовОсновное хранилище текста
Указатель строкиТекущая позиция курсора по вертикали
Указатель столбцаТекущая позиция курсора по горизонтали
Размер буфераМаксимальное число строк и ширина строки

Форматы файлов на основе СТБ

Несколько распространённых форматов текстовых файлов основаны на принципе стандартного текстового буфера:

  • ASCII-текст — последовательность символов ASCII с разделителями строк (LF или CRLF).
  • IBM 3270 data stream — формат передачи данных для терминалов IBM, где текст организован в фиксированные поля.
  • ANSI art — формат хранения текстовых рисунков, использующий управляющие последовательности ANSI и фиксированную сетку 80×25 символов.

Применение

Стандартный текстовый буфер используется в следующих областях:

Текстовые редакторы

Большинство классических текстовых редакторов (ed, vi, emacs, Notepad) внутренне представляют документ как массив строк. Даже современные редакторы с поддержкой произвольной ширины символов и многоязычного текста (например, редакторы на базе CodeMirror или Monaco) используют модифицированную версию СТБ.

Терминальные эмуляторы

Терминальные эмуляторы (xterm, GNOME Terminal, PuTTY) хранят содержимое экрана в виде буфера символов, что напрямую соответствует модели СТБ. Прокрутка в терминале реализуется через кольцевой буфер строк.

Форматы обмена

Протоколы передачи текста, такие как TELNET и некоторые версии SSH, передают данные в виде потока символов, которые接收端 восстанавливает в двумерный буфер для отображения.

Ограничения

Стандартный текстовый буфер имеет ряд ограничений:

  • Фиксированная ширина символов — не поддерживает пропорциональные шрифты.
  • Ограниченная поддержка Unicode — символы вне BMP могут занимать более одной позиции в буфере.
  • Отсутствие структуры — формат не хранит информацию о стиле, форматировании или логической структуре документа.
  • Размер — работа с очень большими файлами (гигабайты) может быть неэффективной.

См. также

Литература

  • Raymond, E. S. The Art of Unix Programming. Addison-Wesley, 2003.
  • Arnold, K. The AWK Programming Language. Addison-Wesley, 1988.
  • IBM. 3270 Information Display System Data Stream Programmer's Reference. IBM, 1984.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru