
O seguinte MNWE falha com TeX Live 2021 em diante.
\documentclass{article}
\usepackage{dictsym}
\begin{document}
\dsbiological
\end{document}
A compilação termina com
<</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!
De acordo comA resposta de David Carlisle, isso ocorre porque TL 2021 e posteriores adicionam um mapeamento gliftounicode por padrão, mas dictsym
é incompatível com isso. Sua solução alternativa envolveu desabilitar o mapeamento globalmente, masResposta de Ulrike Fischer a uma pergunta posteriorsugeriu que adicionar
\pdfmapline{=dictsym DictSym <dictsym.pfb}
ser usado para 'sobrescrever e corrigir as linhas originais do mapa'. E, de fato, o seguinte MWE funciona.
\documentclass{article}
\usepackage{dictsym}
\pdfmapline{=dictsym DictSym <dictsym.pfb}
\begin{document}
\dsbiological
\end{document}
Isto altera a linha original do mapa de duas maneiras.
- Um
=
é adicionado no início (se sobreviver\pdfmapline
). <
substitui<<
para que o pdfTeX incorpore apenas um subconjunto da fonte em vez de tudo.
Mas estou curioso sobre o =
, que não consegui encontrar documentado na documentação do pdfTeX, onde é explicada a sintaxe das linhas do arquivo de mapa. Observe que o MWE a seguir também é compilado.
\documentclass{article}
\usepackage{dictsym}
\pdfmapline{dictsym DictSym <dictsym.pfb}
\begin{document}
\dsbiological
\end{document}
Os testes básicos sugerem que é a mudança de <<
para <
que faz a diferença. Enquanto ambos
\pdfmapline{dictsym DictSym <dictsym.pfb}
e
\pdfmapline{=dictsym DictSym <dictsym.pfb}
trabalho, nem
\pdfmapline{=dictsym DictSym <<dictsym.pfb}
nem o original
\pdfmapline{dictsym DictSym <<dictsym.pfb}
fazer.
De acordo comeste comentário, omitir os iguais pode causar problemas mais sutis, mas o uso de =
não é comum em arquivos de mapas, pelo que vi. (Talvez seja específico para \pdfmapline
?)
Mas testes adicionais sugerem que isso =
é crucial, afinal. Em alguns casos, recebo o mesmo erro de compilação, a menos que inclua essa alteração também.
Então, estou intrigado em dois aspectos.
- O que exatamente o adicional faz
=
? - Como a incorporação de toda a fonte versus a incorporação de apenas um subconjunto interage com o mapeamento do glyphtounicocode?
Em alguns casos (se scaled
não for usado?) o seguinte também funciona.
\usepackage{dictsym}
\font\f=dictsym
\pdfnobuiltintounicode \f
mas não pode ser assim que eu deveria usá-lo, caso contrário ele falharia. (Achei que seria bom ter uma solução alternativa transparente.)
Saída detalhada para 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!