
從 TeX Live 2021 開始,以下 MNWE 失敗。
\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}
這以兩種方式改變了原始地圖線。
=
在開頭添加An (如果仍然存在\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}
做。
根據這則評論=
,省略 equals 可能會導致更微妙的問題,但據我所知,在地圖檔案中使用並不常見。 (也許它特定於\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!