4

I assume that when Don Knuth created his Computer Modern fonts, he optimized them, at least in his opinion, for \nonfrenchspacing. But since almost all books that aren't created with TeX have no extra space after punctuation, are most other fonts set up for use in TeX optimized for \frenchspacing, with any settings for \nonfrenchspacing being made as an afterthought?

  • 8
    How can you optimize a font for nonfrenchspacing? – Ulrike Fischer Sep 26 '14 at 14:04
  • 1
    \frenchspacing refers just to the spacings after punctuation (actually it's a bad name, in my opinion). Fonts can't be optimized for the French rules; for instance, the space before and after a colon must be the same as any interword space in the line. – egreg Sep 26 '14 at 14:12
  • @UlrikeFischer presumably MSC believes that the the extra spacing after punctuation is somehow coded into the font. – wasteofspace Sep 26 '14 at 14:22
  • 1
    You should make clear what you mean by “French spacing”. – egreg Sep 26 '14 at 19:33
  • 1
    @percusse -- if you're referring to languages such as (i believe) burmese, where text runs continuously without spaces, and breaking between glyphs depends on traditional rules, then i know of the concept. but if you're referring to something else, can you cite some references where i can learn about it? (in any event, that's quite different from the concept of \frenchspacing as implemented for tex and "western" languages.) – barbara beeton Sep 26 '14 at 20:12
11

Fonts designed for TeX typically encode seven values which are available to TeX via the \fontdimen command: font_slant, font_normal_space, font_normal_stretch, font_normal_shrink, font_ex_height, font_quad, and font_extra_space. These are in order; you get at them with \fontdimen1, \fontdimen2, and so on.

Extra space after punctuation is governed by \fontdimen7, defined in the Metafont source as font_extra_space. In cmr, for example, \fontdimen7 is set to 2u#, which is deep Metafont magic that we don't need to get into right here. (Not really deep, actually; but not really relevant here, either.)

These \fontdimen values can be manipulated by TeX, however. For example, to get \frenchspacing behavior after punctuation with the Computer Modern fonts, you simply say reset \fontdimen7 for those fonts. So, for example:

\documentclass{article}
\begin{document}
\font\cmr=cmr10
\cmr Hello.  I'm Joe.

\fontdimen7\cmr=0pt
Hello. I'm Joe.
\end{document}

Depending on the font format, TeX will get the values for the \fontdimen parameters from different places. With Computer Modern and other Metafont fonts, they are set in the Metafont source and taken by TeX from the tfm file.

This is a long way of saying a short answer: no, fonts are not optimized for \frenchspacing or otherwise; but they do set the values which will be used in both cases, unless those values are overridden by TeX.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.