[XeTeX] XeTeX, fontspec, OTF, and fontdimens

mskala at ansuz.sooke.bc.ca mskala at ansuz.sooke.bc.ca
Mon Feb 28 00:41:05 CET 2011


On Mon, 28 Feb 2011, Will Robertson wrote:
> How about, instead, if
>
>     WordSpace={2,2,2}
>
> was a multiplier, but
>
>     WordSpace={6pt,2pt,1pt}
>
> set the values explicitly? (Subject to scaling according to the font size.)

If both those are available, it should be fine.  If only the point size
were available. it would be inconvenient for the common use case of
someone trying to mimic typewriter output - because it's non-trivial,
given "12 point Courier," to compute exactly how many points a horizontal
typewriter space should be.  But presumably in that case the default
horizontal space would be an integer multiple or submultiple of the
typewriter space width (probably, equal to the typewriter space width) and
users would usually be satisfied with the default or the multiplier
syntax.  I think the point-size option is convenient enough to address the
rare case where the default for a dimension is zero and the user wants to
override it.

>    http://github.com/wspr/fontspec/issues/99
>
> Have I missed anything?

On issue 99: you mention "an option to add two ‘spaces’ instead of one
might be a nice customisation."  That calls for some caution - does it
mean "add two extra spaces to the one that already exists (\fontdimen2=one
space, \fontdimen7=two spaces)" or "add one extra space for a total of
two"?  I'd rather have the default be an inter-sentence space equal to
twice an inter-word space when using a monospace font - that means
\fontdimen7 equal to \fontdimen2 - with other values available through
the PunctuationSpace option.

Space between sentences the same as between words:  some people advocate
this in monospace settings, and it is the most popular choice in non-TeX
proportional-space typesetting today.  LaTeX can do it with the
\frenchspacing command.

Space between sentences a little bigger than between words, but less than
twice as much as between words:  this is the default in TeX, but is seldom
used elsewhere.  I have heard people disparage it quite vocally, calling
it "quaint" and the people who like it all kinds of names; but it remains
the TeX default.

Space between sentences equal to exactly twice the space between words:
this is standard in typewritten manuscripts for professional fiction
publishing, including movie and television scripts.  I like it (in the
monospace context), but people preparing documents in typewritten
manuscript format must do it regardless of whether I like it.

Space between sentences equal to exactly three times the space between
words: that's what your "option to add two spaces" implies to me, but I
think there are very few people who would actually want that.

My suggestion is that if fontspec decides the font is monospace, it
should default to \fontdimen2 and \fontdimen7 both equal to one unit
space, and \fontdimen3 and \fontdimen4 both equal to zero.  That gives the
"exactly twice" option above as the default behaviour.  If fontspec
doesn't decide the font is monospace it should keep its current behaviour,
which is \fontdimen2 one space, \fontdimen3 and \fontdimen4 some nonzero
value (I don't know how they're currently calculated), and \fontdimen7 one
third of \fontdimen2.

I think two-spaces-after-period should be the default when using
monospace, with "spaces the same between sentences as between words, i.e.
\fontdimen7=0" being the optional override, because of least surprise:
people who use monospace fonts generally want the result to look like a
typewritten document, and two spaces between sentences remains the
standard in typewritten documents even if wider sentence spaces have
fallen out of use in proportional-spaced typesetting.  If it's default,
then they never need to find out about PunctuationSpace at all.  If equal
sentence and word spaces are the default, then those people are forced to
learn about PunctuationSpace just to get their documents "back" into
standard format.

There's also a minor technical reason to prefer a default of \fontdimen7
nonzero: it means the "point" syntax for PunctuationSpace won't have to be
used as frequently.
-- 
Matthew Skala
mskala at ansuz.sooke.bc.ca                 People before principles.
http://ansuz.sooke.bc.ca/


More information about the XeTeX mailing list