以下 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
与此不兼容。他的解决方法是全局禁用映射,但Ulrike Fischer 对后面问题的回答建议添加
\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}
做。
根据此评论=
,省略等号可能会导致更微妙的问题,但据我所知,在 map 文件中使用并不常见。(也许它特定于\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!