Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!apple!apple.com!kevina From: kevina@apple.com (This space for rent) Newsgroups: comp.fonts Subject: Re: Adobe Type 1 font file sizes Message-ID: <9916@goofy.Apple.COM> Date: 23 Aug 90 23:37:53 GMT References: <66_%&L#@rpi.edu> Sender: usenet@Apple.COM Organization: Apple Computer, Inc. Lines: 45 In article <66_%&L#@rpi.edu> kibo@pawl.rpi.edu (James 'Kibo' Parry) writes: > I'm looking at the sizes of the outline font files that came > with Adobe Type Manager 1.2 (Macintosh)... > > (...sizes deleted...) > > The question is, why are the oblique font files 20 to 25 percent > larger than the non-oblique files? > > The only explanation I could think of is that maybe Adobe is > clever and has a command defined that's a "lineto-same-x-coordinate" > that takes one parameter, so non-oblique fonts could use the shorthand > for their vertical strokes... but this is speculation, of course. Adobe is cleverer still, in that the font data for Oblique fonts is the *same* font data as in the corresponding Roman font, algorithmically sheared using the FontMatrix. (This is why they are called "Oblique" instead of "Italic"... the same holds true for "Narrow" vs. "Condensed".) Adobe calls these "synthetic" fonts (see chapter 9 of the Black Book.) If the base font (e.g. Helvetica) already exists on the printer, the synthetic font program (e.g. Helvetica-Oblique) creates a new font dictionary with its own FontName, FontMatrix, UniqueID and FontInfo entries. (It also creates its own Private dictionary, but only because the UniqueID is duplicated there.) It then uses the CharStrings dictionary from the base font as the CharStrings entry in the synthetic font dictionary. Saves VM, right? Right! But what if the base font doesn't already exist on the printer? (Granted, it won't happen with Helvetica-Oblique, but it might with Tekton-Oblique.) The synthetic font program contains a copy of the base font program. If the base font is already on the printer, the base font program is discarded; if not, it is executed and the synthetic font proceeds as before. So, in printer VM, synthetic fonts are actually only about 20-25% the size of their base fonts, due to the font dictionary itself and its FontInfo and Private dictionaries. Because the synthetic font program has a copy of the entire base font program, the synthetic font *files* are 25% larger. (Of course, Adobe *does* have a "lineto-same-x-coordinate" command -- hlineto -- but that's not causing the savings here.) --Kevin Andresen [kevina@apple.com] "X_____ geek-heads of the world, unite!"