OpenType 数学系列中不使用连字?

OpenType 数学系列中不使用连字?

附加的纯 TeX 示例显示了三种情况:

  • 数学字母表\rm,,\bf使用\it纯 TeX 设置
  • 类似地,数学字母从“古典”拉丁现代字体加载
  • 类似地,数学字母表也加载了 OpenType Latin Modern 字体

对于前两种情况,文本使用连字设置;例如,{\fam\itfam fin}将产生连字。在最后一种情况下,当使用 OpenType 字体时,不会出现连字。否则,在文本中使用字体会显示选择了连字。

发生什么了?大卫·卡莱尔在尝试修复 的行为时发现了这种情况unicode-math,我一直在试图弄清楚这是否是我的错!XeTeX 和 LuaTeX+luaotfload 也发生了同样的情况,所以如果这是一个疏忽,它们都有责任。

连字符不起作用的示例

%!TEX TS-program = XeTeX

\ifx\XeTeXversion\undefined
  \input luaotfload.sty
  \def\otf#1{file:#1.otf}
\else
  \def\otf#1{[#1.otf]}
\fi

\hsize=10cm
\parindent=0pt\relax

%%%%%%%%%%%%%%%%%%%%%%%%%%
\hrule
\bigskip

{\bf Default \TeX}

Roman, italic, and bold math families:
$$ {\fam0 abcfin} \quad {\fam\itfam } \quad {\fam\bffam abcfin} $$

%%%%%%%%%%%%%%%%%%%%%%%%%%

\font\myrm = ec-lmr10 at 10pt\relax
\font\mybf = ec-lmbx10 at 10pt\relax
\font\myit = ec-lmri10 at 10pt\relax

\newfam\rmmathfam
\newfam\bfmathfam
\newfam\itmathfam

\textfont\rmmathfam\myrm
\textfont\bfmathfam\mybf
\textfont\itmathfam\myit

\hrule
\bigskip

{\bf Loading new tfm fonts}

Roman ({\myrm abcfin}), italic ({\myit abcfin}), and bold ({\mybf abcfin}) families:
$$ {\fam\rmmathfam abcfin} \quad {\fam\itmathfam abcfin} \quad {\fam\bfmathfam abcfin} $$


%%%%%%%%%%%%%%%%%%%%%%%%%%

\font\Urm = "\otf{lmroman10-regular}" at 10pt\relax
\font\Ubf = "\otf{lmroman10-bold}" at 10pt\relax
\font\Uit = "\otf{lmroman10-italic}" at 10pt\relax

\newfam\Urmmathfam
\newfam\Ubfmathfam
\newfam\Uitmathfam

\textfont\Urmmathfam\Urm
\textfont\Ubfmathfam\Ubf
\textfont\Uitmathfam\Uit

\hrule
\bigskip

{\bf Loading new OpenType fonts}

Roman ({\Urm abcfin}), italic ({\Uit abcfin}), and bold ({\Ubf abcfin}) families:
$$ {\fam\Urmmathfam abcfin} \quad {\fam\Uitmathfam abcfin} \quad {\fam\Ubfmathfam abcfin} $$

\bye

答案1

对于 luatex,您可以在基本模式下加载字体

在此处输入图片描述

\ifx\XeTeXversion\undefined
  \input luaotfload.sty
  \def\otf#1{file:#1.otf:mode=base}
\else
  \def\otf#1{[#1.otf]}
\fi

对于 xetex,我在聊天中 ping 了 Arthur……

luaotfload文档解释了这样做的必要性:

base模式通过将 OpenType 特性映射到传统的 TeX 连字和字距调整机制来工作。

它仅支持非上下文替换和字距调整对,速度稍快,尽管有一定的局限性。

node模式通过直接在 lua 端处理 TeX 的内部节点列表来工作,并支持更广泛的 OpenType 功能。

缺点是, node模式所需的复杂操作可能会减慢排版速度,尤其是对于复杂的字体,并且它在数学模式下不起作用。

默认情况下luaotfload处于node 模式,并且base在需要时必须请求模式,例如数学字体。

相关内容