fontspec 不允许在 XeLaTeX 中指定斜体字体

fontspec 不允许在 XeLaTeX 中指定斜体字体

平均能量损失

\documentclass[]{article}
\usepackage{amsthm,amsmath,amsfonts}

\usepackage[]{fontspec}
\setmainfont{Old Standard}[
FakeBold=2,
%SmallCapsFont=PlayfairDisplaySC-Black.otf,
%BoldFont=ModernMTStd-Bold.otf,
ItalicFont=ModernMT-ExtendedItalic.otf,
%BoldItalicFont=ModernMT-ExtendedItalic.otf,
]

\title{Test}
\author{Me}

\begin{document}
 \maketitle
 Just testing if the sum operator works.
        \begin{align*}
            F(n)
                & = \sum_{d\mid n}f(d)\\
            f\ast g
                & = \sum_{d\mid n}f(d)g(n/d)
        \end{align*}
\end{document}

显示错误:在此处输入图片描述

但字体位于同一目录中。在此处输入图片描述

但如果我注释掉斜体字体,它就可以正常工作。

\documentclass[]{article}
\usepackage{amsthm,amsmath,amsfonts}

\usepackage[]{fontspec}
\setmainfont{Old Standard}[
FakeBold=2,
%SmallCapsFont=PlayfairDisplaySC-Black.otf,
%BoldFont=ModernMTStd-Bold.otf,
%ItalicFont=ModernMT-ExtendedItalic.otf,
%BoldItalicFont=ModernMT-ExtendedItalic.otf,
]

\title{Test}
\author{Me}

\begin{document}
\maketitle
Just testing if the sum operator works.
        \begin{align*}
            F(n)
                & = \sum_{d\mid n}f(d)\\
            f\ast g
                & = \sum_{d\mid n}f(d)g(n/d)
        \end{align*}
\end{document}

输出: 在此处输入图片描述

答案1

fontspec在系统字体文件夹中查找系统字体(已安装的字体)*。

否则,fontspec使用该Path=选项告知已卸载的字体位于哪个文件夹中。

例如,以下使用AvrileSerif-Bold.ttf直立字体,并ModernMT-ExtendedItalic.otf使用斜体字体,两个字体文件都在本地文件夹中,因此选项Path=设置为Path=./,

路径选项

这是一个比较夸张的例子,实际排版的时候不建议大家随意混用字体。

请注意,文本模式字体(直立蓝色,斜体红色)与数学模式字体无关。MWE

\documentclass{article}
\usepackage{xcolor}
\usepackage{amsthm,amsmath,amsfonts}

\usepackage{fontspec}
\setmainfont{AvrileSerif}[
FakeBold=2,
%SmallCapsFont=PlayfairDisplaySC-Black.otf,
%BoldFont=ModernMTStd-Bold.otf,
Path=./,
UprightFont=*-Bold.ttf,
UprightFeatures={Colour=blue},
ItalicFont=ModernMT-ExtendedItalic.otf,
ItalicFeatures={Colour=red},
%BoldItalicFont=ModernMT-ExtendedItalic.otf,
]

\title{Test}
\author{Me}

\begin{document}
 \maketitle
 Just testing if the \textit{sum operator} works.
        \begin{align*}
            F(n)
                & = \sum_{d\mid n}f(d)\\
            f\ast g
                & = \sum_{d\mid n}f(d)g(n/d)
        \end{align*}
\end{document}

*在 Windows 上,以用户身份安装的字体不可见;而是以管理员身份安装它们。

答案2

使用你的例子ItalicFont=ModernMT-ExtendedItalic, 没有 .otf扩大使用一些斜体文字\textit我得到:

SSJTRD+OldStandard-Regular-Identity-H CID Type 0C       Identity-H       yes yes yes      4  0
YIVKHN+ModernMT-ExtendedItalic-Identity-H CID Type 0C       Identity-H       yes yes yes      6  0
SNOFLJ+CMMI10                        Type 1C           Builtin          yes yes yes      8  0
WBSDKO+CMR10                         Type 1C           Builtin          yes yes yes      9  0
GQLKOX+CMEX10                        Type 1C           Builtin          yes yes yes     10  0
VJTWUB+CMMI7                         Type 1C           Builtin          yes yes yes     11  0
FNWRCQ+CMSY7                         Type 1C           Builtin          yes yes yes     12  0
IOSJMP+CMSY10                        Type 1C           Builtin          yes yes yes     13  0

如果要使用text字体来math以斜体显示变量,请使用包unicode-math数学字体或者用文本斜体字体定义默认数学字体,这通常不是一个好主意。

答案3

否则,在 \setmainfont 中定义字体格式

\documentclass{article}
\usepackage{xcolor}
\usepackage{amsthm,amsmath,amsfonts}

\usepackage{fontspec}
\setmainfont{AvrileSerif}[
FakeBold=2,ext=.otf,
%SmallCapsFont=PlayfairDisplaySC-Black,
%BoldFont=ModernMTStd-Bold,
Path=./,
UprightFont=*-Bold.ttf,
UprightFeatures={Colour=blue},
ItalicFont=ModernMT-ExtendedItalic.otf,
ItalicFeatures={Colour=red},
%BoldItalicFont=ModernMT-ExtendedItalic.otf,
]

\title{Test}
\author{Me}

\begin{document}
    \maketitle
    Just testing if the \textit{sum operator} works.
    \begin{align*}
        F(n)
        & = \sum_{d\mid n}f(d)\\
        f\ast g
        & = \sum_{d\mid n}f(d)g(n/d)
    \end{align*}
\end{document}

相关内容