Шрифты glyphtounicode, несовместимые с TeX Live 2021 и более поздними версиями: Что делает = в \pdfmapline? Какое значение имеет поднабор?

Шрифты glyphtounicode, несовместимые с TeX Live 2021 и более поздними версиями: Что делает = в \pdfmapline? Какое значение имеет поднабор?

Следующий MNWE не работает с TeX Live 2021 и выше.

\documentclass{article}
\usepackage{dictsym}
\begin{document}
  \dsbiological
\end{document}

Компиляция заканчивается на

<</usr/local/texlive/2023/texmf-dist/fonts/type1/public/dictsym/dictsym.pfb>>
    !pdfTeX error: pdflatex: builtin glyph names is empty
     ==> Fatal error occurred, no output PDF file produced!

В соответствии сОтвет Дэвида Карлайла, это потому, что TL 2021 и более поздние версии добавляют отображение glyphtounicode по умолчанию, но dictsymнесовместимы с этим. Его обходной путь включал отключение отображения глобально, ноОтвет Ульрики Фишер на более поздний вопроспредположил, что добавление

\pdfmapline{=dictsym DictSym <dictsym.pfb}

вместо этого использовать для «перезаписи и исправления исходных линий карты». И, действительно, следующий MWE работает.

\documentclass{article}
\usepackage{dictsym}
\pdfmapline{=dictsym DictSym <dictsym.pfb}
\begin{document}
  \dsbiological
\end{document}

Это изменяет исходную линию карты двумя способами.

  1. =В начале добавляется (если сохранилось ) \pdfmapline.
  2. <заменяет <<, поэтому pdfTeX встроит только часть шрифта, а не весь текст целиком.

Но мне любопытно =, что я не смог найти в документации pdfTeX, где объясняется синтаксис строк файла карты. Обратите внимание, что следующий MWE также компилируется.

\documentclass{article}
\usepackage{dictsym}
\pdfmapline{dictsym DictSym <dictsym.pfb}
\begin{document}
  \dsbiological
\end{document}

Базовое тестирование показывает, что именно изменение с <<на <имеет значение. В то время как оба

\pdfmapline{dictsym DictSym <dictsym.pfb}

и

\pdfmapline{=dictsym DictSym <dictsym.pfb}

работа, ни то, ни другое

\pdfmapline{=dictsym DictSym <<dictsym.pfb}

ни оригинал

\pdfmapline{dictsym DictSym <<dictsym.pfb}

делать.

В соответствии сэтот комментарий, пропуск знаков равенства может вызвать более тонкие проблемы, но использование =не является распространенным в файлах карт, насколько я видел. (Возможно, это характерно для \pdfmapline?)

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

Итак, я озадачен двумя моментами.

  1. Что именно делает эта дополнительная функция =?
  2. Как встраивание всего шрифта по сравнению с встраиванием только его подмножества взаимодействует с отображением glyphtounicode?

В некоторых случаях (если scaledне используется?) работает и следующее.

\usepackage{dictsym}
\font\f=dictsym
\pdfnobuiltintounicode \f

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


Подробный вывод для MNWE:

This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./prawf.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-01-22>
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2023/texmf-dist/tex/latex/dictsym/dictsym.sty
(/usr/local/texlive/2023/texmf-dist/tex/latex/psnfss/pifont.sty
(/usr/local/texlive/2023/texmf-dist/tex/latex/psnfss/upzd.fd)
(/usr/local/texlive/2023/texmf-dist/tex/latex/psnfss/upsy.fd))
(/usr/local/texlive/2023/texmf-dist/tex/latex/graphics/keyval.sty))
(/usr/local/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./prawf.aux) [1{/usr/local/texlive/2023/texmf-var/fonts/map/pdftex/updmap/pdft
ex.map}] (./prawf.aux) )</usr/local/texlive/2023/texmf-dist/fonts/type1/public/
amsfonts/cm/cmr10.pfb><</usr/local/texlive/2023/texmf-dist/fonts/type1/public/d
ictsym/dictsym.pfb>>
!pdfTeX error: pdflatex: builtin glyph names is empty
 ==> Fatal error occurred, no output PDF file produced!

Связанный контент