[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RFC: new vertical layout engine

From: David Kastrup
Subject: Re: RFC: new vertical layout engine
Date: Sun, 26 Jul 2009 13:35:10 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

Kieren MacMillan <address@hidden> writes:

> Hi David,
>> @nonfrenchspacing does _not_, I repeat _not_, cause a larger space to
>> appear by _default_ at sentence endings.  However, when TeX does line
>> justification, it will (if necessary) stretch the space after sentence
>> endings more than the interword space when @nonfrenchspacing is being
>> used.
> Interesting... this seems to conflict with the TeX references I read
> earlier (in particular, Knuth's original intention on the matter).

Huh?  What makes you think that?  Period spacing is done by manipulating
\spacefactor, and that only affects stretchability, not natural spacing.

> Where did you get this information/specification?

Well, the TeX book says:

    When \TeX\ is processing a horizontal list of boxes and glue, it
    keeps track of a positive integer called the current ``^{space
    factor}.'' The space factor is normally 1000, which means that the
    interword glue should not be modified. If the space factor $f$ is
    different from 1000, the interword glue is computed as follows: Take
    the normal space glue for the current font, and add the extra space
    if $f\ge2000$. \ (Each font specifies a normal space, normal
    stretch, normal shrink, and extra space; for example, these
    quantities are $3.33333\pt$, $1.66666\pt$, $1.11111\pt$, and
    $1.11111\pt$, respectively, in ^|cmr10|.  We'll discuss such font
    parameters in greater detail later.) \ ^^|\fontdimen| Then the
    stretch component is multiplied by $f/1000$, while the shrink
    component is multiplied by $1000/f$.

    \ddanger However, \TeX\ has two parameters ^|\spaceskip| and
    ^|\xspaceskip| that allow you to override the normal spacing of the
    current font. If $f\ge2000$ and if\/ |\xspaceskip| is nonzero, the
    |\xspaceskip| glue is used for an ^{interword space}. Otherwise if\/
    |\spaceskip| is nonzero, the |\spaceskip| glue is used, with stretch
    and shrink components multiplied by $f/1000$ and $1000/f$. For
    example, the ^|\raggedright| macro of plain \TeX\ uses |\spaceskip|
    and |\xspaceskip| to suppress all stretching and shrinking of
    interword spaces.

Well, so there _is_ extra natural space for a space factor of 2000 and
larger.  With nonfrenchspacing, the space factor for a period and
several other punctuation characters is 3000, so the extra space comes
into play.

I stand somewhat corrected.

David Kastrup

reply via email to

[Prev in Thread] Current Thread [Next in Thread]