我发现该包有一个奇怪的行为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
,不会复制tlig
、smcp
和等功能color
。microtype 的代码无法与开放类型字体正确配合使用。请向 microtype 维护者报告此问题。