我尝试在数学模式中使用其他 (TrueType) 字体(几种不同的字体)中的特定符号(如数学字母、数学运算符等)。因此,我猜应该通过 DeclareMathSymbol 定义符号。TeX 文件中的 $\mysymbol$ 会产生错误消息“字体形状‘U/MyFont/m/n’未定义”。我无法通过 DeclareSymbolFont 和 DeclareFontShape 修复它。(\MyFont{10509} 和 $\text{\MyFont{10509}}$ 在这里确实有效,但这不是我需要的。)谢谢您的帮助。
%\listfiles
\documentclass{article}
\usepackage{geometry}
\geometry{
a4paper,
total={170mm,257mm},
left=20mm,
top=20mm,
}
\usepackage{fontspec}
\usepackage{mathtools}
\title{Formula Font Test}
\author{Stefan}
\date{2017-03-15}
\newfontfamily\MyFontFamily[Path=C:/tmp/fonts/]{cambria.ttc}
% \DeclareFontFamily {} {} {}
%\DeclareFontFamily{U}{MyFamilyFont}{m}
\newcommand\MyFont[1]{\MyFontFamily\symbol{#1}}
% \DeclareSymbolFont {} {} {} {} {}
\DeclareSymbolFont{MyFontSymb}{U}{MyFont}{m}{n}
% \DeclareFontShape{U}{MyFontSymb}{m}{n}{ MyFont }{}
%\DeclareFontShape{MyFontSymb}{m}{n}{\UnicodeFontFile{cambria}{\UnicodeFontTeXLigatures}}{}
\DeclareMathSymbol{\othersymbol}{\mathalpha}{letters}{"0B}
\DeclareMathSymbol{\mysymbol}{\mathalpha}{MyFontSymb}{10509}
\usepackage{luacode}
\begin{document}
\maketitle
\MyFont{10509}
$
\othersymbol
\text{ \MyFont{10509} }
\mysymbol
$
\end{document}
答案1
你可以这样做
\documentclass{article}
\usepackage{fontspec}
\usepackage{mathtools}
\newfontfamily\MyFontFamily{cambria.ttc}[NFSSFamily=cambria]
\newcommand\MyFont[1]{{\MyFontFamily\symbol{#1}}}
\DeclareSymbolFont{MyFontSymb}{TU}{cambria}{m}{n}
\Umathchardef\mysymbol="3 \symMyFontSymb 10509
\begin{document}
\MyFont{10509}
$
x_{\mysymbol} {\mysymbol}
$
\end{document}
但我有点怀疑是否真的需要设置新的符号字体。一个更简单的方法是在这个答案中https://tex.stackexchange.com/a/344462/2388