Adobe Garamond Pro 的小写数字非常漂亮,但 1 可能会令人困惑:
这是罗马数字 11(应该是这样)还是 2?
我想用另一个字符自动替换这个小写的 1,最好是另一种字体的缩放版本(参见下图的第一行),或者用相同字体的无点 i 替换(第二行,不太合适但可以):
这个请求与这个问题非常相似: 用不同点大小的字符替换一个字符 但不幸的是没有得到答复(我知道我会有同样的批评,但这个小写的 1 对一些读者来说是个问题)。
在数学模式下,这似乎相当容易实现:如何更改字母的字体? 但在文本模式下,似乎需要将 catcode 更改为 1,这是毫无疑问的。
我尝试使用 fontspec 和 opentype 功能文件来实现这一点,但没有成功。使用 lualatex/fontspec 可以实现这一点吗?
谢谢!
答案1
由于我没有 Adobe Garamond Pro 字体,因此我使用了 TeX Live 中提供的 EBGaramond12 字体。此字体one.01
为字形提供了另一种形式one
:
\documentclass{article}
\usepackage{fontspec}
\usepackage{filecontents}
\begin{filecontents*}{ebgaramond12.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
feature calt {
sub one by one.01;
} calt;
\end{filecontents*}
\newfontfamily\orggaramond{EBGaramond12}
\setmainfont[
FeatureFile=ebgaramond12.fea,
Contextuals=Alternate,
]{EBGaramond12}
\begin{document}
{\orggaramond 0123456789 1992 11 Ii Ll}\par
0123456789 1992 11 Ii Ll
\end{document}