Перевернутые буквы кандзи в консоли

Для приложения, которое я сейчас разрабатываю, (программа для сёги), для текстового режима мне нужно сделать перевернутую графику фигур, потому что фигуры противника перевернуты. Однако Unicode не предоставляет перевернутых символов кандзи. Я ищу возможность перевернуть кандзи в стиле, подобном этой диаграмме из этой статьи Википедии: https://en.wikipedia.org/wiki/Shogi#Player_rank_and_handicaps
где для этого используется CSS. Я могу использовать программы-фильтры или API ядра (ioctl). Заранее спасибо за ответ

-2
26.06.2017, 22:55
2 ответа

Ни один из эмуляторов терминала, о которых я слышал, не поддерживает перевернутый текст, и в нем нет ничего похожего на CSS.

Технически можно было бы придумать определенную управляющую последовательность (, возможно, в соответствии с жирным, курсивным, подчеркнутым и т. д. последовательностями ANSI ). В идеале, по крайней мере, несколько популярных эмуляторов терминала (, скажем, хотя бы xterm, vte и iterm2 ), реализовали бы эту функцию идентично.

Я не вижу разумных шансов на то, что это произойдет, учитывая, что, вероятно, ваше приложение будет единственным приложением, использующим эту функцию.

Возможно, вы захотите взглянуть на различные способы, позволяющие рисовать картинки внутри эмуляторов терминала. Возможности включают Regis и Sixel (. Я слышал о них, но не знаю их — не знаю, достаточно ли они хороши для вас ), или специальные решения, предлагаемые некоторыми эмуляторами терминала, например. Терминология или Китти (Я тоже не знаком с этими решениями ). Однако с таким решением ваше приложение, вероятно, будет ограничено запуском под определенным эмулятором терминала. Кроме того, вам придется рисовать кандзи самостоятельно.

Я бы сделал вывод, что эмуляторы терминала не могут делать то, что вы ищете, и поэтому, если вам действительно нужны перевернутые глифы,выбор текстового режима является неправильным выбором. Вы должны выбрать графическое приложение, написанное в графическом наборе инструментов (, например. GTK+ или Qt ), где вращающийся текст — это проще простого.

Обновление:

ECMA -48 определяет SCO - SELECT CHARACTER ORIENTATIONescape-последовательности:\e[0 eдолжны выбирать ориентацию по умолчанию, \e[1 eдолжны поворачивать последующие глифы против -по часовой стрелке на 45° и так далее до \e[7 e. Я не думаю, что это когда-либо было реализовано где-либо. Также не знаю, как следует растягивать и обрезать глифы для ориентации, отличной от стандартной и перевернутой. В любом случае, если эмулятор терминала когда-либо реализует перевернутый текст, может быть разумно использовать эту escape-последовательность (, даже если в качестве числового аргумента принимаются только 0 и 4 ).

4
28.01.2020, 05:15

Джон Зайцев написал несколько утилит для Python для преобразования консольных шрифтов psf в простое представление ascii, которым затем легко манипулировать. Вы можете использовать следующую последовательность для инвертирования каждого глифа в выбранном шрифте для создания нового шрифта:

psf2psftx myfont.psf myfont.psftx
./invert <myfont.psftx >inverted.psftx
psftx2psf inverted.psftx myfontinverted.psf

где инвертирование представляет собой небольшой awk-скрипт:

awk '
/ENDGLYPH/   { print glyph; glyph = "" }
/^\t[\.X]*$/ { glyph = $0 "\n" glyph; next }
             { print } '

Например, я использовал его эмуляцию скриншота (для чего нужны пакеты reportlab и PIL). ) для создания этого изображения image после инвертирования стандартного консольного шрифта 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, и я предполагаю, что вам все еще нужно поработать над шрифт, если вам нужны как правые, так и перевернутые версии символов в одном и том же шрифте, поэтому не принимайтесь за это легкомысленно.

0
28.01.2020, 05:15

Теги

Похожие вопросы