HTML по умолчанию предназначен для сжатия пробелов. Другими словами, при рендеринге все серии символов пробелов (пробелы, табуляции, переводы строк ...) заменяются одним пробелом. Вы можете контролировать это поведение с помощью свойства white-space CSS:
CSS-свойство white-space
используется для описания того, как обрабатываются пробелы внутри элемента.
Значение
normal
Последовательности пробелов свернуты. Символы новой строки в источнике обрабатываются как другие пробелы. Разрывает строки по мере необходимости, чтобы заполнить линейные блоки.
pre
Последовательности пробелов сохраняются, строки разбиваются только на символах новой строки в источнике.
nowrap
Свертывает пробелы, как и в обычном режиме, но подавляет разрывы строк (перенос текста) внутри текста.
pre-wrap
Последовательности пробелов сохраняются. Строки разбиваются только на символах новой строки в источнике и при необходимости заполняют поля строк.
pre-line
Последовательности пробелов свернуты. Строки разбиваются на новых строках в источнике и по мере необходимости заполняют строки.
В случае с ASCII art вы также хотите использовать font-family фиксированной ширины .
.ascii-art {
font-family: monospace;
white-space: pre;
}
<div class="ascii-art">
###### # # ## # # ##### # ######
# # # # # ## ## # # # #
##### ## # # # ## # # # # #####
# ## ###### # # ##### # #
# # # # # # # # # #
###### # # # # # # # ###### ######
</div>