Что такое 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 и @ широкими, и картинка поедет.
Есть три выхода.
- Используйте блок кода. В Discord, Slack, GitHub и других сервисах с блоками кода обрамление ``` переключает арт на моноширинный шрифт. См. Как вставить ASCII-арт в Discord.
- Выбирайте узкий арт. Однострочное каомодзи или узкий шрифт скрывают проблему. См. Почему ASCII-арт ломается в мессенджерах.
- Отправьте изображение. Сохраните арт как PNG — он будет одинаковым в любом приложении.
Где его используют?
- Логотипы терминальных программ и экраны входа серверов
- Заголовки в README на GitHub и разделители в комментариях к коду
- Объявления на серверах Discord и игровые чаты
- Поздравления с днём рождения и описания профилей в соцсетях
Создайте ASCII-арт на русском, английском, корейском, японском, китайском и других языках в конвертере текста. Сравните шрифты FIGlet или многоязычные стили для вашего текста. Для фото используйте конвертер изображений. Для движущихся картинок попробуйте конвертер GIF и анимированный арт.