自动对特定字符后面的所有字符应用字距规则

自动对特定字符后面的所有字符应用字距规则

我正在使用该字体编写一些文本\calligra,在某些特定情况下,我想手动减少字母之间的字距。

请参阅下面的 MWE。我使用减小了N和字母之间的字距。a\kern-0.2em

\documentclass{article}
\usepackage{calligra}
\usepackage[T1]{fontenc}
\begin{document}
\calligra 
Insert Name\vspace{.2cm}

Insert N\kern-0.2em ame
\end{document}

在此处输入图片描述

有没有办法让这个过程自动化?这样我就不用\kern在每个之后都输入N?

我见过这个问题这表明可以使用序言中定义的宏来实现自动字距调整规则。但是,这种情况只针对一种特定的字符组合。我想让它适用于跟在 后面的每个字符N。我不确定该怎么做。

答案1

为了补充 Phelype 的回答:如果您正在使用pdftex,您可以通过在序言中添加以下几行来获得相同的结果:

\usepackage[kerning=true]{microtype}
\DeclareMicrotypeSet*[kerning]{calligra}{encoding = T1, family = calligra}
\SetExtraKerning{encoding = T1, family = calligra}{N = {,-200}}

答案2

如果您可以使用 XeTeX,那么您可以使用\XeTeXinterchartoksShreevatsaR 的想法)。

首先为字母 N(以及您希望的任何其他字母)创建一个“字符类”:

\newXeTeXintercharclass \mycharclassN
\XeTeXcharclass `\N \mycharclassN

然后您说 XeTeX 应该在和任何其他字符(类)\kern-0.2em之间插入:N0

\XeTeXinterchartoks \mycharclassN 0 = {\kern-0.2em}

那么你只需要使用以下命令激活角色间令牌:

\XeTeXinterchartokenstate = 1

在此处输入图片描述

\documentclass{article}
\usepackage{calligra}
\usepackage[T1]{fontenc}

\newXeTeXintercharclass \mycharclassN
\XeTeXcharclass `\N \mycharclassN

\XeTeXinterchartoks \mycharclassN 0 = {\kern-0.2em}

\begin{document}
\calligra

\parskip=0.2cm

Insert Name

Insert N\kern-0.2em ame

\XeTeXinterchartokenstate = 1

Insert Name

Na Nb Nc Nd Ne Nf Ng

Nh Ni Nj Nk Nl Nm

Nn No Np Nq Nr Ns Nt

Nu Nv Nw Nx Ny Nz

\end{document}

相关内容