Все инструменты

Основы

Что такое ASCII-арт? Краткая история и основные виды

Как устроены картинки из символов клавиатуры и откуда они взялись.

Обновлено:

ASCII-арт — это картинка, составленная только из символов, которые можно набрать на клавиатуре. В ней нет цветов и линий. Символы вроде /, \, _ и | выстраиваются в строки, пока не сложатся в буквы или рисунок.

 |\__/|
( o  o )
=\ ww /=
 /    \
(_|  |_)

И кот из пяти строк, и большой логотип, который терминальная программа выводит при запуске, — это ASCII-арт.

Что такое ASCII?

ASCII — это кодировка символов, впервые опубликованная как стандарт США в 1963 году. Она дала всем компьютерам одинаковый номер для каждого символа. Из 128 кодов 95 печатаемых: заглавные и строчные английские буквы, цифры, пробел и символы вроде ! @ # $ % ^ & * ( ) - _ = + [ ] { } ; : ' " , . < > / ? \ | ~.

Почти любой компьютер и шрифт поддерживают эти 95 символов, поэтому картинку только из них можно вставить куда угодно, и она не превратится в «кракозябры». Во многом поэтому ASCII-арт живёт так долго.

Краткая история

  • Рисунки на пишущей машинке. Рисовать символами начали раньше, чем появились компьютеры. С конца XIX века люди создавали картинки на пишущих машинках, впечатывая буквы и знаки друг поверх друга.
  • Принтеры и лаборатории. В 1960-х принтеры, умеющие рисовать изображения, были редкостью, поэтому картинки печатали символами. Известный пример — работа Кена Ноултона и Леона Хармона в Bell Labs 1966 года: они превратили фотографию в сетку мелких символов.
  • Эмотиконы. В 1982 году Скотт Фалман из Университета Карнеги — Меллона предложил помечать шутки на форуме знаком :-).
  • BBS и ANSI-арт. На модемных досках объявлений 1980–1990-х экраны входа и подписи украшали символьным артом. Картинки из блочных символов IBM PC (█ ▓ ▒ ░) в цвете называют ANSI-артом.
  • FIGlet. В 1991 году Гленн Чаппелл и Иэн Чай написали FIGlet — программу, превращающую текст в большой баннер из символов. До сих пор это самый распространённый способ делать стартовые логотипы терминальных программ и баннеры для README.
  • Каомодзи. В Японии стали популярны лица, которые читаются без поворота головы, например (^_^). С распространением Unicode люди начали смешивать символы разных письменностей: ʕ•ᴥ•ʔ, ¯\_(ツ)_/¯.

Виды ASCII-арта

Вид Что это Пример
Текстовый баннер Текст, превращённый шрифтом FIGlet в большие многострочные буквы Стартовые экраны, заголовки README
Контурный арт Контуры из символов вроде / \ _ | Кот, торт
Тоновый арт Области, заполненные символами разной плотности, например .:-=+*#%@ Преобразованная фотография
Блочный и ANSI-арт Картинки из блочных символов █ ▓ ▒ ░ Логотипы игр, пиксель-арт
Каомодзи и однострочники Лицо или действие в одной строке (╯°□°)╯︵ ┻━┻
Анимированный ASCII-арт Новая символьная картинка на каждый кадр. Известный пример — вращающийся пончик donut.c Энди Слоуна (2006) Вращающийся пончик, преобразование GIF

Строго говоря, ASCII-арт — только картинки из 95 символов ASCII. Картинки с другими символами, например █ или ツ, — это Unicode-арт или текстовый арт. В обиходе всё это называют ASCII-артом.

Зачем нужен моноширинный шрифт?

ASCII-арт рассчитан на то, что все символы одинаковой ширины. В моноширинном шрифте, как в редакторах кода и терминалах, i и W занимают одинаковое место, и строки выравниваются.

Большинство мессенджеров и соцсетей используют пропорциональные шрифты, где у каждого символа своя ширина. Вставьте туда ASCII-арт — пробелы и i станут узкими, W и @ широкими, и картинка поедет.

Есть три выхода.

  1. Используйте блок кода. В Discord, Slack, GitHub и других сервисах с блоками кода обрамление ``` переключает арт на моноширинный шрифт. См. Как вставить ASCII-арт в Discord.
  2. Выбирайте узкий арт. Однострочное каомодзи или узкий шрифт скрывают проблему. См. Почему ASCII-арт ломается в мессенджерах.
  3. Отправьте изображение. Сохраните арт как PNG — он будет одинаковым в любом приложении.

Где его используют?

  • Логотипы терминальных программ и экраны входа серверов
  • Заголовки в README на GitHub и разделители в комментариях к коду
  • Объявления на серверах Discord и игровые чаты
  • Поздравления с днём рождения и описания профилей в соцсетях

Создайте ASCII-арт на русском, английском, корейском, японском, китайском и других языках в конвертере текста. Сравните шрифты FIGlet или многоязычные стили для вашего текста. Для фото используйте конвертер изображений. Для движущихся картинок попробуйте конвертер GIF и анимированный арт.