![将通过 \newfontfamily 定义的字体设置为主字体](https://linux22.com/image/456207/%E5%B0%86%E9%80%9A%E8%BF%87%20%5Cnewfontfamily%20%E5%AE%9A%E4%B9%89%E7%9A%84%E5%AD%97%E4%BD%93%E8%AE%BE%E7%BD%AE%E4%B8%BA%E4%B8%BB%E5%AD%97%E4%BD%93.png)
我有一些特定的字体系列,我想在不同的文档中重复使用它们。我假设我会在共享的 eg 文件中执行如下操作,而不是在每个文档中复制粘贴字体定义montserrat.sty
:
\newfontfamily{\Montserrat}[
Path=fonts/montserrat/,
Extension = .ttf,
Ligatures = TeX,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
FontFace={xl}{n}{*-ExtraLight},
FontFace={xl}{it}{*-ExtraLightItalic},
FontFace={l}{n}{*-Light},
FontFace={l}{it}{*-LightItalic},
FontFace={mb}{n}{*-Medium},
FontFace={mb}{it}{*-MediumItalic},
FontFace={k}{n}{*-Black},
FontFace={k}{it}{*-BlackItalic},
]{Montserrat}
有了这个,我就可以在 Beamer 主题中很好地使用该字体:
\RequirePackage{montserrat}
\setbeamerfont{title}{family=\Montserrat, size={\fontsize{48}{48}}, series=\bfseries}
但我似乎无法找到将其用作常规文本文档的主要字体的方法:
\documentclass{article}
\usepackage{fontspec}
\usepackage{montserrat}
\setmainfont{\Montserrat}
失败[fontspec] The font "\Montserrat " cannot be found
。我可以newfontfamily
重复我在调用中传递给的相同参数setmainfont
,但这正是我想避免的——我有几个不同的文档重复使用了几种不同的字体。
有没有办法将通过定义的字体设置newfontfamily
为文档的主字体?
答案1
montserrat.sty
这是你的文件的骨架
\ProvidesPackage{montserrat}
\RequirePackage{fontspec}
\newfontfamily{\Montserrat}[
NFSSFamily=Montserrat,% <--- the key
%Path=fonts/montserrat/,% <--- I can only use the TeX Live ones
Extension = .otf,% <--- I have OpenType fonts
Ligatures = TeX,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
FontFace={xl}{n}{*-ExtraLight},
FontFace={xl}{it}{*-ExtraLightItalic},
FontFace={l}{n}{*-Light},
FontFace={l}{it}{*-LightItalic},
FontFace={mb}{n}{*-Medium},
FontFace={mb}{it}{*-MediumItalic},
FontFace={k}{n}{*-Black},
FontFace={k}{it}{*-BlackItalic},
]{Montserrat}
\DeclareOption{default}{%
\renewcommand{\familydefault}{Montserrat}%
}
\ProcessOptions\relax
现在有几个测试文件。
\documentclass{article}
\usepackage[default]{montserrat}
\begin{document}
This is in Montserrat.
{\fontseries{mb}\selectfont Montserrat}
{\fontseries{k}\selectfont Montserrat}
\end{document}
\documentclass{article}
\usepackage{montserrat}
\begin{document}
This is standard.
{\Montserrat
This is in Montserrat.
{\fontseries{mb}\selectfont Montserrat}
{\fontseries{k}\selectfont Montserrat}
}
\end{document}
您可能还想添加
\DeclareOption{sfdefault}{%
\renewcommand{\sfdefault}{Montserrat}%
}
因此\usepackage[sfdefault]{montserrat}
将把 Montserrat 定义为默认的无衬线字体(类似于\setsansfont
)。
按照beamer
您的做法\usepackage{montserrat}
以及您在帖子中表明的声明。
答案2
如果蒙特塞拉特字体已在您的系统上下载并适当激活,如果您只需要四种基本或默认的字体粗细/形状组合——直立、斜体、粗体和粗斜体——我认为没有理由不运行
\usepackage{fontspec}
\setmainfont{MontSerrat}
在序言中。
当然,如果你想使用一些非默认的重量/形状组合,你可以替换\setmainfont{MontSerrat}
为,比如说,
\setmainfont{MontSerrat}%
[Path=/usr/local/texlive/2022/texmf-dist/fonts/opentype/public/montserrat/,
Extension=.otf,
UprightFont=Montserrat-ExtraLight,
ItalicFont=Montserrat-ExtraLightItalic,
BoldFont=Montserrat-Black,
BoldItalicFont=Montserrat-BlackItalic]