检查是否加载了 opentype 数学字体

检查是否加载了 opentype 数学字体

我如何检查(最好使用条件)OpenType 数学字体当前是否已加载(正在使用)?例如,使用以下命令:

\usepackage{unicode-math}
\setmathfont{LucidaBrightMathOT}

我想(事后)检查特定字体是否确实已加载并在数学模式下使用。fontspec、unicode-math(或 luaotfload)是否提供此类功能?

好奇的读者:我正在尝试纠正(我认为)某些支持数学的 opentype 字体中某些重音符号的字距调整问题。例如,下图显示了$\hat\jmath$使用 LuaLaTeX(或 XeLaTeX)的 Lucida OpenType(可从 TUG 获得)的输出:

Lucida Opentype 中的 jmath

哪一个可以纠正$\skew{3}{\hat}{\jmath}$,但不幸的是,每个(有问题的)字体都需要不同的位置调整参数。

答案1

  • \l__um_fontname_tl保存数学字体的名称。但是,这是赋予的名称\setmathfont。因此,同一种字体可以有多个名称。

  • 另一种方法是检查用于数学的字体名称命令之一。命令名称也包含字体名称。

示例文件:

\documentclass{article}

\usepackage{unicode-math}
\setmathfont{Asana Math}

\begin{document}
  The math font is \csname l__um_fontname_tl\endcsname.

  $
    \makeatletter
    \edef\x{\the\textfont2}
    \edef\x{\expandafter\strip@prefix\meaning\x}
    \mbox{\ttfamily\x}
  $
\end{document}

结果

相关内容