Вопрос или проблема
Отображение символов орбитальных узлов в макросах groff ms
Я пытаюсь отобразить символы для восходящих и нисходящих орбитальных узлов (☊ и ☋) в groff, однако при экспорте документа в PostScript они просто не отображаются.
Чтобы добавить необычные символы в документ PostScript с помощью groff, нужно проделать довольно много работы. Сначала необходимо выбрать шрифт, который содержит данный символ. Использование Google для поиска названия и тега unicode может помочь найти, например, вот этот сайт, который сообщает, что, например, этот символ присутствует в шрифте DejaVuSans-Bold, который у меня есть на системе в формате ttf.
В наши дни, вероятно, вы сможете легче найти установленный шрифт, используя команду
fc-list :charset=260A
Вам нужно конвертировать ttf в формат, необходимый для groff. Я создал директорию /tmp/font/devps
и в ней выполнил
ttf2pt1 -a -e /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf DejaVuSans-Bold
где ttf2pt1
came был из пакета с таким же названием на моей системе. Это создало файлы DejaVuSans-Bold.afm
и DejaVuSans-Bold.pfa
. Их нужно дополнительно конвертировать с помощью
afmtodit DejaVuSans-Bold.afm textmap DejaVuSans-Bold
где afmtodit
поступил из пакета groff-perl
. Это создало файл DejaVuSans-Bold
, который теперь можно использовать в groff командой
.ft DejaVuSans-Bold
при условии, что вы сказали ему и gv
, где его искать, выполнив
export GROFF_FONT_PATH=/tmp/font
export GS_FONTPATH=/tmp/font
перед запуском groff -Tps
. Вам также нужно сослаться на символ по его юникодовому значению в исходном тексте, например:
здесь \[u260A] там
(Если ваш входной файл в utf-8, возможно, вы сможете выполнить это преобразование, добавив опцию groff -K utf-8
, которую я не пробовал).
Вот набор команд, который сработал для меня (возможно, вам нужно будет изменить путь к файлу ttf):
mkdir -p /tmp/font/devps
cd /tmp/font/devps
ttf2pt1 -a -e /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf DejaVuSans-Bold
afmtodit DejaVuSans-Bold.afm textmap DejaVuSans-Bold
export GROFF_FONT_PATH=/tmp/font
groff -Tps >text.ps <<\!
.ps 20
.vs 24
.ft DejaVuSans-Bold
здесь \[u260A] там
!
export GS_FONTPATH=/tmp/font
gv text.ps
Есть продолжение этого ответа в другом посте с участием eqn
.
Ответ или решение
Для отображения символов восходящих (☊) и нисходящих (☋) орбитальных узлов в groff с использованием макросов ms, необходимо выполнить несколько шагов, чтобы правильно настроить обработку этих символов и обеспечить их вывод в формате PostScript. Вот полное руководство по этому процессу:
Шаг 1: Выбор и установка шрифта
Для начала необходимо выбрать шрифт, который поддерживает нужные символы. Например, шрифт DejaVuSans-Bold содержит символы ☊ и ☋. Убедитесь, что вы установили необходимые пакеты, такие как ttf2pt1
и groff-perl
, которые нам понадобятся.
Шаг 2: Конвертация шрифта
Создайте директорию для шрифтов, например, /tmp/font/devps
, и перейдите в нее:
mkdir -p /tmp/font/devps
cd /tmp/font/devps
Затем выполните команду для конвертации .ttf
файла в нужный формат:
ttf2pt1 -a -e /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf DejaVuSans-Bold
Это создаст два файла: DejaVuSans-Bold.afm
и DejaVuSans-Bold.pfa
.
Шаг 3: Подготовка к работе с groff
Теперь вам нужно конвертировать afm-файл в формат, который сможет распознать groff:
afmtodit DejaVuSans-Bold.afm textmap DejaVuSans-Bold
После выполнения этого шага у вас будет файл DejaVuSans-Bold
, который можно использовать в groff.
Шаг 4: Настройка переменных окружения
Чтобы groff и Ghostscript могли найти ваш шрифт, установите соответствующие переменные окружения:
export GROFF_FONT_PATH=/tmp/font
export GS_FONTPATH=/tmp/font
Шаг 5: Подготовка документа groff
Создайте файл, содержащий требуемую информацию. В вашем документе используйте следующий код для их вывода:
groff -Tps > text.ps <<\!
.ps 20
.vs 24
.ft DejaVuSans-Bold
здесь \[u260A] там
!
Дополнительные параметры
Если ваш входной файл сохраняется в UTF-8, вы можете попробовать использовать опцию -K utf-8
для groff:
groff -K utf-8 -Tps > text.ps <<\!
.ps 20
.vs 24
.ft DejaVuSans-Bold
здесь \[u260A] там
!
Шаг 6: Просмотр результата
После генерации файла text.ps
, откройте его с помощью gv
или другой программы для просмотра PostScript:
gv text.ps
Заключение
Следуя этим шагам, вы сможете отобразить символы для восходящих и нисходящих орбитальных узлов в вашем документе, созданном с помощью groff. Помните, что точное расположение файлов шрифтов и их имена могут варьироваться в зависимости от вашей системы, поэтому убедитесь, что вы используете правильные пути при конвертации и представлении шрифтов.