
Следующий 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}
Это изменяет исходную линию карты двумя способами.
=
В начале добавляется (если сохранилось )\pdfmapline
.<
заменяет<<
, поэтому 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
?)
Но дальнейшее тестирование показывает, что это =
имеет решающее значение. В некоторых случаях я получаю ту же ошибку компиляции, если я не включаю это изменение.
Итак, я озадачен двумя моментами.
- Что именно делает эта дополнительная функция
=
? - Как встраивание всего шрифта по сравнению с встраиванием только его подмножества взаимодействует с отображением 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!