
現在開発中のアプリケーション(長期ソフトウェア)の場合、テキストモードでは相手の馬が反対であるため、馬のグラフィックを反転させる必要があります。ただし、Unicodeは逆漢字文字を提供しません。私はこのウィキペディアの記事でこの図に似たスタイルで漢字反転を検索しています。https://en.wikipedia.org/wiki/Shogi#Player_rank_and_handicaps
彼らはこれにCSSを使用します。フィルタプログラムまたはカーネルAPI(ioctl)を使用できます。ご回答ありがとうございます。
答え1
テキスト反転をサポートする端末エミュレータはなく、CSSに似たものもありません。
技術的には、一種のエスケープシーケンス(おそらく太字、イタリック体、アンダースコアなどのためのANSIシーケンスなど)があります。理想的には、少なくともいくつかの一般的なターミナルエミュレータ(少なくともxterm、vte、iterm2)でもこの機能を実装します。
おそらく、あなたのアプリがこの機能を使用する唯一のアプリであることを考慮すると、これが起こる可能性はほとんどないと思います。
ターミナルエミュレータ内で絵を描くためのさまざまな方法について知りたいかもしれません。可能なオプションには、RegisとSixel(聞いたことがありますが、よくわかりません。適切かどうかはわかりません)、またはTerminologyやTerminologyなどの一部の端末エミュレータによって提供されるカスタムソリューションがあります。 Kitty(私もよくわかりません)これらのソリューションです。ただし、これらのソリューションを使用すると、アプリケーションを特定の端末エミュレータで実行するように制限できます。さらに、漢字は直接描く必要があります。
私の結論は、端末エミュレータが望むことを実行できないことです。したがって、反転した文字の外観が本当に必要な場合は、テキストモードを選択するのは悪い選択です。テキストの回転が非常に重要なGTK +やQtなどのグラフィックツールキットで作成されたグラフィックアプリケーションを選択する必要があります。
修正する:
ECMA-48はSCO - SELECT CHARACTER ORIENTATION
エスケープシーケンスを定義します。\e[0 e
デフォルトの方向を選択する必要があり、\e[1 e
後続の文字は反時計回りに45°回転する必要があります\e[7 e
。私はこれがどこにも実装されていないと思います。また、基本と反転以外のグリフを増やしてカットする方法もわかりません。とにかく、ターミナルエミュレータがリバーステキストを実装している場合は、このエスケープシーケンスを使用するのが妥当である可能性があります(数値引数として0と4のみを許可しても)。
答え2
John Zaitseffはいくつか書いた。Pythonユーティリティコンソールpsfフォントを操作しやすい単純なASCII表現に変換します。選択したフォントの各グリフを反転して、次の順序で新しいフォントを作成できます。
psf2psftx myfont.psf myfont.psftx
./invert <myfont.psftx >inverted.psftx
psftx2psf inverted.psftx myfontinverted.psf
ここで invert は小さな awk スクリプトです。
awk '
/ENDGLYPH/ { print glyph; glyph = "" }
/^\t[\.X]*$/ { glyph = $0 "\n" glyph; next }
{ print } '
たとえば、私は彼のスクリーンショットシミュレーション(reportlabとPILパッケージが必要)を使用してこの画像を作成しました。標準のLinuxコンソールフォントを反転した後
lat1-08.psfu
zcat /usr/lib/kbd/consolefonts/lat1-08.psfu.gz >myfont.psf
...
echo abc >text
psftx-screenshot inverted.psftx text inverted.png
python3のバージョンによっては、コードにいくつかの問題がある可能性があります。同じフォントで文字の順方向と逆方向のバージョンが必要な場合は、まだフォントを処理する必要があると思うので、軽く始めないでください。