LuaLaTeX:为 Asana Math 重新映射 \mathcal 字母

LuaLaTeX:为 Asana Math 重新映射 \mathcal 字母

我想\matcal{H}在 LuaLaTeX 中使用我的数学字体 Asana Math(借助 unicode-math)。不幸的是,Asana Math 指定的书法字符不是我想要使用的:

从我之前在 Microsoft Word 中使用此字体的过程中,我知道 Asana Math 的书法字母设计更加标准:

有什么方法可以在公式中添加此(扩展)Unicode 字符?我尝试了以下解决方法: \textrm{\fontspec{Asana Math}{\char"10FEA9}}

这导致了以下情况:

我猜想可能是因为某种原因无法检测到该字符。我该怎么办,或者有更好的方法吗?

答案1

Asana Math 将这些作为风格替代包含在内,因此您可以通过添加到Style=Alternate来请求它们\setmathfont

\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont[Style=Alternate]{Asana Math}
\begin{document}
$\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
$\mathbfcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
\end{document}

在此处输入图片描述

您可能想知道\mathcal{R}。我认为这是一个字体错误,因为替换字形确实存在,只是没有设置为样式替代...

您可以在 LuaTeX 中修补字体来解决这个问题,但这有点复杂,因为字体加载器会丢弃字形名称,所以找到字形有点复杂:

\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}
\directlua{
  % We want to stop the fontloader from discarding names it considers useless, so enable keepnames
  fonts.privateoffsets.keepnames = true
  % That's not quite enough because the font is most likely already cached without the names, so disable the cache
  % WARNING: This affects all fonts you load in this documet from here on. This will make your document significantly slower.
  fonts.handlers.otf.cache.enabled = false
  fonts.handlers.otf.addfeature {
    name = "asana-salt-r",
    type = "substitution",
    data = {
      [0x211B] = "uni211B.salt"
    },
  }
}
\setmathfont[RawFeature=asana-salt-r,Style=Alternate]{Asana Math}
\begin{document}
\[\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\]
\[\mathbfcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\]
\end{document}

答案2

在这里,我恢复\mathcal到更传统的外观,将不需要的修订保存为\svmathcal

\documentclass{article}
\usepackage{amsmath,bm}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{Asana Math}
\let\svmathcal\mathcal
\DeclareSymbolFontAlphabet{\mathcal}   {symbols}
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\SetMathAlphabet{\mathcal}{bold}{OMS}{cmsy}{b}{n}
\begin{document}
$\mathcal{H}$ vs $\svmathcal{H}$

Also in bold:

$\bm{\mathcal{H}}$
\end{document}

在此处输入图片描述

我从 egreg 那里得到了这个想法fouriernc 包中的数学

相关内容