Skip to content

Disable default kerning when letterspacing is active - #330

Closed
peaR-red wants to merge 1 commit into
latex3:mainfrom
peaR-red:peaR-harf
Closed

Disable default kerning when letterspacing is active#330
peaR-red wants to merge 1 commit into
latex3:mainfrom
peaR-red:peaR-harf

Conversation

@peaR-red

Copy link
Copy Markdown

This PR adds a check to fonts.readers.harf to bypass GPOS kerning when tracking is active when using HarfBuzz.

@FrankMittelbach

Copy link
Copy Markdown
Member

What exactly is the rationale here? I don't quite see why you want to disable kerning just because you do some light tracking/letter spacing. For example, suppose you have "AV" then even with minimal letter spacing you suddenly get "A V".

@peaR-red

peaR-red commented May 26, 2026

Copy link
Copy Markdown
Author

Consider the MWE, compiled with lualatex:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{lmroman10-regular}

\begin{document}
\setlength{\fboxrule}{0pt}
\newcommand\test[1]{\noindent{\framebox[6em][l]{\ttfamily#1:}} {\addfontfeature{LetterSpace=50, Renderer=#1} DOCUMENTATION}\par}


\test{Base}
\test{Node}
\test{Harfbuzz}
\test{OpenType}
\end{document}

Note that with OpenType and HarfBuzz the "NT" does not comply with LetterSpace.

This effect is not limited to Latin Modern; it is also visible in other fonts.

@Udi-Fogiel

Copy link
Copy Markdown

The difference you see is because of discretionary nodes (harf and node insert different break points). You can get the same thing with mode=node if you manually insert them

\documentclass{article}
\usepackage{fontspec}
\setmainfont{lmroman10-regular}

\begin{document}
\setlength{\fboxrule}{0pt}
\newcommand\test[1]{\hbox{\addfontfeature{LetterSpace=50, Renderer=#1} DOCUMEN\discretionary{-}{-}{T}\discretionary{}{}{}ATION}}

\test{Node}
\end{document}

AFAICT your patch also affect kerning/spacing for harf, which I'm not sure is desirable.

I think the real problem is either discretionary nodes are not handled well in luaotfload-letterspace.lua, or maybe harf should not insert consecutive disc nodes (although I'm not sure if the latter is correct behavior or not).

@zauguin

zauguin commented May 27, 2026

Copy link
Copy Markdown
Member

Disabling kerning with letterspacing would be both inconsistent with node mode and it is not resolving the spacing issue with letterspacing discretionary nodes but merely making it a bit less likely to appear for certain fonts.

@zauguin zauguin closed this May 27, 2026
@peaR-red
peaR-red deleted the peaR-harf branch June 2, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants