glyphtounicode 與 TeX Live 2021 及更高版本不相容的字型: = 在 \pdfmapline 中做什麼?子集化有什麼差別?

glyphtounicode 與 TeX Live 2021 及更高版本不相容的字型: = 在 \pdfmapline 中做什麼?子集化有什麼差別?

從 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}

這以兩種方式改變了原始地圖線。

  1. =在開頭添加An (如果仍然存在\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}

做。

根據這則評論=,省略 equals 可能會導致更微妙的問題,但據我所知,在地圖檔案中使用並不常見。 (也許它特定於\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!

相關內容