[comp.fonts] How to define kerning for a soft font?

wales@valeria.cs.ucla.edu (Rich Wales) (09/07/90)

I would like to figure out a way to generate kerning information auto-
matically for a soft font (e.g., an HP LJ IIP font).

There's a good chance I'll be starting to use WordPerfect 5.1 later this
year.  WordPerfect (unlike Microsoft Word, my current word processing
program of choice) has facilities to support kerning.

Since HP soft font files themselves have no provision for kerning info,
"free" fonts (e.g., from the Waterloo archive) tend not to come with any
kerning tables.

What I'm currently thinking of is a program which would construct the
character shapes for a given font in memory -- then take each pair of
symbols and try to move them closer together (up to some minimum dis-
tance, measured in any direction).

I suspect the above idea is too simplistic, though, and I'd like to hear
any comments, pointers to authoritative works on the subject, etc.

I've read what little Knuth has to say about kerning in the Metafont
book.  On the one hand, he doesn't say very much about how to decide
what amount of kerning is appropriate and where.  On the other hand,
given Knuth's background in typesetting, the fact that he doesn't say
much about it in his book suggests that maybe there =is= no real theory.

--
-- Rich Wales <wales@CS.UCLA.EDU> // UCLA Computer Science Department
   3531 Boelter Hall // Los Angeles, CA 90024-1596 // +1 (213) 825-5683
   "You must not drink the tea.  It is deadly to humans."

daniel@osf.org (Daniel Dardailler) (09/07/90)

You can't generate kerning tables (pair or track) with only the
knowlegde of the character codes.
You might think that when you have "AV" then you can remove some pixels
to the left, but it's not always the case.
There are about 100 to 300 pair kerning entries in a standard font, and
most of them depend on the shape of the glyph, not only of the relative codes.
Just look at the pair "L-":
	in the Times family, because of the right serif of the L, the kerning of
	   the - is positive (shift to the right).
	in Helvetica family, as there is no serif and an empty space, the 
	   kerning is negative...

The kerning tables should be done when the font is created, by the
font designer him(her)self. It's generally the case, but most of our poor 
computer font formats think it's not useful to carry them during the 
lifetime of the font.


        Daniel Dardailler          |          OSF/Motif Team  
     Open Software Foundation      |      Email : daniel@osf.org           
       11 Cambridge Center         |      Phone : (617) 621 8840    
       CAMBRIDGE, MA 02142         |      Fax   : (617) 621 0584
       Disclaimer : This is just my opinion, not my employer's

wales@valeria.cs.ucla.edu (Rich Wales) (09/07/90)

In article <38743@shemp.CS.UCLA.EDU> I asked for ideas regarding auto-
matic generation of kerning info.

In article <12990@paperboy.OSF.ORG> daniel@osf.org (Daniel Dardailler)
replied:

	You can't generate kerning tables (pair or track)
	with only the knowledge of the character codes.
	You might think that when you have "AV" then you
	can remove some pixels to the left, but it's not
	always the case.  There are about 100 to 300 pair
	kerning entries in a standard font, and most of
	them depend on the shape of the glyph, not only
	of the relative codes.

Apparently my original article was misunderstood.  It was never my
intention to generate kerning solely on the basis of the character
codes.  What I was intending to do was to create the actual shapes
(glyphs) within the program -- then see how the shapes of various
pairs of characters happen to fit together in a given font.

--
-- Rich Wales <wales@CS.UCLA.EDU> // UCLA Computer Science Department
   3531 Boelter Hall // Los Angeles, CA 90024-1596 // +1 (213) 825-5683
   "You must not drink the tea.  It is deadly to humans."

dhosek@frigga.claremont.edu (Hosek, Donald A.) (09/08/90)

[A question was asked about heuristics for determining kerning
between character pairs.]

The basic principle that guides both letter design and the
kerning is that for maximum readability, the vertical (or mostly
vertical, e.g., the sides of an "o") lines of a font should be
fairly evenly spaced. In general, this is going to be largely a
function of the character design itself (and it is worth noting
that many fonts supplied without kerning information have been
adapted to compensate somewhat for that loss).

Where kerning is most important in many fonts is between pairs of
capitals (e.g., LT, AV, etc.), although, my feeling is that
all-caps text should be letter spaced rather than kerned (i.e.,
rather than bringing AV closer together, pull II further apart).
Comparison of older titling in all caps with letter spacing to a
dtp monstrosity will indicate the difference in readability.

-dh

---
Don Hosek                       TeX, LaTeX, and Metafont support, consulting 
dhosek@ymir.claremont.edu       installation and production work. 
dhosek@ymir.bitnet              Free Estimates.
uunet!jarthur!ymir              Phone: 714-625-0147
                                finger dhosek@ymir.claremont.edu for more info

laporta@apollo.HP.COM (John X. Laporta) (09/08/90)

>What I'm currently thinking of is a program which would construct the
>character shapes for a given font in memory -- then take each pair of
>symbols and try to move them closer together (up to some minimum dis-
>tance, measured in any direction).
>

As far as I know the original kerning was done in Venice by Aldo 
Manutius sometime in the last 1400's. He took his letter forms and
filed off each corner when the counter (flat surface from which
typeform rises) at that corner was spacious.

Then when he set type the characters kerned when the filing angles
fit into one another. That is, `W' and `A' would kern, but `H' and 
`A' would not.

So it sounds like your proposal is in the best typographic tradition,
certainly one of the oldest, and Manutius' work is generally regarded
as very elegant.

By the way, are you aware that there are three types of kerning, and
all three may be enabled simultaneously:

    overall kerning - an identical (positive/negative) amount is
        added to the distance between each pair of characters.
    track kerning - like overall kerning, but the values differ
        for different ranges of point sizes within a given font.
    pairwise/triplet kerning - a lookup table offers kerning
        increments/decrements for specific pairs of characters
        and for the pairs in specific triplets. Kerning triplets
        are often used when the font has no ligatures (e.g. for
        "ffl").

The kerning you are talking about is pairwise decrement.

        John