현재 개발 중인 애플리케이션(장기 소프트웨어)의 경우 텍스트 모드에서는 상대의 말이 반대이기 때문에 말의 그래픽을 반전시켜야 합니다. 그러나 유니코드는 역방향 한자 문자를 제공하지 않습니다. 나는 이 Wikipedia 기사에서 이 다이어그램과 유사한 스타일로 한자 반전을 검색하고 있습니다.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는 일부를 썼습니다.파이썬 유틸리티콘솔 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 버전에 따라 코드에 몇 가지 문제가 있을 수 있습니다. 동일한 글꼴에서 문자의 정방향 및 역방향 버전을 원하는 경우 여전히 글꼴을 처리해야 한다고 생각하므로 가볍게 시작하지 마세요.