Можно ли отображать текст в консоли с эффектом пробития?
Я уже изучал escape-коды ANSI, но похоже, что поддерживается только подчеркивание.
Я что-то пропустил или есть еще один вариант?
Если это невозможно, есть ли что-то эквивалентное в значении "это устарело"?
Ответ 1
Согласно стандарту ECMA-48 для терминалов, код SGR (Select Graphic Rendition), код 9, должен разрешить перечеркнутый текст. Тем не менее, код escape-кода ANSI на странице википедии говорит, что он не получил широкого распространения, и я не знаю об этом. Я подозреваю, что, поскольку DEC VTxxx series не поддерживал его.
Код префикс каждого символа на входе text с наложением наложения \u0336. Обратите внимание, что функция предполагает, что text кодируется в однобайтовой кодировке, такой как ASCII или латиница. Если вход в UTF-8, он должен быть сначала преобразован в UTF-32, чтобы получить границы символов.
Тогда вывод будет s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h на терминале с поддержкой UTF-8. Я не знаю, почему первый персонаж не имеет пробития, это должна быть проблема с терминами. Я мог бы обойти это, напечатав хотя бы один символ перед вызовом функции strikethrough.
Решение Unicode также генерирует немного отличающуюся блокировку в моем терминале (terminator) по сравнению с вышеупомянутой escape-последовательностью ANSI. Первый выводит строку точно в середине текста, тогда как последний делает ее немного ниже.