\Umathaccent 适用于 Type 1 字体,但不适用于 OpenType

\Umathaccent 适用于 Type 1 字体,但不适用于 OpenType

我正处于在 XeTeX/Unicode 中尝试重音符号的早期阶段。开始这样做是因为我希望能够使用 MathTime Pro 2 的粗体和重音符号,而不必将它们重音的符号设为粗体或重体。由于我一直在尝试尽可能多地转移到 OpenType 字体,因此我一直在尝试在适用的情况下使用 unicode 命令。我不会也不打算加载unicode-math,即使这意味着我必须在某些地方重新发明轮子,因为它会干扰mtpro2。我使用 解决了原始问题\Umathaccent,但在此过程中发现了一个我尚未能够解决的奇怪问题。如果我使用标准 Type 1 字体 (.pfb),该方法有效。如果我使用 .otf 字体,它会给我一个模糊的 XeTeX 错误并让我查看日志文件,但我还没有在那里找到任何有用的东西。以下代码...

\documentclass{article}

\usepackage{fontspec}

\newfontfamily\stixupper{STIXTwoMath-Regular.otf}[NFSSFamily=stixupper,Script=Math,Scale=MatchUppercase]
\DeclareSymbolFont{sxup}{TU}{stixupper}{m}{n}

\def\nuhat{\Umathaccent 7 \symsxup "002C6}

\begin{document}
    
    \[
    \nuhat{H}
    \]
    
\end{document}

... 出现错误

Process started: xelatex.exe -synctex=1 -interaction=nonstopmode "texstudio_BJdEUf".tex

! Internal error: bad native font flag in `map_char_to_glyph'
Process exited with error(s)

这个答案可能是相关的:https://tex.stackexchange.com/a/63249/224317

答案1

xetex 不支持在经典 tfm 基础上放置 opentype 重音符号。如果您真的需要,如果你将基础设为不是单个字符,它会使用其通用规则将重音粘贴在一个框上,但你可能需要微调定位,因为字体指标无法提供帮助。

\documentclass{article}

\usepackage{fontspec}

\newfontfamily\stixupper{STIXTwoMath-Regular.otf}[NFSSFamily=stixupper,Script=Math,Scale=MatchUppercase]
\DeclareSymbolFont{sxup}{TU}{stixupper}{m}{n}


\def\nuhat{\Umathaccent 7 \symsxup "002C6}

\begin{document}

\[
\nuhat{H{}}
\]

\end{document}

生产

在此处输入图片描述

在 xelatex 中。

如果没有,{}您可以从 lualatex 获得此

在此处输入图片描述

相关内容