在我的文档序言中,我使用以下代码来设置我想要的字体,同时将斜体、粗体和粗斜体文本的不同灰度值设置为默认文本颜色:
\usepackage{fontspec}
\usepackage{xcolor}
....
\setmainfont[{
BoldFont=WeidemannStd-Bold.otf,
ItalicFont=WeidemannBookItalic.otf,
BoldItalicFont=WeidemannStd-BoldItalic.otf,
ItalicFeatures={Colour=666666},
BoldFeatures={Colour=6f6f6f},
BoldItalicFeatures={Colour=777777}
}]{WeidemannBook}
总的来说,通过以下方式生成 PDF 时,效果如预期xelatex
-- 除了一件事:如果我想设置具体的分别将字符串加粗到不同的颜色,比如说红色,像这样:
\textcolor{red}{\textbf{these words should be red}}
或这个:
{\textbf{\textcolor{red}these words should be red}}}
它不起作用我预期,并且这两个字符串的 PDF 输出仍然是灰色......
fontspec
如何覆盖使用包的字体功能时设置为默认的灰色?
答案1
命令\addfontfeature
将覆盖指定范围内的标准字体颜色和其他特征,例如
{\addfontfeature{BoldItalicFeatures={Colour=red}}\bfseries\itshape these words are red}
但这可能不太实用。以下方法\newcommand
可能有效:
\newcommand{\mycolouredtext}[2]{{\addfontfeature{%
ItalicFeatures={Colour=#1},%
BoldFeatures={Colour=#1},%
BoldItalicFeatures={Colour=#1}}%
#2}}
然后调用\mycolouredtext{green}{\bfseries\itshape This text is green}
以获取斜体和粗体的绿色文本。此命令不会对其他文本(尤其是后续文本)产生任何影响。
顺便说一句,你最后的代码示例中有一个语法错误。
{\textbf{\textcolor{red}these words should be red}}
应该
{\textbf{\textcolor{red}{these words should be red}}}
否则,只有第一个吨的这些将以红色打印。