XeLaTeX 特殊字体粗细的着色

XeLaTeX 特殊字体粗细的着色

抱歉,我说得不够准确。所以再说一遍。如果整个文档中的每段文字是用用户定义字体中不存在的字体形状书写的,我想让每段文字都呈现不同的颜色。我正在使用 XeLaTeX,希望下面的代码可以更好地向大家解释这一点。

\documentclass{scrreprt}
    \usepackage[ngerman]{babel}
    %\usepackage{xparse}
    \usepackage{xcolor,blindtext}
    \usepackage{xltxtra}
    \makeatletter
    \NewDocumentCommand{\fntInf}{}{\tiny \f@family, \f@series, \f@shape\normalsize}
     \makeatother
        \setmainfont[
              ItalicFeatures={Color=FF000099}% That doesn't work
        ]{Source Serif Pro}% This font comes without support for italic or small caps. Is there a way to mark all textes which are have been automatical replaced because of an  invalid font shape/series by fontspec?
        \setmonofont{Source Serif Pro}
        \setromanfont{Source Serif Pro}

    \begin{document}
    \begin{quote}
    Lalal asflas mesltne twt gheptwhpsfn\fntInf

    \textbf{ Aw hfafjat awl \fntInf\\ \\hfalfhal hawlfnals \itshape nawlhaw lfaitiowjpaöfka\fntInf} 
    \end{quote}
    \end{document}

[老问题,请忽略以下文字。] 如果使用下面字体的粗体版本(自动!!),是否可以为文本着色?

\newfontfamily{\FMonoB}[%
                ItalicFont={Anonymous Pro Italic},
                BoldItalicFont={Ani}]
            {Source Code Pro}

我以为无论如何都可以使用\addfontfeature{Color=FF000099},但是我找不到解决方案。

以下是一个例子:

\documentclass[twoside, paper=A4, 11pt]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{xparse}
\usepackage{xcolor,blindtext,multicol} % für farbigen Text
\usepackage{xltxtra}
%\usepackage{libertine}

\newfontfamily{\FMonoA}%[%
            %BoldItalicFont={Consolas}]% I want to have this always in a diffrent color.
            {Consolas} % or 'Source Code Pro'

\begin{document}
Lalal asflas mesltne twt nwtnwthigheptwhpsfn {\FMonoA\textbf{\itshape aw hfafjat}} awl hfalfhal hawlfnals nawlhaw lfaitiowjpaöfka 
\end{document}

“aw hfafjat” 应该采用其他颜色。每当我使用\FMonoA粗体+斜体组合时,文本应采用不同的颜色。想法? \addfontfeaturecolor=。但如何?

答案1

我会使用有据可查的fontspec名为的功能BoldFeatures。它允许您提供许多有关粗体字体的功能。它与 Xe/Lua LaTeX 完美配合。我建议您查找包文档

这是 MWE

\documentclass{article}
\usepackage{fontspec}
\setmainfont[BoldFeatures={Color=0000ff}]{Linux Libertine O}
\begin{document}
test
\textbf{text}
\end{document}

在此处输入图片描述

更详细的例子:

\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}

\newfontfamily{\FMonoA}{Source Code Pro}[
  Scale=MatchLowercase,
  ItalicFont=TeX Gyre Cursor Italic,
  ItalicFeatures={Scale=MatchLowercase},
  BoldItalicFont=Inconsolatazi4-Bold,
  BoldItalicFeatures={
    Color=blue,
    FakeSlant=0.25,
    Scale=MatchLowercase,
  },
]

\begin{document}

aa bb cc {\FMonoA\textbf{\textit{uuvvww}}}

aa bb cc {\FMonoA\textbf{uuvvww}}

aa bb cc {\FMonoA\textit{uuvvww}}

\end{document}

在此处输入图片描述

答案2

请注意,这个答案不是对当前问题的回答,而是对原始问题的回答。

没有示例,没有代码,没有上下文。这是一个通用解决方案。不特定于 XeTeX。与 XeLaTeX 或 pdfLaTeX 的编译方式相同。

\documentclass{article}
\usepackage{xcolor}
\makeatletter
\DeclareRobustCommand\bfseries
{\not@math@alphabet\bfseries\mathbf
  \fontseries\bfdefault\selectfont\color{blue}}
\makeatother
\begin{document}
Here is some text.

\textbf{Here is some bold.}

Here is some more.

{\bfseries
  This is in bold.%
}

Here is the last.
\end{document}

大胆的蓝色

这样做的好处是所有粗体文本都将变成蓝色,但粗体数学运算将保持不变,并且该解决方案与引擎无关。也就是说,相同的解决方案适用于 pdfTeX 和 XeTeX 等,因为它不依赖于fontspec。一般来说,与引擎无关的解决方案更灵活、更便携。

但是,它并没有解决编辑版本的问题,而且我也不会建议在撰写本文时该问题已经存在。

相关内容