В процессе создания .ps
файла dvips
читается ".
нннpk
" шрифты. Эти шрифты не могут нести информацию о кодировке (в отличие от шрифтов Type3 или Type1). Но в .map
файлах информация о кодировкеможетбыть данным.
Можно ли использовать .map
file для связывания .enc
file с заданным шрифтом PK?
.map
файлы допускают параметр «ReEncodeFont», что-то вроде следующего:
lhr10 "Myenc ReEncodeFont" <my.enc
Можно ли это использовать? Или может быть какой-то другой метод, например, взлом .ps
файла напрямую? (конвертация шрифтов PK в Type1 или Type3 не рассматривается)
ОБНОВЛЯТЬ
Следующая цитата со стр. 12 руководства pdftex выглядит многообещающей:
Начиная с версии 1.40.19, файл кодировки может быть также указан для растровых шрифтов pk. В этом случае он назначает имена глифов из заданного вектора кодировки, который может использоваться с примитивом \pdfglyphtounicode (qv). Например: ...
Можно ли использовать подобный трюк для dvips
?
Вот полный пример использования кодировки для шрифтов PK в pdftex:
Скопируйте tex256.enc
из дистрибутива в текущий каталог и измените запись /idieresis % 239
на /uni044F
, затем обработайте следующий файл с помощью pdftex
:
\pdfcompresslevel=0 \pdfobjcompresslevel=0
\pdfmapline{lhr10 <tex256.enc}
\font\tenrm=lhr10 \tenrm
^^ef
\end
После этого вы получите копируемый растровый символ.
Можно ли выполнить обратную разработку созданного PDF-файла и добавить аналогичный материал непосредственно в .ps
созданный dvips
?
Похоже, следующий код в PDF отвечает за связь кодировки с файлом PK:
/Type /Encoding
/Differences [239/uni044F]
Какой эквивалент этого кода в PostScript?
решение1
Вам повезло! Первоначальный автор dvips
, Томаш Рокицкий, «вышел из отставки» (так сказать — я просто имею в виду, что он dvips
некоторое время не работал), чтобы изменить это, и выступает с докладом об этом на TUG 2019.
Вы можете увидеть его препринтздесь, и репозиторий GitHub с исходным кодомздесь.
Вы можете протестировать предложенные мной изменения выходных
dvips
файлов без обновления вашего дистрибутива или сборки новой версииdvips
. Скрипт Perladdencodings.pl
считывает файл PostScript, сгенерированныйdvips
на стандартном вводе, и записывает файл PostScript, который был бы сгенерирован измененнымdvips
на стандартном выводе. Для этого тестирования не требуются дополнительные файлы; кодировки по умолчанию для стандартных шрифтов TEX Live встроены в скрипт Perl.
Последняя версия - addencodings.pl
этоздесь(постоянная ссылка на последние данные на сегодня:здесь).