为什么从 Acrobat Reader 复制粘贴时 LuxiMono 的破折号会消失?

为什么从 Acrobat Reader 复制粘贴时 LuxiMono 的破折号会消失?

考虑以下 MCE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{luximono}
\begin{document}
\texttt{foo-bar}
\end{document}

从 Acrobat Reader 复制粘贴“foo-bar”时,破折号消失:得到“foobar”。

据我所知,这个问题不会发生:

  • 使用 Acrobat Reader 以外的 PDF 查看器,
  • 或使用 LuxiMono 以外的字体。

您知道为什么以及如何获得预期的行为吗?

答案1

您可以将字形名称映射到正确的 Unicode 位置:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{luximono}
\pdfglyphtounicode{hyphen}{002D}

\pdfgentounicode=1
\begin{document}
\texttt{foo-bar} 
\end{document}

(我不知道为什么 Adob​​e 不复制它,当名称是连字符时,也许它试图太聪明并删除连字符破折号)。

我解压了 vf 并按照连字符的方式进行操作:

包含ul9r8t.vpl(缩短)

(CHARACTER O 55
   ...
   (MAP
      (SETCHAR O 255)
      )
   )

这意味着连字符 (十进制 45=八进制 55) 被映射到八进制 255=十进制 173。这也是在 pdf 中得到的结果:(foo\255bar) 而不是(foo-bar)

8r.enc 编码/hyphen两次:一次在位置 45,一次在位置 173。

luximono 字体(在 中ul9r8a.afm)位于hyphen位置 45,而sfthyphen(“软连字符”)位于位置 173。

所以在我看来 Adob​​e 做了正确的事情,asfthyphen应该在复制和粘贴时消失,并且错误是有错误的:甚至将 \hyphenchar 设置为 -1 的打字机也不应该像这样重新映射连字符。

相关内容