答案1
FiraSans 包用于mdweight
设置常规文本,因此\textmd
显式调用不会产生任何效果。如果要显式使用特定权重,可以使用 中定义的命令之一FiraSans.sty
:
\firathin
\firaultralight
\firaextralight
\firalight
\firabook
\firamedium
\firasemibold
\firaextrabold
\firaheavy
例子:
\documentclass{article}
\usepackage[sfdefault]{FiraSans}
\begin{document}
Hello {\firathin World}.
Hello {\firaultralight World}.
Hello {\firaextralight World}.
Hello {\firalight World}.
Hello {\firabook World}.
Hello {\firamedium World}.
Hello {\firasemibold World}.
Hello {\firaextrabold World}.
Hello {\firaheavy World}.
\end{document}
答案2
如果您可以切换到 XeLaTeX 或 LuaLaTeX 来编译文档,则可以下载 FiraSans 字体系列的 OpenType 版本,该版本具有 16 种 [!!] 不同的字体粗细。相比之下,该FiraSans
软件包(适用于 pdfLaTeX)仅提供 9 种字体粗细。
从以下屏幕截图可以看出,“Medium”和“SemiBold”之间的粗细差异相当微妙。为了避免读者对“粗体”的含义产生任何疑问,最好使用比所选默认字体粗细重 2 级甚至 3 级的粗细。例如,如果选择“Fira Sans Book”作为基本字体粗细,那么“Fira Sans Medium”或“Fira Sans SemiBold”将是“粗体”字体变体的合适候选者。(为文档选择的“常规”字体粗细不必与字体设计者标记为“常规”的粗细相同。)
因此,人们可能会写
\setsansfont{Fira Sans Book}[%
ItalicFont = {Fira Sans Book Italic},
BoldFont = {Fira Sans SemiBold},
BoldItalicFont = {Fira Sans SemiBold Italic}]
从以下列表中选择字体粗细“9”和“12”作为文档的“常规”和“粗体”字体粗细。
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={TeX,Common,Rare}}
\setmainfont{Fira Sans Regular} % set as default
\newfontfamily{\FSTwo}{Fira Sans Two} % 1
\newfontfamily{\FSFour}{Fira Sans Four} % 2
\newfontfamily{\FSEight}{Fira Sans Eight} % 3
\newfontfamily{\FSHair}{Fira Sans Hair} % 4
\newfontfamily{\FSThin}{Fira Sans Thin} % 5
\newfontfamily{\FSUltraLight}{Fira Sans UltraLight} % 6
\newfontfamily{\FSExtraLight}{Fira Sans ExtraLight} % 7
\newfontfamily{\FSLight}{Fira Sans Light} % 8
\newfontfamily{\FSBook}{Fira Sans Book} % 9
\newfontfamily{\FSRegular}{Fira Sans Regular} % 10
\newfontfamily{\FSMedium}{Fira Sans Medium} % 11
\newfontfamily{\FSSemiBold}{Fira Sans SemiBold} % 12
\newfontfamily{\FSBold}{Fira Sans Bold} % 13
\newfontfamily{\FSExtraBold}{Fira Sans ExtraBold} % 14
\newfontfamily{\FSHeavy}{Fira Sans Heavy} % 15
\newfontfamily{\FSUltra}{Fira Sans Ultra} % 16
\begin{document}
\obeylines % just for this example
{\FSTwo Hello World --- Two 1}
{\FSFour Hello World --- Four 2}
{\FSEight Hello World --- Eight 3}
{\FSHair Hello World --- Hair 4}
{\FSThin Hello World --- Thin 5}
{\FSUltraLight Hello World --- UltraLight 6}
{\FSExtraLight Hello World --- ExtraLight 7}
{\FSLight Hello World --- Light 8}
{\FSBook Hello World --- Book 9}
{\FSRegular Hello World --- Regular 10}
{\FSMedium Hello World --- Medium 11}
{\FSSemiBold Hello World --- SemiBold 12}
{\FSBold Hello World --- Bold 13}
{\FSExtraBold Hello World --- ExtraBold 14}
{\FSHeavy Hello World --- Heavy 15}
{\FSUltra Hello World --- Ultra 16}
\end{document}
答案3
如果您想要支持没有 LaTeX 包的字体系列,或者在不同的字体系列中使用相同的扩展字体粗细,那么这里还有另一种可能有用的替代方法。
\documentclass[varwidth]{standalone}
\usepackage{fontspec}
\setmainfont{FiraSans}[
Scale = 1.0 ,
Ligatures = {Common, Discretionary, TeX} ,
Numbers = OldStyle ,
UprightFont = *-Regular ,
BoldFont = *-Bold ,
ItalicFont = *-RegularItalic ,
BoldItalicFont = *-BoldItalic ,
FontFace = {mb}{n}{*-Medium} ,
FontFace = {mb}{it}{*-MediumItalic} ,
FontFace = {sb}{n}{*-SemiBold} ,
FontFace = {sb}{it}{*-SemiBoldItalic} ,
Extension = .otf
]
\DeclareRobustCommand\mbseries{\fontseries{mb}\selectfont}
\DeclareTextFontCommand\textmb{\mbseries}
\DeclareRobustCommand\sbseries{\fontseries{sb}\selectfont}
\DeclareTextFontCommand\textsb{\sbseries}
\begin{document}
\textmd{Fira Sans} \textmb{Medium} \textsb{Semibold} \textbf{Bold} \\
{\itshape\mdseries Fira Sans Italic \mbseries Medium \sbseries Semibold \bfseries Bold}
\end{document}
这定义了两种新的字体粗细,mb
和sb
,其命令类似于textbf
和\bfseries
。尽管fontspec
包允许您为新系列或形状指定任意名称,但这些都是常规的系列名称来自 LaTeX 文档,并且许多包定义了诸如这样的命令\textsb
。
这里我使用了\mdseries
,但许多现有软件包都使用了\mdweight
。理论上,一个系列应该同时设置字体粗细和宽度(例如 Condensed 或 Expanded)。因此,如果您实现一个命令来设置字体粗细,并且还支持多种宽度,作者将希望能够独立更改宽度。