这是一个最小的工作示例:
\documentclass{article}
\usepackage{polyglossia,fontspec}
\setdefaultlanguage{english}
\setotherlanguage{latin}
\setmainfont{Source Sans Pro}
\newfontfamily\Smbd{Source Sans Pro Semibold}
\begin{document}
1. normal weight \textit{italic} \textlatin{foreign} blah
2. \textbf{bold \textit{italic} \textlatin{foreign} blah}
3. {\Smbd{semibold \textit{italic} \textlatin{foreign} blah}}
\end{document}
在第 3 行,“foreign”一词未使用半粗体字体排版。我应该在代码中做哪些更改才能实现这一点?
笔记:我想在文档中同时使用粗体字体和半粗体字体。
答案1
几年后的一次搜索中出现了这个问题,这是一个很好的问题,因此值得回答。
该polyglossia
包允许您为每种语言和脚本定义字体,例如\latinfont
和\germanfont
。如果您没有为每种语言声明一个字体,polyglossia
则不是假设您当前选择的任何字体都可以支持每种语言,因此它将恢复默认字体系列。
您的选择包括:
快速解决
在您的语言块内设置您的字体系列。
\begin{latin}
\sourcesanspro
Exempli gratia.
\end{latin}
你可能会发现定义类似的东西很方便
\newcommand{\latinsf}[1]{\textlatin{\textsf{#1}}}
我下面使用这个。
添加半粗体粗细fontspec
这是一个更复杂的解决方案,但它为您提供了 NFSS 样式\sbseries
和\textsf{}
可与多种字体配合使用的命令。在此示例中,我将设置 Latin Modern Roman 作为主要字体,然后设置\sourcesanspro
字体系列,并将其设置为无衬线字体。
\documentclass[varwidth, preview]{standalone}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont[
Scale = 1.0,
Ligatures ={ Common, Discretionary, TeX},
FontFace={sb}{n}{Font = {lmromandemi10-regular}, Extension = .otf },
FontFace={sb}{it}{Font = {lmromandemi10-oblique}, Extension = .otf }
]{Latin Modern Roman}
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
\newfontfamily{\sourcesanspro}[
Extension = .otf ,
Ligatures = {Common, TeX},
UprightFont = *-Regular ,
BoldFont = *-Bold ,
ItalicFont = *-RegularIt ,
BoldItalicFont = *-BoldIt ,
FontFace = {sb}{n}{*-Semibold},
FontFace = {sb}{it}{*-SemiboldIt}
]{SourceSansPro}
\renewcommand{\sffamily}{\sourcesanspro}
% The commands to select semibold weight:
\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsb}{\sbseries}
\setdefaultlanguage{english}
\setotherlanguage{latin}
\newcommand{\latinsf}[1]{\textlatin{\textsf{#1}}}
\begin{document}
\sffamily
1. normal weight \textit{italic} \latinsf{foreign} blah
2. \textbf{bold \textit{italic} \latinsf{foreign} blah}
3. \textsb{semibold \textit{italic} \latinsf{foreign} blah}
4. \textrm{\textsb{Roman Demibold \textit{oblique} \textlatin{foreign} blah}}
\end{document}
使用sourcesanspro
包
不幸的是,截至 2018 年 8 月,这似乎已损坏。如果它得到修复,它将是您最简单的选择。该软件包包含一个\sourcesansprolight
字体系列,其常规粗细为 Source Sans Pro Light,其粗细为 Source Sans Pro Semibold。
\documentclass[varwidth, preview]{standalone}
\usepackage[default, osf, opentype]{sourcesanspro}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{latin}
\begin{document}
1. normal weight \textit{italic} \textlatin{foreign} blah
2. \textbf{bold \textit{italic} \textlatin{foreign} blah}
3. {\sourcesansprolight\textbf{semibold \textit{italic} \textlatin{\sourcesansprolight foreign} blah}}
\end{document}
答案2
我找到了一个解决方案:我可以更改主字体,而不是定义新的字体系列:
\newcommand\Smbd[1]{\setmainfont{Source Sans Pro Semibold}#1\setmainfont{Source Sans Pro}}
这是一个相当丑陋的伎俩,但它确实能起到作用。