宏 setmainfont 和 setsansfont 不接受 newfontfamily 的新命令。它们之间有兼容性吗?

宏 setmainfont 和 setsansfont 不接受 newfontfamily 的新命令。它们之间有兼容性吗?

我使用类memoir、包polyglossiafontspec在 Linux 和 macOS 上的 XeLaTeX 中进行编译。

基于XeTeX 包 fontspec:使用先前定义的 \newfontfamily 和 \setmainfont(对此没有可用的答案),我想设置一个来自新命令的额外字体newfontfamilysetmainfont因为setsansfont我发现没有必要在每个宏中复制相同的字体路径/本地化。我想节省和优化代码。这是 MWE:

\documentclass[12pt, a4paper, oneside, oldfontcommands, dvipsname]{memoir}

\usepackage{fontspec}

\newfontfamily\alegreya{Alegreya}[Path = ./fontes/,
  FontFace = {xb}{n}  {* Black},
  FontFace = {xb}{it} {* Black Italic},
  UprightFont = * Regular,
  ItalicFont = * Regular Italic,
  BoldFont = * Bold,
  BoldItalicFont = * Bold Italic,
]

\setmainfont{\alegreya}
\setsansfont{\alegreya}

只有我的newfontfamily部分有效,但确实set*font接受了定义的新命令。

答案1

您可以通过指定系列名称来实现。该字符串本质上是任意的,只要它不引用现有的字体系列即可。

(我必须使字体设置适应我的机器。)

\documentclass{article}

\usepackage{fontspec}

\newfontfamily\alegreya{Alegreya}[
  %Path = ./fontes/,
  FontFace = {xb}{n}  {*-Black},
  FontFace = {xb}{it} {*-BlackItalic},
  UprightFont = *-Regular,
  ItalicFont = *-Italic,
  BoldFont = *-Bold,
  BoldItalicFont = *-BoldItalic,
  NFSSFamily=alegreyaot
]

\renewcommand{\rmdefault}{alegreyaot}
\renewcommand{\sfdefault}{alegreyaot}

\begin{document}

This should be Alegreya

\textsf{This too}

{\normalfont\alegreya Check}

\end{document}

在此处输入图片描述

相关内容