如何更改特定小型大写字母的字距,特别w
是v
与点和逗号的组合?
使用 XeTeX,我找到了如何转换大写和小写字母的方法,但对于小写 unicode 数字却无能为力,至少对于Fanwood Text
、Junicode
或 来说是这样EB Garamond
。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Junicode}
\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\fooV
\newXeTeXintercharclass\foov
\newXeTeXintercharclass\fooDot
\XeTeXcharclass "56=\fooV % Capital V
\XeTeXcharclass "76=\foov % Lowercase V
\XeTeXcharclass "F776=\foov % Small Cap v in Junicode
\XeTeXcharclass "2C=\fooDot % Comma
\XeTeXcharclass "2E=\fooDot % Dot
\XeTeXinterchartoks\fooV\fooDot{\kern-.12em}
\XeTeXinterchartoks\foov\fooDot{\kern-.06em}
\begin{document}
EV,
ev,
\textsc{ev},
\end{document}
答案1
您需要在切换字体的命令范围内包含逗号。字体之间的字距调整没有任何意义,就 TeX 而言,小型大写字母本质上是一种不同的字体。(不过,我不太清楚这对较新的引擎来说如何。)
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Junicode}
\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\fooV
\newXeTeXintercharclass\foov
\newXeTeXintercharclass\fooDot
\XeTeXcharclass "56=\fooV % Capital V
\XeTeXcharclass "76=\foov % Lowercase V
\XeTeXcharclass "F776=\foov % Small Cap v in Junicode
\XeTeXcharclass "2C=\fooDot % Comma
\XeTeXcharclass "2E=\fooDot % Dot
\XeTeXinterchartoks\fooV\fooDot{\kern-.12em}
\XeTeXinterchartoks\foov\fooDot{\kern-.06em}
\begin{document}
EV,
ev,
\textsc{ev},
\textsc{ev,}
\end{document}