为什么 fontspec 会改变数学重音(并且只能使用 lualatex)?

为什么 fontspec 会改变数学重音(并且只能使用 lualatex)?

在下面的最小示例中,luatex 没有正确放置重音符号(太靠左边了):

\documentclass{minimal} 
\usepackage{fontspec}
\setromanfont{Linux Libertine O}
\begin{document}
\(\bar E\)
\end{document}

但是如果我用 xelatex 或者用 lualatex 编译它并\setromanfont{Linux Libertine O}注释掉,一切都正常。

我相信 fonspec 只适用于文本,不适用于数学。那么为什么会出现这种奇怪的行为呢?

答案1

这是我\showlists根据公式调用时得到的结果:

LuaTeX

### horizontal mode entered at line 6
\whatsit
.\localinterlinepenalty=0
.\localbrokenpenalty=0
.\localleftbox=null
.\localrightbox=null
\hbox(0.0+0.0)x20.0, direction TLT
\mathon
\vbox(8.20554+0.0)x7.95831, direction TLT
.\hbox(5.67776+0.0)x0.0, direction TLT
..\OT1/cmr/m/n/10 ^^V
.\kern-4.30554
.\hbox(6.83331+0.0)x7.95831, direction TLT
..\OML/cmm/m/it/10 E
\mathoff

特克斯

### horizontal mode entered at line 6
\hbox(0.0+0.0)x20.0
\mathon
\vbox(8.20554+0.0)x7.95831
.\hbox(5.67776+0.0)x0.0, shifted 2.31252
..\OT1/cmr/m/n/10 ^^V
.\kern-4.30554
.\hbox(6.83331+0.0)x7.95831
..\OML/cmm/m/it/10 E
\mathoff

LuaTeX 显然存在问题;可能是因为fontspec当不加载它或加载与 Linux Libertine O 不同的字体(我测试了 Old Standard 和 TeX Gyre Termes)时,我得到以下信息:

LuaTeX(不含 Linux Libertine O)

### horizontal mode entered at line 6
\whatsit
.\localinterlinepenalty=0
.\localbrokenpenalty=0
.\localleftbox=null
.\localrightbox=null
\hbox(0.0+0.0)x20.0, direction TLT
\mathon
\vbox(8.20554+0.0)x7.95831, direction TLT
.\hbox(5.67776+0.0)x0.0, shifted 2.31252, direction TLT
..\OT1/cmr/m/n/10 ^^V
.\kern-4.30554
.\hbox(6.83331+0.0)x7.95831, direction TLT
..\OML/cmm/m/it/10 E
\mathoff

相关内容