Fontspec - Erewhon:setmainfont 和 usepackage 之间有什么区别?

Fontspec - Erewhon:setmainfont 和 usepackage 之间有什么区别?

\setmainfont{erewhon}用替换 有什么区别以及有什么缺点\usepackage{erewon}

第一种情况下没有粗体小写字母,但第二种情况下有。这是一个很大的优点,但有什么缺点吗?

是否应该使用\usepackage{erewon}不带可选参数的?如果是,应该在之后还是之前加载?这显然对 mwe 输出没有影响。

\documentclass{article}

    \RequirePackage{fontspec}
%       \setmainfont{Erewhon}[
%           Extension=.otf,
%           UprightFont=*-Regular,
%           ItalicFont=*-Italic,
%           BoldFont=*-Bold,
%           BoldItalicFont=*-BoldItalic,
%           SlantedFont=*-RegularSlanted,
%           BoldSlantedFont=*-BoldSlanted,
%           SmallCapsFont=*-Regular,
%           SmallCapsFeatures={Letters=SmallCaps}
%           ]

% or
\usepackage{erewhon}

 \setsansfont{texgyreheros}[
        Scale=MatchLowercase,% or MatchUppercase
        Extension=.otf,
        UprightFont=*-regular,
        ItalicFont=*-italic,
        BoldFont=*-bold,
        BoldItalicFont=*-bolditalic,
        ]


\begin{document}

\textbf{Exercice}

\textbf{\textsc{Exercice}}

\textsc{\textbf{Exercice}}

\textbf{\scshape Exercice}

\textbf{\textsl{Exercice}}

\textbf{\textit{Exercice}}

\textsc{Exercice}

\end{document}

答案1

我假设您正在使用 LuaLaTeX。

连写的优点\usepackage{erewhon}在于,它不仅能让您生成“常规”(即直立)小型大写字母,还能生成粗体小型大写字母、倾斜小型大写字母和粗体倾斜小型大写字母。(我会让其他人来权衡是否有必要添加这些额外的字体形状和粗细组合……)

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs,fontspec}

\usepackage{erewhon}

\begin{document}
\noindent
\begin{tabular}{@{}lll@{}}
\toprule
Font Shape & \multicolumn{2}{c}{Font Weight}\\
\cmidrule(l){2-3}
  & normal & bold\\
\midrule
upright (Roman)   & Exercise           & \textbf{Exercise}\\
slanted           & \textsl{Exercise}  & \textbf{\textsl{Exercise}}\\
italic            & \textit{Exercise}  & \textbf{\textit{Exercise}}\\
upright smallcaps & \textsc{Exercise}  & \textbf{\textsc{Exercise}}\\
slanted smallcaps & \textsl{\textsc{Exercise}} & \textsl{\textbf{\textsc{Exercise}}}\\
\bottomrule
\end{tabular}
\end{document}

为了进行比较,如果将单行语句\usepackage{erewhon}替换为

\setmainfont{Erewhon}[
   SlantedFont    = *-RegularSlanted,
   BoldSlantedFont= *-BoldSlanted]

这两个选项启用了字体的两种倾斜字体,但意外的是,只得到了倾斜和倾斜加粗的小型大写字母,即不再得到直立和直立加粗的小型大写字母:

在此处输入图片描述

走这条路线的一个严重缺点是,当做一些简单的事情(例如在环境中嵌入上述表格并尝试通过提供标题)\usepackage{erewhon}时,你必然会收到难以理解的致命错误消息。table\caption

答案2

您不应将该包与 lualatex 和 xelatex 一起使用。它对这些引擎使用了错误的字体编码。

如果我从你的各种问题中理解正确的话,你的问题是你想设置倾斜字体,但这会干扰小写字母。在我看来,这是 fontspec 中的一个错误,我已报告:https://github.com/wspr/fontspec/issues/209

您可以通过重置小型大写字体来解决此错误(示例针对 lualatex,xelatex 可能需要稍微不同的语法):

\documentclass{article}

\RequirePackage{fontspec,fontaxes}

\setmainfont{Erewhon}[
  SlantedFont=*-RegularSlanted,
  BoldSlantedFont=*-BoldSlanted,
]

\normalfont\makeatletter

\DeclareFontShape{\f@encoding}{\f@family}{m}{sc}%
     {%
     <->"Erewhon:mode=node;script=latn;language=DFLT;+tlig;+trep;+smcp"
      }{}

\DeclareFontShape{\f@encoding}{\f@family}{bx}{sc}%
     {%
     <->"Erewhon-Bold:mode=node;script=latn;language=DFLT;+tlig;+trep;+smcp"
      }{}

\DeclareFontShape{\f@encoding}{\f@family}{m}{scsl}%
     {%
     <->"Erewhon-RegularSlanted:mode=node;script=latn;language=DFLT;+tlig;+trep;+smcp"
      }{}

\DeclareFontShape{\f@encoding}{\f@family}{bx}{scsl}%
     {%
     <->"Erewhon-BoldSlanted:mode=node;script=latn;language=DFLT;+tlig;+trep;+smcp"
      }{}

\makeatother
\begin{document}
abc {\itshape abc \bfseries abc} {\slshape abc \bfseries abc}

\textbf{Exercise}

\textbf{\textsc{Exercise}}

{\slshape\scshape Abc \bfseries Abc} %need fontaxes

{\fontshape{scsl}\selectfont Abc \bfseries Abc} %works always

\textsc{Exercise}

\end{document}

在此处输入图片描述

(已编辑以显示如何获得倾斜的小写字母)

相关内容