使用 unicode-math 编码 EU1 时命令...不可用

使用 unicode-math 编码 EU1 时命令...不可用

因为我不能依赖特定的包(drm),所以我需要尽可能地模拟它,这在决定加载之前工作正常unicode-math。请考虑这个被剪切的 MWE,因此它只显示错误:

\documentclass{article}
%\usepackage{fontspec}
\usepackage{unicode-math}
\newcommand*{\drmsym}[1]%
  {\fontspec{drmsym10.otf}%
     [SizeFeatures=%
        {{Size={-7},Font=drmsym7.otf},
    {Size={8},Font=drmsym8.otf},
    {Size={9},Font=drmsym9.otf},
    {Size={10-12},Font=drmsym10.otf},
    {Size={12-14},Font=drmsym12.otf},
    {Size={14-17},Font=drmsym14.otf},
    {Size={17-24},Font=drmsym17.otf},
    {Size={24-},Font=drmsym24.otf}}]%
  {#1}}

\providecommand*{\textdied}%
  {\drmsym{\char'144}}
\begin{document}
\textdied
\end{document}

当您使用 XeLaTeX 编译此文档时,您会收到错误消息Command \textdied unavailable in encoding EU1。当我决定不加载unicode-math而只加载fontspec代码时,代码按预期工作,这似乎表明前一个包在某处更改了字体编码。有人知道如何在保留包的同时解决这个问题unicode-math吗?

答案1

您不应使用 either \fontspecnor \providecommand

  • \fontspec不建议使用,因为效率很低;
  • \textdiedunicode-math在加载时已经有了 TS1 命令的定义,因此 \providecommand 不执行任何操作
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}

\newfontface{\drmfont}{drmsym10}[
  Extension=.otf,
  SizeFeatures={
    {Size={-7.5},Font=drmsym7},
    {Size={7.5-8.5},Font=drmsym8},
    {Size={8.5-9.5},Font=drmsym9},
    {Size={9.5-11},Font=drmsym10},
    {Size={11-13},Font=drmsym12},
    {Size={13-15},Font=drmsym14},
    {Size={15-21},Font=drmsym17},
    {Size={21-},Font=drmsym24}
  }
]
\DeclareTextFontCommand{\drmsym}{\normalfont\drmfont}
\UndeclareTextCommand{\textdied}{TS1}
\DeclareRobustCommand{\textdied}{\drmsym{\symbol{'144}}}

\begin{document}

\textdied

\end{document}

我已经改变了尺寸选择,但这不是很重要。

使用\UndeclareTextCommand是为了避免原始定义生效;\normalfont确保形状和重量参数被重置,因此在斜体或粗体上下文中符号无论如何都会打印。

在此处输入图片描述

相关内容