新生成的 LuaLaTeX PDF 导致 Acrobat Reader 和 Edge 与 Latin Modern Mono Light 10 Bold 和 Chrysanthi Unicode 字体出现错误

新生成的 LuaLaTeX PDF 导致 Acrobat Reader 和 Edge 与 Latin Modern Mono Light 10 Bold 和 Chrysanthi Unicode 字体出现错误

几年来,我一直断断续续地LaTeX使用该类编写一本书长度的文档memoir。由于它们出色的字体处理能力,我将我的工作保存在几乎相同的XeLaTeXLuaLaTeX版本中,倾向于后者,因为它更全面地实现了该microtype软件包,但为了以防万一,我还是会使用前者。现在看来我遇到了这样一个以防万一的时刻,但如果可以的话,我不想放弃 Lua。

结束了该项目的长期中断,在此期间,我从 Windows 7 升级到 Windows 10,然后当 Win 10 变得不稳定时,不得不重新加载它。因此,需要重新安装所有软件,包括TeX,我TeXLive本月早些时候(2016 年 10 月)安装的,以代替MikTeX我一直在使用的;然后我重命名了我的两个 .tex 文件的副本(将原始文件与其输出一起保存以供基准测试),并进行了编译。在XeLaTeXTeXworks PDF 查看器中检查时,该版本在所有方面都与其早期版本相同,而该LuaLaTeX版本有两页,都在前言中,有扩大垂直间距的情况,令人讨厌但很容易修复;我可能会在单独的问题中处理这些问题。

但当我LuaLaTeX在 Adob​​e Acrobat Reader DC(版本 2015.020.20039)中打开该版本时,我发现,当我开始向下滚动时,许多页面都无法显示。每当我到达其中一个页面的顶部边缘时,就会弹出一条错误消息,内容如下:

“处理页面时出错。读取此文档 (135) 时出现问题。”

(网络搜索未找到有关 Acrobat Reader 错误 135 的信息。)向下滚动到该页面,有问题的页面将完全空白,但下一个非错误页面将与前几页相同。不过,2015 年 1 月的旧 PDF 仍能完美显示每一页,原始和新编译的 XeLaTeX PDF 也是如此。

因此,问题在于 LuaLaTeX 代码有时(根据 .log 文件)在 LuaTeX 版本 beta-0.76.0-2013062820 (rev 4627) (format=lualatex 2013.10.22) 和 LuaTeX 版本 0.95.0 (TeX Live 2016/W32TeX) (format=lualatex 2016.10.18) 之间进行的特定更改;或者,如果对文档中使用的某个软件包进行更改,则这些更改会对 LuaLaTeX 产生不利影响,但不会对 XeLaTeX 产生不利影响。LuaLaTeX 确实完成了编译,似乎并未意识到存在问题。并且,在 TeXworks 查看器中,除了前面提到的两页垂直间距问题外,没有出现任何问题。

经过详细检查,很明显问题页面是包含我使用的两种字体的页面:免费软件 Chrysanthi Unicode 版本 3.1(我在 Unicode Dingbats 块中只使用了五个字符)和 Latin Modern Mono Light 10 Bold,我已使用 fontspac 命令将其设置为文档的等宽字体,\setmonofont并且主要使用{alltt}同名包中的 verbatim 类环境调用,但偶尔也使用该\ttfamily命令。(奇怪的是,我也使用的 Latin Modern Mono Prop 10 Regular 没有这样的问题。)

这是我尝试过的 MWE,首先检查使用 Unicode Dingbat 块字符是否存在问题,然后显示两种有问题的字体,即包含普通文本和 dingbat 示例的 Chrysanthi 和 LM mono 字体,使用两种调用方法,将所有内容放在不同的页面上,以查看哪些会显示,哪些不会显示。

\documentclass{memoir}  
\usepackage{luatextra}  
\usepackage{alltt}  
\setmainfont{DejaVu Sans}  
\setmonofont[Path=./Fonts/]{lmmonolt10-bold.otf}  
\newfontface\flourishfont[Path=./Fonts/]{chrysuni.ttf}  
\begin{document}  
Normal ASCII range characters in DejaVu Sans.  
\newpage  
Unicode characters 2756, and 276A through 276D, in DejaVu Sans:  
❖ ❪ ❫ ❬ ❭  
\newpage  
{\flourishfont  
Normal ASCII range characters in Chrysanthi Unicode.}  
\newpage  
{\flourishfont  
Unicode characters 2756, and 276A through 276D, in Chrysanthi Unicode:  
❖ ❪ ❫ ❬ ❭}  
\newpage  
{\ttfamily  
Latin Modern Mono Light 10 Bold using \textbackslash ttfamily.}  
\newpage  
{\begin{alltt}  
Latin Modern Mono \newline Light 10 Bold \newline using \{alltt\} environment.  
\end{alltt}}  
\end{document}

不幸的是,作为 MWE,它不能工作。或者也许它以自己的方式工作。Acrobat Reader 根本无法打开 PDF,但会弹出:“打开此文档时出错。此文件已损坏,无法修复。” TeXworks 查看器按预期正确显示所有内容。 Firefox 浏览器中的本机 PDF 查看器也可以毫无障碍地显示文档和 MWE。

检查 Windows 10 中的其他选项,上下文菜单中文件的“打开方式...”建议使用 MicroSoft Edge 作为选项。我尝试后得到了有趣的结果。文档和 MWE 中的所有页面都打开了,在这两种情况下,LM Mono Light 10 Bold 都没有问题,而 Chrysanthi Unicode 字符 u2756、u276A 和 u276B 仅在文档​​的致谢页中使用,根本没有显示,而其他两个字符 u276C 和 u276D 仅在偶数(左侧)页眉中使用,在文档显示中表示为重音小写字母“a”(à)和一个空的矩形轮廓。(同样,XeLaTeX 和较旧的 LuaLaTeX PDF 都显示正确。)在 MWE 中,在 Edge 中,第 3 页呈现为无意义的字符串:

mj A lec aarc gl Alrg Slgamc,

第 4 页显示为:

Slgamc aarc 534 l 54 rmse 54 gl Alrg Slgamc

除了一些空格看起来比粘贴在这里的要长,更像是制表符,甚至这里的许多“单词”在 Edge 中被类似的长“空格”分开。

抱歉,这篇文章太长了,但我认为越详细越好。如果您在 MWE 中发现我的 TeX 语法等错误,导致它根本无法在 Acrobat Reader 中打开,请告诉我,我会修复它。

相关内容