调整 LuaLaTeX 中特定字体样式/粗细的字体功能

调整 LuaLaTeX 中特定字体样式/粗细的字体功能

使用 LuaLaTeX,我想利用功能文件/lua 代码来调整某些字形对的字距,请参阅下面的 MWE。

由于我的字距调整可能不适合字体的不同样式/粗细,我想知道:是否可以仅将调整应用于特定的字体样式/粗细,例如仅适用于\normalfont

MWE:使用 \normalfont 时我想要字形“A”和“V”但不使用斜体。

第一个版本适用于旧版本的LuaTeX;第二个版本适用于新版本,例如TeXLive 2016。

第一个版本:

\documentclass[ngerman,parskip=full]{scrartcl}
\usepackage{fontspec}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\begin{filecontents*}{mykern.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;

feature kern {
  pos \A \V -100;
} kern;
\end{filecontents*}
\setmainfont[FeatureFile=mykern.fea,Ligatures=TeX]{Linux Libertine O}
\begin{document}

AV \textit{AV}

\end{document}

第二版本:

\documentclass[ngerman,parskip=full]{scrartcl}
\usepackage{fontspec}
\usepackage[ngerman]{babel}
\directlua{
fonts.handlers.otf.addfeature {
    name = "ktest",
    {
        type = "kern",
        data = {
          ["A"] = { ["V"] =  -1000 },
        }
    },
    "extra kerns"
  }
}
\setmainfont[RawFeature=+ktest,Ligatures=TeX]{Linux Libertine O}
\begin{document}

AV \textit{AV}

\end{document}

答案1

您可以使用将UprightFeatures效果仅限制于直立字体。

\documentclass{article}

\usepackage{fontspec}

\directlua{
fonts.handlers.otf.addfeature {
    name = "ktest",
    {
        type = "kern",
        data = {
          ["A"] = { ["V"] =  -1000 },
        }
    },
    "extra kerns"
  }
}

\setmainfont[UprightFeatures={RawFeature=+ktest},Ligatures=TeX]{Linux Libertine O}

\begin{document}

\noindent AV\par
\noindent \textit{AV}

\end{document}

在此处输入图片描述

相关内容