定义微类型上下文时取消 Color fontspec 字体设置

定义微类型上下文时取消 Color fontspec 字体设置

我发现该包有一个奇怪的行为microtype。当使用该命令\SetExpansion声明具有特定参数的微类型上下文时,使用该fontspec包定义的颜色设置不再可用。

这是我使用的代码:

\documentclass[12pt,a4paper]{memoir}

\usepackage[italian]{babel}
\usepackage{fontspec}
\usepackage{microtype}

\SetExpansion[
  context=MyExpansionContext,
  shrink=270,
  stretch=270
]{encoding=*}{}

\setmainfont{Linux Libertine}
\setsansfont[Color = FF0000FF]{Linux Biolinum}

\newcommand\Text{Lorem ipsum dolor sit amet, con- sectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.}

\begin{document}

{\sffamily This is a false-latin example:} \Text

\begin{microtypecontext}{expansion=MyExpansionContext} 
   {\sffamily This is a false-latin example:} \Text
\end{microtypecontext}


\end{document}

结果是:

在此处输入图片描述

如果我注释掉

%\SetExpansion[
%  context=MyExpansionContext,
%  shrink=270,
%  stretch=270
%]{encoding=*}{}

结果的颜色符合要求,但显然没有指定微类型参数:

在此处输入图片描述

答案1

microtype使用复制字体(以避免错误! error: (font expansion): font has been expanded with different stretch limit.\(pdf)copyfont,这会丢失所有字体特征,不仅是颜色,还包括例如tlig(连字)和smcp(小型大写字母):

\documentclass{article}
\usepackage{luatex85}
\usepackage{luaotfload}  

\begin{document}

\font\testa={Arial:mode=node;script=latn;language=DFLT;+tlig;+smcp;color=FF0000FF;}
{\testa abc -- `` }  normal 

\pdfcopyfont\testb\testa

{\testb abc -- `` } normal

\end{document}

在此处输入图片描述

该问题也可以在上下文中显示:

\starttext

\font\testa={Arial:mode=node;script=latn;language=DFLT;+tlig;+smcp;}
{\testa abc -- }  normal

\copyfont\testb\testa

{\testb abc -- } normal

\stoptext

所以我会在上下文列表上询问......

编辑

Hans Hagen 的回答非常明确:\(pdf)copyfont仅在级别上有效tfm,不会复制tligsmcp和等功能color。microtype 的代码无法与开放类型字体正确配合使用。请向 microtype 维护者报告此问题。

相关内容