我正处于在 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 获得此