仅在非无字体/单色文本中启用 XeTeXinterchartoks

仅在非无字体/单色文本中启用 XeTeXinterchartoks

有没有一种方法可以根据其中一个位于\ttfamily\sffamily或中来自动触发 XeTeXinterchartoks 的激活\rmfamily?我想为我的主要字体使用一些基于 interchartok 的字距,但这些字距与我的 sans 和 mono 字体配合使用会产生绝对的畸形。

答案1

您可以重新定义\ttfamily(或使用该命令的更高级别命令)来设置,\XeTeXinterchartokenstate=0 以便字符类在与字体更改相同的范围内处于非活动状态。

答案2

受到大卫卡莱尔 (David Carlisle) 接受的答案的启发/窃取,我在代码中实现了这一点:

\let\myttfamily\ttfamily
\def\ttfamily{\XeTeXinterchartokenstate=0\myttfamily\relax}
\let\myrmfamily\rmfamily
\def\rmfamily{\XeTeXinterchartokenstate=1\myrmfamily\relax}
\let\mysffamily\sffamily
\def\sffamily{\XeTeXinterchartokenstate=0\mysffamily\relax}
\let\mynormalfont\normalfont
\def\normalfont{\XeTeXinterchartokenstate=1\mynormalfont\relax}

相关内容