使用中等粗细的 Fira 字体

使用中等粗细的 Fira 字体

我想在 Latex 中使用中等粗细的 Fira 字体,但textmd似乎没有任何效果。我做错了什么?

\usepackage[defaultsans]{FiraSans}

Hello \textmd{World}.

Hello \textbf{World}.

它看起来是这样的。正如你所见,第一个“World”并不比普通文本粗。

在此处输入图片描述

答案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}

Fira Sans 示例

这定义了两种新的字体粗细,mbsb,其命令类似于textbf\bfseries。尽管fontspec包允许您为新系列或形状指定任意名称,但这些都是常规的系列名称来自 LaTeX 文档,并且许多包定义了诸如这样的命令\textsb

这里我使用了\mdseries,但许多现有软件包都使用了\mdweight。理论上,一个系列应该同时设置字体粗细和宽度(例如 Condensed 或 Expanded)。因此,如果您实现一个命令来设置字体粗细,并且还支持多种宽度,作者将希望能够独立更改宽度。

相关内容