5

Suppose I \showbox'd the TeX logo and the word "We", thus:

\setbox0=\hbox{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125em X We}\showbox0

In the result, there are two different representations of kerns:

    \box0=
    \hbox(6.83331+2.15277)x35.83302
    .\tenrm T
    .\kern -1.66702
    .\hbox(6.83331+0.0)x6.80557, shifted 2.15277
    ..\tenrm E
    .\kern -1.25
    .\tenrm X
    .\glue 3.33333 plus 1.66498 minus 1.11221
    .\tenrm W
    .\kern-0.83334
    .\tenrm e

The explicit kerns have a space between \kern and the width; the natural kern between W and e in cmr10 doesn't. Why the difference?

This isn't very important, but it bugs me.

3 Answers 3

10

The TeX program explains it:

An ``explicit'' kern value is indicated implicitly by an explicit space.

The \kerns in the \TeX macro are explicit, because they occur in the macro definition: T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX. But the \kern-0.83334 between W and e is implicit, it is implied by the ligtable command in the font definition:

ligtable "F": "V": "W": if serifs: "o" kern kk#, "e" kern kk#, "u" kern kk#,
...
7

The reason is exactly as you show in the question, to distinguish implicit and explicit kerns.

If you find a space a little "subtle" as an indicator of that distinction, you would not be alone, luatex never uses the space and adds (font) for font provided implicit kerns:

> \box0=
\hbox(6.83331+2.15277)x35.83302, direction TLT
.\tenrm T
.\kern-1.66702
.\hbox(6.83331+0.0)x6.80557, shifted 2.15277, direction TLT
..\tenrm E
.\kern-1.25
.\tenrm X
.\glue(\spaceskip) 3.33333 plus 1.66498 minus 1.11221
.\tenrm W
.\kern-0.83334 (font)
.\tenrm e
1

One additional note to the "kern_node" sub types in TeX:

TeX's internal kern nodes can have 3 sub types: normal (0), explicit (1), and acc_kern (2).

Accent kerns are used only in the accenting routine using the \accent primitive to adjust the accent character putting it in the middle position over the accentee taking care of slant/italic correction. In the \showbox ouput an acc_kern is marked with an additional " (for accent)".

TeX needs to distinguish implicit and explicit kerns in some situations, e.g., when breaking paragraphs into lines

Kern nodes do not disappear at a line break unless they are |explicit|.

(see TeX.web, chapter "@* [38] Breaking paragraphs into lines.", code part "@<Compute the values of |break...@>")

1
  • oh hi:-) Welcome to the site! Jan 7, 2023 at 21:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .