Стандарт ECMA-48¶
ECMA-48 — это международный стандарт, определяющий набор управляющих последовательностей для терминалов и устройств текстового вывода, также известный как «стандарт ANSI-escape-последовательностей». Он был разработан Европейской ассоциацией производителей компьютеров (ECMA) и впервые опубликован в 1976 году. Стандарт описывает, как программное обеспечение может управлять отображением текста, цветом, курсором, форматированием и другими аспектами вывода на текстовые терминалы, совместимые с протоколом ANSI X3.64.
¶История
¶Предпосылки создания
В 1960–1970-х годах, с развитием компьютерных терминалов (например, VT52, VT100 от Digital Equipment Corporation), возникла необходимость в универсальном способе управления отображением текста. Разные производители использовали собственные, несовместимые управляющие последовательности, что затрудняло переносимость программного обеспечения. Для решения этой проблемы в 1974 году Американский национальный институт стандартов (ANSI) начал разработку стандарта ANSI X3.64, который был опубликован в 1977 году. Параллельно ECMA, объединявшая производителей вычислительной техники в Европе, разработала собственный стандарт ECMA-48, основанный на тех же принципах, но с более чёткой спецификацией.
¶Развитие и версии
Первая версия ECMA-48 была опубликована в 1976 году. В 1979 году вышла вторая редакция, которая была синхронизирована с ANSI X3.64-1979. В 1984 году была выпущена третья редакция, включившая дополнительные управляющие последовательности для работы с цветом, графикой и режимами отображения. Четвёртая редакция (1991) добавила поддержку 256-цветных режимов и расширенных функций. Последняя, пятая редакция, вышла в 1996 году и остаётся актуальной по сей день. В 2002 году стандарт был принят как международный ISO/IEC 6429, что обеспечило его глобальное распространение.
¶Влияние на индустрию
ECMA-48 стал основой для большинства современных текстовых терминалов, эмуляторов (например, xterm, GNOME Terminal, Windows Terminal) и консольных приложений. Он также используется в протоколах удалённого доступа, таких как SSH, Telnet и RDP, для передачи управляющих команд. Благодаря стандарту, программы, написанные для Unix-подобных систем, могут корректно отображать цвета и форматирование на любом совместимом терминале.
¶Структура и принципы
¶Управляющие последовательности
ECMA-48 определяет два типа управляющих последовательностей:
- CSI (Control Sequence Introducer) — последовательность, начинающаяся с символа ESC (код 27) и следующего за ним символа
[(код 91). После CSI следуют параметры (числовые значения, разделённые точкой с запятой) и завершающий символ (например,mдля установки атрибутов текста). Пример:ESC[31m— установка красного цвета текста. - SGR (Select Graphic Rendition) — подмножество CSI, отвечающее за форматирование текста: цвет, яркость, подчёркивание, мигание и т.д. Параметры SGR передаются в виде чисел, например,
1— жирный,4— подчёркнутый,31— красный текст.
¶Классификация управляющих функций
Стандарт делит функции на несколько категорий:
- Функции управления курсором — перемещение курсора вверх, вниз, влево, вправо, в начало строки, на определённую позицию, сохранение и восстановление позиции.
- Функции управления отображением — очистка экрана, очистка строки, установка режимов (например, режим вставки, режим замены).
- Функции форматирования текста — установка цвета текста и фона, жирности, курсива, подчёркивания, зачёркивания, мигания, скрытого текста.
- Функции управления графикой — установка режимов отображения (например, 7-битный, 8-битный, 256-цветный), выбор шрифта.
- Функции управления устройством — запрос статуса, сброс, установка параметров терминала.
¶Примеры последовательностей
ESC[2J— очистка всего экрана.ESC[H— перемещение курсора в левый верхний угол.ESC[1;31m— установка жирного красного текста.ESC[0m— сброс всех атрибутов к стандартным.ESC[?25h— отображение курсора,ESC[?25l— скрытие курсора.
¶Применение
¶В операционных системах
ECMA-48 широко используется в Unix-подобных системах (Linux, macOS, BSD) для управления консольным выводом. Почти все современные эмуляторы терминалов (xterm, GNOME Terminal, Konsole, iTerm2) поддерживают стандарт. В Windows до версии 10 поддержка была ограниченной, но начиная с Windows 10 (версия 1511) встроенный консольный хост (conhost.exe) и Windows Terminal полностью поддерживают ECMA-48.
¶В программировании
Многие библиотеки и фреймворки используют ECMA-48 для цветного вывода. Например:
- ANSI escape codes — встроенная поддержка в языках C, Python, Ruby, JavaScript (Node.js) через управляющие последовательности.
- Библиотеки — ncurses, terminfo, termcap, которые предоставляют абстракцию над управляющими последовательностями.
- Инструменты — Git (цветной вывод diff), grep, ls, vim, tmux, screen.
¶В веб-технологиях
ECMA-48 также используется в веб-приложениях, работающих через SSH или Telnet (например, в системах управления серверами, игровых MUD-серверах). Эмуляторы терминалов в браузерах (например, xterm.js) реализуют поддержку стандарта для отображения консольного вывода.
¶Критика и ограничения
¶Неполнота поддержки
Несмотря на стандартизацию, разные эмуляторы терминалов могут по-разному интерпретировать некоторые последовательности. Например, поддержка 256-цветного режима (последовательность ESC[38;5;Nm) не была реализована во всех терминалах до 2000-х годов. Некоторые старые терминалы (например, VT52) не поддерживают ECMA-48 вовсе.
¶Сложность для разработчиков
Использование управляющих последовательностей напрямую может быть неудобным из-за их синтаксиса. Для упрощения разработчики часто используют библиотеки-обёртки, такие как ncurses или terminfo, которые скрывают детали реализации.
¶Устаревание в графических интерфейсах
С развитием графических интерфейсов (GUI) и веб-приложений, текстовые терминалы стали менее распространены. Однако ECMA-48 остаётся важным для серверного администрирования, разработки и отладки, где консольный вывод остаётся основным средством взаимодействия.
¶Интересные факты
- Стандарт ECMA-48 был одним из первых, кто ввёл понятие «escape-последовательности», что позволило управлять выводом без использования специальных драйверов.
- В 1980-х годах многие производители терминалов (например, Wyse, ADDS) добавляли расширения к ECMA-48, что приводило к несовместимости. Однако со временем стандарт стал де-факто основным.
- В 256-цветном режиме используется 8-битная палитра, где первые 16 цветов соответствуют стандартным ANSI-цветам, а остальные 240 — равномерно распределённым оттенкам.
- Некоторые современные эмуляторы терминалов (например, Kitty, Alacritty) поддерживают расширенные возможности, выходящие за рамки ECMA-48, такие как true color (24-битный цвет) и гиперссылки.
¶Источники
- ECMA-48: Control Functions for Coded Character Sets (5th edition, 1996)
- ISO/IEC 6429:1992 — Information technology — Control functions for coded character sets
- ANSI X3.64-1979 — Additional Controls for Use with ASCII
- Документация xterm (man xterm)
- Спецификация Windows Terminal (Microsoft Docs)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


