lua-ul 下划线带有不必要的间隙

lua-ul 下划线带有不必要的间隙

我想使用\textlsmicrotype 包中的命令来拉伸一个单词,并使用 lua-ul 包为其加下划线。

不幸的是,我收到了一条被打断的台词:

v 和 e 之间的差距

参见字母 v 和 e 下方线条的间隙。

梅威瑟:

\documentclass{article}

\usepackage{fontspec}
\usepackage{microtype}
\usepackage[soul]{lua-ul}

\setmainfont{Garamond Libre Regular}[BoldFont=Garamond Libre Bold]

\begin{document}

\Huge\bfseries

\ul{\textls[50]{Gestattungsvertrag}}

\bigskip

\textls[50]{\ul{Gestattungsvertrag}}

\end{document}

我在这里看到过这个答案:https://tex.stackexchange.com/a/586053/4736

显然,如果能在拉长的单词下划线而行间没有间隙,那就太好了。欢迎提出任何想法!我测试了不同的字体,所以间隙与字体无关。

答案1

编辑

该错误已在 的开发版本中修复luaotfload,现在使用字母间距时字体字距节点保持相同的子类型。

原来的

该问题实际上与微类型无关,您可以使用以下内容产生该问题:

\documentclass{article}
\font\foo="name:GaramondLibreRegular:letterspace=50;"
\usepackage{lua-ul}
\begin{document}
\foo
\underLine{Gestattungsvertrag}
\end{document}

问题是,插入的 kern 节点(至少在这种luaotfload情况pre_linebreak_filter下)没有命令设置的属性\ul

通常这没问题,因为lua-ul它意识到了这一点并且测试一个节点是否是子类型 0(字体)的 kern 节点。https://github.com/zauguin/luaul/blob/bdfe9ed5036d51d27266252dc14473ae7d0e82fc/lua-ul.dtx#L745-L756

当使用字母间距功能时,luaotfload将子类型 0 的 kern 节点替换为子类型 1 (userkern) 的 kern 节点。https://github.com/latex3/luaotfload/blob/72561365e3de47c138418af7d11ab335683ff7f0/src/luaotfload-letterspace.lua#L340-L360

lua-ul除了打补丁或之外,我想不出一个简单而优雅的方法来解决这个问题luaotfload。例如,更改行

elseif id == kern_t and subtype == 0 then 

elseif id == kern_t and (subtype == 0 or subtype == 1)  then

正在lua-ul.lua工作。如果你要在本地环境中修改包,请记住在以下限制下进行:LaTeX 项目公共许可证 (LPPL),版本 1.3c

相关内容