Вопрос или проблема
Как я могу отобразить символы так, как будто они квадратные в vim? Сами символы не обязательно должны быть квадратными, но если провести сетку через все центральные точки символов, она должна образовать квадратную сетку.
Я хочу сделать это, потому что проектирую план крепости для Dwarf Fortress. Игра построена на квадратной/кубической сетке.
На Windows есть несколько квадратных моноширинных шрифтов в conhost.exe (который был стандартным терминалом, используемым cmd и PowerShell, в настоящее время замененным Windows Terminal) по умолчанию, таких как шрифт 8×8, но я никогда не слышал о подобном в Linux. Я провел поиск и нашел квадратный шрифт, который был создан именно для вашей цели.
Square — это TTF шрифт, предназначенный для рогаликов
Рогалики состоят полностью из текста в ячейках сетки, но проблема в том, что большинство моноширинных шрифтов намного выше, чем они широкие, что означает, что рогалики либо имеют не квадратные ячейки, либо имеют квадратные ячейки, и символы не занимают всю коробку, ни одно из которых не выглядит эстетически приятно.
Square был разработан, чтобы символы заполняли квадратное пространство как можно более равномерно и однородно. Он вдохновлен тем, как японские символы всегда равномерно помещаются в коробку, независимо от их дизайна. Он не имеет типичных восходящих/нисходящих символов в строчных буквах и вместо этого делает строчные буквы более легкой версией заглавных букв.
Дубликаты на других сайтах:
Я также нашел много других шрифтов в той же категории, хотя у меня не было возможности их протестировать.
- http://www.1001fonts.com/monospaced+square-fonts.html
- http://www.fontspace.com/category/mono,monospace,square
- http://www.fontspace.com/category/mono,square,monospaced
Однако, если ваши тексты ограничены маленьким набором символов (в частности, ASCII 21 до 7E плюс несколько восточноазиатских символов), то вы можете просто использовать полуширокую форму напрямую без необходимости в другом шрифте.
Ниже приведен небольшой шелл-скрипт для конвертации из полушироких в полные. Строка для конвертации считывается из стандартного ввода.
halfwidth="!"#$%&"\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬¯¦¥₩ '
fullwidth="!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬ ̄¦¥₩ "
sed -e "y/$halfwidth/$fullwidth/"
Пример
$ cat square.txt 0123456789 1-square 8 2####text7 3$$$$$$$$6 4@@@@@@@@5 5(SQUARE)4 6~~~TEXT 3 7>>>2 8////\\\\1 9876543210 $ cat square.txt | sh fullwidth.sh 0123456789 1-square 8 2####text7 3$$$$$$$$6 4@@@@@@@@5 5(SQUARE)4 6~~~TEXT 3 7<<<<>>>>2 8////\\\\1 9876543210
Результат может не быть идеальными квадратами во многих случаях из-за шрифта, поэтому вам все равно может понадобиться проверить шрифт с квадратными полными символами на вашей системе, если соотношение сторон не соответствует вашим требованиям.
Создайте квадратный моноширинный шрифт из Courier, используя ваш любимый редактор шрифтов. Используйте его в вашем терминале.
Если у вас нет терпения для редактирования шрифтов и есть харизма (или что-то еще), вы можете сделать это вместо этого.
Интернет предложил это, но возможно, он не совсем квадратный.
Я искал шрифт для использования с генератором QR-кодов на python. Кажется, что эта библиотека предполагает определенное соотношение высоты и ширины символов 8:7, поэтому квадратные шрифты, упомянутые выше, фактически создали QR-код шире, чем он был высокий. На моем Mac шрифт Andale Mono в размере 14 или 28 пунктов создает идеально квадратные QR-коды. В окне iTerm, показанном ниже, например, QR-код точно 168:168.
Ответ или решение
Как отобразить символы на квадратной сетке в Vim?
Если вы хотите отображать символы в Vim, чтобы они выглядели как будто находятся на квадратной сетке, вам потребуется использовать шрифт, который специально разработан для этого, поскольку большинство монопространственных шрифтов имеют неравные соотношения высоты и ширины знаков. В этом руководстве мы обсудим некоторые полезные методы для достижения этого, в том числе использование квадратных шрифтов и создание собственного шрифта при необходимости.
1. Выбор шрифта
Квадратные шрифты – это шрифты, которые созданы с целью заполнить квадратное пространство знаков, равномерно воспринимая символы. Одним из самых известных квадратных шрифтов является шрифт Square, который изначально разработан для игр-роуглайков. Он избегает типичных восходящих и нисходящих элементов букв и расписан так, чтобы символы занимали ровно квадратное пространство.
Вот несколько ресурсов, где вы можете скачать квадратный шрифт:
Установив квадратный шрифт в систему, вы сможете настроить Vim для его использования с помощью следующих команд:
set guifont=Square\ Font:h12
Замените Square Font:h12
на название шрифта, который вы хотите использовать, учитывая нужный размер.
2. Использование полного ширинного формата
Если вы работаете с ограниченным набором символов (например, только с ASCII), вы можете использовать полноширинные формы для отображения текста. Это подразумевает преобразование полушироких символов в полноширокие. Для этого можно воспользоваться небольшим скриптом на Bash, который преобразует вводимые символы.
Пример скрипта для преобразования:
halfwidth="!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
fullwidth="!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
sed -e "y/$halfwidth/$fullwidth/"
Эта программа заменяет каждого полуширочного символа соответствующим полноширочным символом, гарантируя, что они займут квадратное пространство.
3. Создание собственного шрифта
Если вы обладаете навыками работы с графическими редакторами шрифтов, вы также можете создать собственный квадратный моноширинный шрифт на основе существующего, например, Courier. Это позволит вам настроить формат так, как это вам необходимо.
В качестве альтернативы, можно использовать инструменты для редактирования шрифтов от сторонних разработчиков, если у вас нет времени или желания заниматься ручным редактированием. Например, подходы, изложенные на сайта, такие как JWZ Blog могут быть весьма полезными.
Заключение
Для отображения символов на квадратной сетке в Vim вам следует тщательно выбирать шрифты и, если необходимо, адаптировать существующие шрифты под ваши нужды. С помощью квадратных шрифтов и превращения полушироких символов в полноширокие вы сможете четко организовать текст в соответствии с требованиями квадратной структуры. Надеемся, что эта информация была вам полезна для проектирования вашей крепости в игре Dwarf Fortress.