この ANSI アートが Linux ターミナルで正しくレンダリングされない理由

この ANSI アートが Linux ターミナルで正しくレンダリングされない理由

私のライブラリがこの ANSI アートを適切にレンダリングしない理由を調査しようとしています:

肉食花のANSIアート

問題は ANSI エスケープ処理にあると考えましたが、実際の端末でも同じようです (XFce 端末でテスト済み)。

ANSIアートのターミナル

これをデバッグする方法がわかりません。ファイルはCP437エンコードで、次の場所にあります。16colo.rs ウェブサイト私はそれを UTF8 に変換しました (また、行あたりの文字数を示すメタタグは削除されています)。ファイルは次の場所にあります:https://jcubic.pl/text.ans端末には 80 列が必要です。そうでないと正しく表示されません。

なぜ壊れているのかという答えは構いませんが、それを修正して適切に表示する方法も知っておくと良いでしょう。

答え1

レンダリングの問題は、ANSI エディター (およびおそらく DOS でも、確認していませんが) によってスペースとして表示される null バイトによって発生します。

これを修正するには:

tr '\0' ' ' < 67_Calendar_2020_06_June.ans | iconv -f CP437 -t UTF8

関連情報