
で新しいシリーズを定義することは可能ですかfontspec
? 次のことを試しましたが…
- フォントにライト バージョンがない場合、 のようにフォントを置き換えるのではなく、エラーをスローします
\bfseries
。つまり、フォールバックはありません。 - 私の
\ltseries
は によって非アクティブ化されていません\mdseries
。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Source Sans Pro}
% http://www.google.com/fonts/specimen/Source+Sans+Pro
\newcommand{\ltseries}{%
\addfontfeatures{UprightFont={* Light},ItalicFont={* Light Italic}}%
}
\begin{document}
\ltseries
Light
\mdseries
Regular
\bfseries
Bold
\end{document}
見つかった場合\fontseries と \fontshape に指定できる値しかし、新しいシリーズを定義する方法は説明されていません。さらに、これは LaTeX 用で NFSS ですが、私は で XeTeX を使用していますfontspec
。
答え1
公式のインターフェースはありません。この方法で実行できます (これは lualatex-syntax で、xelatex 構文チェック用です (例: eu1lmr.fd))。多くの場合、新しいファミリが作成されるため、ローカル フォントの変更\addfontfeatures
やローカル フォントの変更とは連携しないことに注意してください。\fontspec
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Source Sans Pro}
\normalfont
\makeatletter
\DeclareFontShape{\f@encoding}{\f@family}{l}{n}%
{<-> name:sourcesanspro-light:script=latn;+trep;+tlig;
}{}
\DeclareFontShape{\f@encoding}{\f@family}{l}{it}%
{<-> name:sourcesanspro-lightit:script=latn;+trep;+tlig;
}{}
\makeatother
\DeclareRobustCommand{\ltseries}{%
\fontseries{l}\selectfont}
\begin{document}
\ltseries
Light
\mdseries
Regular
\bfseries
Bold
\normalfont
{\addfontfeatures{Ligatures=NoCommon} abc \ltseries abc}
\end{document}
答え2
の最新バージョンfontspec
(執筆時点ではv2.5a)では、公式インターフェース新しいフォント形状を宣言するには:FontFace
オプションを使用して新しい NFSS フォント フェイスを定義できます。
\documentclass{article}
\usepackage{fontspec}
\setsansfont[
FontFace = {lt}{n}{SourceSansPro-Light},
FontFace = {lt}{it}{SourceSansPro-LightIt},
]{Source Sans Pro}
\DeclareRobustCommand{\ltseries}{\fontseries{lt}\selectfont}
\DeclareTextFontCommand{\textsi}{\sishape}
\begin{document}
\ltseries
Light \textit{Italic} (not available)
\mdseries
Regular \textit{Italic}
\bfseries
Bold \textit{Italic}
\sffamily
\ltseries
Light \textit{Italic}
\mdseries
Regular \textit{Italic}
\bfseries
Bold \textit{Italic}
\end{document}
これは を使用するよりもはるかに快適です。例では、他の回答に欠けていた\DeclareFontShape
の定義も追加しました。\textlt
答え3
Ulrikes の回答は、\DeclareFontShape
XeTeX 方式で変更すると正常に機能します。次のようになります。
\documentclass{article}
\usepackage{fontspec}
\setsansfont{Source Sans Pro}
% http://www.google.com/fonts/specimen/Source+Sans+Pro
\begingroup % \DeclareFontShape acts globally
\makeatletter
\sffamily
\DeclareFontShape{\f@encoding}{\f@family}{l}{n}%
{<-> "[SourceSansPro-Light]:mapping=tex-text"
}{}
\DeclareFontShape{\f@encoding}{\f@family}{l}{it}%
{<-> "[SourceSansPro-LightIt]:mapping=tex-text"
}{}
\endgroup % removes the effects of \sffamily and \makeatletter
\DeclareRobustCommand{\ltseries}{%
\fontseries{l}\selectfont}
\makeatother
\begin{document}
\ltseries
Light (not available)
\mdseries
Regular
\bfseries
Bold
\sffamily
\ltseries
Light
\mdseries
Regular
\bfseries
Bold
\end{document}
前\sffamily
には、正しい姓を持たせる\DeclareFontShape
ために必要です。 文書の先頭に があるので、ここでは文書のフォントは変更されません…\f@family
\normalfont
\sffamily