我使用类memoir
、包polyglossia
、fontspec
在 Linux 和 macOS 上的 XeLaTeX 中进行编译。
基于XeTeX 包 fontspec:使用先前定义的 \newfontfamily 和 \setmainfont(对此没有可用的答案),我想设置一个来自新命令的额外字体newfontfamily
,setmainfont
因为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}