XeLaTeX 连字符不是连字符?

XeLaTeX 连字符不是连字符?

我最近从 LyX 转到 TeXstudio,并使用 XeLaTeX 生成 PDF。由于软件包的原因,我无法使用 PdfLaTeX fontspec。我重写了简历,并去申请一些职位。令我惊讶的是,简历解析器没有识别连字符(“-”)。因此,我开始调查...

这是一个最小的可重现示例:

\documentclass[letterpaper]{article}

\usepackage[left=0.4in,top=0.4in,right=0.4in,bottom=0.4in]{geometry}
\usepackage{enumitem}
\usepackage{fontspec}
\usepackage{ulem}
\usepackage{xstring}
\usepackage{ifthen}
\usepackage[none]{hyphenat}

\pagenumbering{gobble}

\setmainfont{Times New Roman}
\setlength\parindent{0pt}

\begin{document}

-

\end{document}

在 Adob​​e Acrobat DC、Chrome 和 Xournal++ 中,PDF 看起来不错。

我尝试在生成的 PDF 中复制/粘贴连字符,但似乎没有任何东西被复制到剪贴板。自然而然,我很快使用 Apache PDFBox 编写了一个应用程序来列出所有 Unicode 字符。令我惊讶的是,XeLaTeX 不使用 Unicode Hyphen-Minus (U+002D),而是使用 Soft Hyphen (U+00AD)。

另外,如果我复制 PDF 中的一段文本,有时会将空格粘贴为换行符。

注意:我正在粘贴到纯文本区域。

所以,我的问题是:

  1. 为什么 XeLaTeX 使用软连字符?
  2. 如何配置 XeLaTeX 以使用 Hyphen-Minus?
  3. 为什么有些空格在复制/粘贴到纯文本中时会像换行符一样起作用?

谢谢大家。

答案1

这解决了我的问题。它应该也能解决你的问题。只需将其放入\XeTeXgenerateactualtext=1你的序言中即可。

\documentclass{article}

\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX,Numbers=OldStyle}
\setmainfont{Palatino Linotype}

\XeTeXgenerateactualtext=1

\begin{document}

The three-steps interdependent interdependent interdependent
interdependent interdependent interdependent interdependent
interdependent interdependent interdependent interdependent
interdependent interdependent interdependent independent independent
independent independent independent independent independent
independent independent
\end{document}

但是,这个解决方案并不完美。实际文本(/ActualText)是另一种 PDF 技术。最好的解决方案是将连字符映射到旧 ASCII,U+002D而不是不太常见但规范的U+2010。我仍在尝试找出如何做到这一点。

更新:

经过进一步调查,这实际上是由字体文件引起的。对于Times New Roman,它被映射到 none。对于Palatino Linotype和大多数其他字体,它被映射到U+2010,这是规范的,但不太常见,并且在大多数 PDF 查看器中无法搜索。对于其他一些字体,它确实被映射到U+002D。试着自己试验一下,看看你是否能找到这样的字体。我做到了。

如果这是在 LuaTeX 中,我总是可以使用 即时修补字体\directlua。对于这种连字符的特定情况,在 LuaTeX 中不会发生这种情况。我发现 LuaTeX 的唯一缺点是与 XeTeX 相比,它非常慢。

相关内容