XeLaTeX 和 PDF 文本中缺少的空格

XeLaTeX 和 PDF 文本中缺少的空格

我使用 xelatex 从这个 tex 文件编译成 PDF:

\documentclass[14pt]{scrartcl}

\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{polyglossia}
\usepackage{lipsum}
\setmainfont{Times New Roman}

\begin{document}
\lipsum
\end{document}

当我从 PDF 复制文本(在 Foxit Reader 或 SumatraPDF 中)时,有些行没有空格。例如,有一行:

metusami. Morbiacorcietnislhendreritmollis. Suspendisseutmassa. Crasnecante.

如果我注释掉\setmainfont{Times New Roman},所有空格都会出现。我该如何选择字体并从我的 PDF 文件中正常复制文本?

注:Miktex 2.9,Windows

答案1

PDF 格式不需要明确表示空格才能正确显示(因为它曾经是一种表示打印页面的格式)。因此,PDF 查看器需要使用一些启发式方法来决定字形之间的间隙是否大到足以算作单词间空格。由于设置对齐文本需要拉伸和收缩空格,因此这并不完全是小事。Adobe Reader 的启发式方法几乎一直有效。SumatraPDF 较新,开发团队规模较小,因此其启发式方法还不够精细:他们正在跟踪这一点,因为问题 #1316并要求人们向他们提交出现此问题的文档,以便他们尝试进行调整。我建议您提交您的文件,因为根据我的经验,他们可以非常快速地修复他们能够重现的问题。

随着 PDF 的现代发展,人们对诸如小屏幕的自动重排、文档处理的结构信息或视障人士的屏幕阅读器接口等事物感兴趣。因此,现在可以明确表示空格(我相信这甚至是某种程度的 PDF/A 合规性的要求)。有一个针对 pdftex 的补丁这里之后我相信你应该将以下内容添加到你的 tex 文件中:

\pdfmapline{+dummy-space <dummy-space.pfb}
\pdfgeninterwordspace

我不知道这个补丁是否仍然适用(错误跟踪器声称它已被分支替换,可能是这个),我还没有测试它是否真的能解决问题。我不知道 xetex 是否有类似的东西。如果你找到适合你的东西,请告诉我。

编辑以添加:回答你最初的问题,如果你增加字体的字间距(与微软字体相比,Computer Modern 的字间距异常大),你确实可以选择字体并进行正确的文本复制。例如,可以这样写:(\fontdimen3\font=4.7pt我根据使用 Computer Modern 的结果选择了 4.7pt \showthe\fontdimen3\font)。这确实可以解决你的问题,尽管弄乱字体设计师想要的间距并不是好的排版习惯……

相关内容