新安装的 latex xelatex 无法像以前与 XeTeXinterchartoks 一样工作:缺少字符和多余的空格

新安装的 latex xelatex 无法像以前与 XeTeXinterchartoks 一样工作:缺少字符和多余的空格

之前,我曾使用过 XeTeXinterchartoks,因为我想为大写字母使用不同的字体。使用 xelatex 编译时,代码完全按照我的要求运行。

但是,我最近换了笔记本电脑,并重新安装了 texlive-full。现在,当我编译代码时,我发现在看似随机的地方出现了缺失字符和多余的空格。

发生了什么事?我该如何解决这个问题?

我附上了一个 MWE,我在最初思考如何创建此代码时也用到了它(大写字母和大写字母的字体不同

\documentclass[a4paper,11pt]{book}

\usepackage[default]{frcursive}


\XeTeXinterchartokenstate = 1\relax  
\newXeTeXintercharclass\ucletterclass  
\ExplSyntaxOn   
\int_step_inline:nnnn {"0041}{1}{"005A}
 { \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff



\XeTeXinterchartoks 0 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 0 = {\endgroup}
\XeTeXinterchartoks 4095 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 4095= {\endgroup}


\begin{document}


This is some text.

This is some text with an acronym in it GMT

This is some text with a proper name in it: London


\end{document}

这是我通过旧(顶部)和新(底部)安装使用相同代码所获得的结果。

答案1

该问题与 interchar 令牌无关

\documentclass[a4paper,11pt]{book}

\usepackage[default]{frcursive}

\showoutput

\begin{document}


This is some text.

This is some text with an acronym in it GMT

This is some text with a proper name in it: London


\end{document}

生产

在此处输入图片描述

使用 xelatex 和

在此处输入图片描述

使用 pdflatex 看起来不错,但 xpdf 却抱怨

Syntax Warning (27391): Badly formatted number
Syntax Warning (27393): Badly formatted number

这表明(我怀疑)字体在某处存在问题。

使用 xelatex 时 showoutput 日志是

....\T1/frc/m/n/10.95 s
....\T1/frc/m/n/10.95 ^^\ (ligature )
....\T1/frc/m/n/10.95 ^^@ (ligature )
....\T1/frc/m/n/10.95 o
....\T1/frc/m/n/10.95 ^^P (ligature )
....\T1/frc/m/n/10.95 m
....\T1/frc/m/n/10.95 ^^@ (ligature )
....\T1/frc/m/n/10.95 e
....\glue 5.65755 plus 1.88586 minus 1.88586
....\T1/frc/m/n/10.95 ^^F (ligature |)
....\T1/frc/m/n/10.95 t
....\T1/frc/m/n/10.95 ^^A (ligature )
....\T1/frc/m/n/10.95 e
....\T1/frc/m/n/10.95 ^^O (ligature )
....\T1/frc/m/n/10.95 x
....\T1/frc/m/n/10.95 ^^G (ligature )
....\T1/frc/m/n/10.95 t
....\glue 5.65755 plus 1.88586 minus 1.88586
....\T1/frc/m/n/10.95 ^^Q (ligature |)
....\T1/frc/m/n/10.95 w
....\T1/frc/m/n/10.95 ^^H (ligature )
....\T1/frc/m/n/10.95 i
....\T1/frc/m/n/10.95 ^^F (ligature )
....\T1/frc/m/n/10.95 t
....\T1/frc/m/n/10.95 ^^M (ligature )
....\T1/frc/m/n/10.95 h
....\T1/frc/m/n/10.95 ^^_ (ligature |)
....\glue 5.65755 plus 1.88586 minus 1.88586
....\T1/frc/m/n/10.95 ^^@ (ligature |)
....\T1/frc/m/n/10.95 a
....\T1/frc/m/n/10.95 ^^_ (ligature |)
....\glue 5.65755 plus 1.88586 minus 1.88586
....\T1/frc/m/n/10.95 ^^I (ligature |)
....\T1/frc/m/n/10.95 p
....\T1/frc/m/n/10.95 ^^F (ligature )
....\T1/frc/m/n/10.95 r
....\T1/frc/m/n/10.95 ^^@ (ligature )
....\T1/frc/m/n/10.95 o
....\T1/frc/m/n/10.95 ^^K (ligature )
....\T1/frc/m/n/10.95 p
....\T1/frc/m/n/10.95 ^^@ (ligature )
....\T1/frc/m/n/10.95 e
....\T1/frc/m/n/10.95 ^^G (ligature )
....\T1/frc/m/n/10.95 r
....\T1/frc/m/n/10.95 ^^_ (ligature |)
....\glue 5.65755 plus 1.88586 minus 1.88586
....\T1/frc/m/n/10.95 ^^Q (ligature |)
....\T1/frc/m/n/10.95 n
....\T1/frc/m/n/10.95 ^^@ (ligature )
....\T1/frc/m/n/10.95 a
....\T1/frc/m/n/10.95 ^^N (ligature )
....\T1/frc/m/n/10.95 m
....\T1/frc/m/n/10.95 ^^@ (ligature )
....\T1/frc/m/n/10.95 e

显示正在使用 T1 编码,这通常对 xelatex 来说并不好,但对于像这样的特殊字体来说可能是不可避免的。您不会收到来自 xetex 的警告,因为它“认为”字符在那里,但位置控制 K 中的连字符之后的所有文本都没有渲染。


使用 xelatex,我可以在 texlive 2020 中获得全文,并在 2021、2022、2023 中获得缺失文本

答案2

我无法告诉你如何修复,只能告诉你发生了什么变化。字体本身没有变化。但 XeTeX 处理它的方式不同。在 texlive 2019 中,如果你使用--output-driver="xdvipdfmx -vv"xdvipdfmx 进行编译,你会收到警告(这是使用 o 和 e 进行的测试):

xdvipdfmx:warning: Glyph width mismatch for TFM and font (frcr10)
xdvipdfmx:warning: TFM: -30.1361 vs. Type1 font: 32738

但 xdvipfdmx 仍然使用 PDF 中的 TFM 值:

[... 0 0 -30.1 -30.1 0 0 ...]

在 texlive 2023 中,消息已经改变:

xdvipdfmx:warning: Intolerable difference in glyph width: font=frcr10, char=10
xdvipdfmx:warning: font: 32738 vs. tfm: -30.1361

PFB 现在包含字体值:

[... 0 32738 32738 0 ...]

这会将字符移出页面。

(使用 pdftex 时,值很奇怪:-30.-1 -30.-1,adobe reader 似乎不介意,但在我的编辑器的 pdf 查看器中,字符也丢失了,lualatex 输出-30.1 -30.1)。

总的来说,我认为这是字体的问题(还有其他关于丢失连字符等的报告)。

相关内容