Курсивом, полужирными латинскими и греческими буквами с использованием нестандартного шрифта Unicode в gnuplot для создания (e) ps или pdf - PullRequest
3 голосов
/ 19 мая 2019

Я хотел бы создать постскриптум или PDF-фигуру с расширенными обозначениями, курсивом или жирным латинскими символами, а иногда (обычными) греческими символами. Как это вообще сделать?

Допустим, я скачал CMU Sans Serif , шрифт, который содержит глифы для всех странных символов, которые я когда-либо хотел использовать. Я преобразовал их в pfa с помощью онлайн-инструмента и скопировал файлы в каталог с рабочим каталогом.

Ожидания

Допустим, я хотел бы где-нибудь создать следующую запись. The notations using a text editor renders properly


Что я пробовал: оригинал

Я создаю сценарий gnuplot, закодированный в файл utf-8 (без спецификации) с содержанием

set term postscript eps enhanced "CMUSansSerif" 15 fontfile add 'CMUSansSerif.pfa' fontfile add 'CMUSansSerif-Oblique.pfa' fontfile add 'CMUSansSerif-Bold.pfa'
set encoding utf8
set o "print.eps"

p x t "Label: {/CMUSansSerif-Bold important }{/CMUSansSerif-Oblique note}: ∫⟨α₂ + β²⟩ = äßű"
set o

и выполняется с использованием новейшего gnuplot версии 5.2.6.

Что я получил

Я использовал редактор векторной графики, чтобы открыть файл eps, и соответствующая часть выглядит следующим образом:

the legend of the function does not contain the Greek letters


Что я тоже пробовал

Согласно ответу Итана я добавил adobeglyphnames к терминологии. Это сделало по крайней мере буквы доступными, но другие символы Unicode все еще недоступны. Результат: Result with adobeglyphnames


Вопрос

Что пошло не так? Как я могу получить желаемый результат?

Так много возможностей, где все может пойти не так: шрифт не подходит для этой задачи? Я скачал неправильную версию? Pfa конвертер сделал плохую работу? Я неправильно включил файлы шрифтов? Что-то не так с set encoding? Я использую плохой редактор векторной графики? У меня установлены неправильные шрифты, и редактор векторной графики пытается их использовать?

Ответы [ 2 ]

3 голосов
/ 19 мая 2019

Боюсь, что ответ таков: в общем, PostScript - это неправильный инструмент для этого. Если для вас вообще возможно работать с выводом PDF, я предлагаю вам сделать это. Возможно даже, что полученный PDF-файл может быть переведен в файл PostScript стандартными инструментами (например, pdf2ps). Это может сработать, если символы не-ascii ограничены греческими и другими относительно общими символами, но я не знаю, какая часть полных таблиц Юникода покрыта этими стандартными инструментами.

Если вам действительно нужно создать PostScript с дополнительными символами Unicode непосредственно из gnuplot, вы можете найти полные инструкции и примеры таблиц кодировки символов в файлах дистрибутива gnuplot:

.../term/PostScript/unicode_maps.README
.../term/PostScript/unicode_big.map
.../term/PostScript/unicode_small.map

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

===

Еще одна мысль. Есть два способа, которыми шрифт * .pfa может кодировать символы Юникода, которые достаточно распространены, чтобы иметь имя, назначенное Adobe для использования в PostScript. (1) Он может использовать общие имена, такие как uni0439 для кодовых точек Unicode. (2) Он может использовать специфичные для Adobe имена из списка здесь: список глифов agl-aglfn

При выборе вывода PostScript из gnuplot вы можете указать, какое из этих двух соглашений используется предоставленным вами шрифтом. По умолчанию используется имя «noadobeglyphnames».

set term postscript {no}adobeglyphnames

==

(рецепт для использования "set term pdfcairo")

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

  1. Создать каталог / home / share / fonts / CMUSans
  2. Добавить этот каталог в список поиска в файле / etc / fonts / local.conf
  3. Скопируйте файлы * .ttf в этот каталог из zip-архива CMU Sans Serif, на который вы ссылаетесь в исходном запросе. Системные системные инструменты fontconfig теперь должны найти эти шрифты. При осмотре они сообщают себя как «CMU Sans Serif»
  4. в gnuplot (протестировано с версией 5.2.6)
    set term pdfcairo font "CMU Sans Serif,15" set output 'enhanced_utf8.pdf' load 'enhanced_utf8.dem'

  5. преобразовать выходной файл PDF в PostScript с помощью следующей команды

    pdf2ps enhanced_utf8.pdf enhanced_utf8.ps

Скриншот результата показан ниже enter image description here

1 голос
/ 26 мая 2019

Кажется, что CMU Sans Serif не содержит символов UTF-8, которые вы запрашиваете. Проверьте шрифт с помощью редактора шрифтов, например Birdfont . Хотя на веб-странице отображаются символы, которые вы хотите использовать, сам шрифт не содержит их. Тем не менее, в вашем браузере могут отображаться символы, но они являются просто резервными представлениями других шрифтов.

...