LuaLaTeX,升高或降低未装箱的字形,保留字距

LuaLaTeX,升高或降低未装箱的字形,保留字距

LuaLaTeX(通过 luaotfload 和 fontspec)知道字体字形的许多属性,其中许多属性可以显示给用户。所以在我看来,我要问的是“可能的”。

编辑:正如大卫卡莱尔 (David Carlisle) 回答的那样(如下),这些都没有必要。

梅威瑟:

\documentclass{article}
% compile using lualatex
\RequirePackage{fontspec}
\begin{document}
HALT!\par
HAL\raisebox{-.2em}{T}!\par
HAL\lower.2em\hbox{T}!
\end{document}

结果: HALT 代码结果

如您所见,当 T 不移动时,LT 会进行字距调整。但升高或降低 T 需要使用一个框,而框会破坏字距调整。因此,降低的 T 会略微偏向其应在位置的右侧。

由于 Lua 知道字形轮廓边界框(而不仅仅是字符前进宽度),我认为可以只抓取字形本身(未装箱)并进行位移。字距调整算法(可能)对该位移一无所知)仍会执行字距调整。

应用程序仅为文本,没有数学模式或表格。

可以做到吗?请给我指明方向,我会自己尝试(如果可能的话)。

我意识到我可以手动应用字距调整。我寻求一种不需要这种知识的解决方案,因为字体可能会改变。此外,该\smash命令(我最喜欢的)仍然会破坏字距调整。

答案1

即使在经典 tex 中,你也可以添加缺失的 kern (宽度\hbox{LT}和的差异\hbox{L\hbox{}T}

在此处输入图片描述

\documentclass{article}
% compile using lualatex
\RequirePackage{fontspec}
\begin{document}
HALT!\par
HAL\sbox0{LT}\kern\wd0\sbox0{L\hbox{}T}\kern-\wd0\raisebox{-.2em}{T}!\par
HAL\sbox0{LT}\kern\wd0\sbox0{L\hbox{}T}\kern-\wd0\lower.2em\hbox{T}!
\end{document}

相关内容