unicode-math v0.8e 和 v0.8g 之间的数学脚本大小发生了变化?

unicode-math v0.8e 和 v0.8g 之间的数学脚本大小发生了变化?

我刚刚使用较新版本的 编译了一份现有文档unicode-math,发现很多行/分页符都不同。原因似乎是数学模式中下标/上标的大小在unicode-math0.8e 和 0.8g 版本之间发生了变化。

例如,使用最小文档

\documentclass[12pt]{article}

\usepackage{unicode-math}

\begin{document}

\begin{equation}
    x^Ax^Bx^Cx^Dx^Ex^Fx^Gx^Hx^Ix^Jx^Kx^Lx^Mx^Nx^Ox^Px^Qx^Rx^Sx^Tx^Ux^Vx^Wx^Xx^Yx^Z
\end{equation}

\end{document}

unicode-math0.8e 得出

unicode-math 0.8e 输出

unicode-math0.8g 则

unicode-math 0.8g 输出

我的问题是,这是有意还是意料之中?在发行说明unicode-math0.8g, 我懂了

  • 更好地使用 LuaTeX 中的脚本样式大小(我认为是一种回归)。

事实上,据我所知,似乎只有 LuaTeX 受到了影响?

答案1

编辑以提供更多详细信息

我设法找到了 v0.8g 中所做的相关更改。具体来说,引入了以下代码um-code-main.dtx

\cs_new:Nn \@@_declare_math_sizes:
  {
    \dim_compare:nF { \fontdimen 10 \g_@@_trial_font == 0pt }
      {
        \DeclareMathSizes { \f@size } { \f@size }
          { \@@_fontdimen_to_scale:nN {10} \g_@@_trial_font }
          { \@@_fontdimen_to_scale:nN {11} \g_@@_trial_font }
      }
  }

我们看到unicode-math故意地覆盖 处的数学大小声明\normalsize。这是因为 OpenType 数学字体包含附加参数ScriptPercentScaleDown( \fontdimen10) 和ScriptScriptPercentScaleDown( \fontdimen11)。对于 OpenType Latin Modern Math,这些分别是7050

因此,在文章中,第一级和第二级脚本的12pt预期字体大小(根据新的)分别为和。请注意,LaTeX 内核旧版声明在文本中第一级和第二级脚本分别为和。因此,使用时,您会观察到第一级脚本略大。unicode-math8.4pt6pt8pt6pt12ptunicode-math


12pt文章中,pdfLaTeX\usepackage{lmodern}和 XeLaTeX/LuaLaTeX\usepackage{unicode-math}与 OTF LM Math之间存在更多细微的差别。

在 pdfLaTeX 情况下,text-size、script-size 和 script-script-size 使用的设计大小分别LMMathItalic12LMMathItalic8LMMathItalic6

但是在 XeLaTeX/LuaLaTeX 的情况下\usepackage{unicode-math},text-size 使用OTF LM Math 10pt放大到 的字体12pt,script-size 使用OTF LM Math 7pt放大到 的字体8.4pt,script-script-size 使用OTF LM Math 5pt放大到 的字体6pt


附录

第一级脚本的奇怪8.41483pt是由于浮点运算顺序不正确造成的。

我有修复了舍入错误(不是为了遵守原始的数学大小声明,因为我认为我们应该使用 OpenType 参数)在@egreg 打开的问题中:

\documentclass[12pt]{article}
\usepackage{unicode-math}

\ExplSyntaxOn
\cs_set:Nn \__um_fontdimen_to_percent:nN
  {
    \fp_eval:n { \dim_to_decimal:n { 65536 \fontdimen #1 #2 } / 100 }
  }
\ExplSyntaxOff

\begin{document}

\begin{equation}
    x^Ax^Bx^Cx^Dx^Ex^Fx^Gx^Hx^Ix^Jx^Kx^Lx^Mx^Nx^Ox^Px^Qx^Rx^Sx^Tx^Ux^Vx^Wx^Xx^Yx^Z
\end{equation}

\end{document}

希望此项政策能尽快实施。这已写入源代码unicode-math。因此不再有舍入错误,是的!

相关内容