Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!apple!bionet!ames!ncar!ico!vail!rcd From: rcd@ico.ISC.COM (Dick Dunn) Newsgroups: comp.lang.postscript Subject: Re: Why are postscript fonts so tight? Summary: Adobe provides pair-kerning data Message-ID: <15886@vail.ICO.ISC.COM> Date: 28 Jun 89 22:58:39 GMT References: <1974@bunyip.cc.uq.OZ> <2285@basser.oz> Organization: Interactive Systems Corp, Boulder, CO Lines: 51 In article <2285@basser.oz>, jaa@basser.oz (James Ashton) writes in response to a question about why fonts look so "tight" on a PostScript printer: > The main reason is that PostScript does no kerning. Each character has > a width and is printed using its width all the time in ignorance of > the adjoining characters. Characters like `r' (and `j') are a problem > with this system because they are lop sided. Obviously their widths > have been slightly reduced so that in general they will look alright. This is true to the extent that if you print a sequence of characters with the "natural" widths, there is no adjustment based on context. This is necessary in some sense to maintain useful width properties--for example, the "stringwidth" of (a) plus the stringwidth of (bc) is the stringwidth of (abc). The font tuning is intended to give the best average appearance of characters--that is, the width of a character is set so that on average it looks reasonable. In some combinations it will look too tight; in others it will look too open. It's the best that can be done for simple programs making simple assumptions about character widths. > ...A final note for the pedants lurking in > netland: it's not really PostScript that is at fault here, only its > font dictionaries and associated machinery. It would be quite possible > to implement kerning in PostScript with sufficient printer resources. I don't see that PostScript is at fault at all. It provides a font mechanism with certain useful guaranteed properties. The property of concern here is that the width of a character (actually the escapement-- the distance the "current position" moves upon displaying the character) is independent of the context in which it is displayed. It's a very useful property. You can't expect the PostScript character output process to do the kerning for you. Think about whether "(a) show (b) show (c) show" should produce the same output as "(abc) show". Then think about what happens to the current position in between the characters in the first case. On the other hand, Adobe *does* provide the information you need to do pair kerning: The .afm files now (as of 2.0 font metrics) have a section of kerning pairs and amounts. That's as much as can be reasonably expected; the information is there and the rest is up to the program which prepares the PostScript file. _ _ _ _ _ Incidentally, one other possible reason for characters mushing together is that some write-white printers produce characters which are rather bolder than they really should be, although this doesn't alter the character widths. -- Dick Dunn UUCP: {ncar,nbires}!ico!rcd (303)449-2870 ...If you plant ice, you're gonna harvest wind.