EB Garamond 和 amsmath \text

EB Garamond 和 amsmath \text

在我的系统(OSX 10.10.5;LuaTeX,版本 beta-0.80.0(TeX Live 2015);LaTeX2e <2015/10/01> 补丁级别 2)上,我运行以下 MWE:

\documentclass{article}

\usepackage{fontspec}
\usepackage{amsmath}

\begin{document}

\setmainfont{EB Garamond}
$\text{is}$ $\text{js}$ $\text{ is}$

\fontfamily{lmr}\selectfont
$\text{is}$ $\text{js}$ $\text{ is}$

\end{document}

在 PDF 输出中,第一行上的前两个 i 没有点。这可以解释什么?这种现象很可能是 EB Garamond 所特有的,因为输出不仅如所示正确显示拉丁语现代字母,而且当我使用 LucidaBrightOT 和 fbb 进行测试时也是如此。

答案1

似乎当i是水平列表中的第一个节点时,某些“上下文”被激活并用位置 984069 的字符luaotfload替换i,这确实是一个无点的 i(它位于私人使用区)。

在 EBGaramond 的 Lua 表中查找,我找到了字形 105(即“i”)的以下描述:

  [105]={
   ["anchors"]={
    ["basechar"]={
     ["Anchor-7"]=168,
     ["Anchor-8"]=167,
     ["Anchor-9"]=165,
    },
   },
   ["boundingbox"]=166,
   ["class"]="base",
   ["index"]=74,
   ["name"]="i",
   ["slookups"]={
    ["ss_l_12_s"]=984069,
    ["ss_l_26_s"]=983201,
    ["ss_l_27_s"]=983403,
    ["ss_l_28_s"]=983302,
    ["ss_l_29_s"]=983504,
    ["ss_l_65_s"]=983605,
    ["ss_l_79_s"]=984069,
    ["ss_l_88_s"]=984069,
    ["ss_latn_l_1_s"]=983123,
   },
   ["width"]=245,
  },

因此,罪魁祸首似乎是替代规则 和 中的一条ss_l_12_sss_l_79_sss_l_88_s行为仅在集合中触发mode=node

最小 LuaTeX 示例:

\input luaotfload.sty

\font\testA="EBGaramond:mode=node;"
\font\testB="EBGaramond:mode=base;"

\testA

\hbox{i}i

\testB

\hbox{i}i

\bye

在此处输入图片描述

因此,当处于活动状态时\hbox{i},在位置 984069 处打印无点 i(通过执行\showoutput或等效方法确认)mode=node,但在mode=base使用时不打印。

XeLaTeX 不会发生这种行为。

解决方法:使用Renderer=Basic

\documentclass{article}

\usepackage{amsmath}
\usepackage[no-math]{fontspec}

\setmainfont[Renderer=Basic]{EB Garamond}

\begin{document}

$\text{is}$ $\text{js}$ $\text{ is}$

\end{document}

在此处输入图片描述

相关内容