13.07.2013 Views

Hagen - Pragma ADE

Hagen - Pragma ADE

Hagen - Pragma ADE

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

18<br />

Modes<br />

raw tfm<br />

normalized<br />

tfm<br />

raw afm<br />

normalized<br />

afm<br />

raw otf<br />

normalized<br />

otf<br />

cached afm<br />

cached otf<br />

featured<br />

tfm<br />

featured<br />

afm<br />

featured<br />

afm<br />

featured<br />

otf<br />

featured<br />

otf<br />

Figure 2.1 Defining a font.<br />

scaled tfm<br />

scaled tfm<br />

scaled tfm<br />

scaled afm<br />

scaled afm<br />

scaled afm<br />

scaled otf<br />

scaled otf<br />

scaled otf<br />

engine tfm<br />

The first step is loading the font (or using the cached copy). From that a copy is made<br />

that has some additional data concerning the features set and from that a scaled copy is<br />

constructed. These copies share as much data as possible to keep the memory footprint<br />

as small as possible. The table that is passed to LuaT E X gets cleaned up afterwards. In<br />

practice the tfm loader only kicks in for creating virtual math fonts. The afm reader is<br />

used for Type1 fonts and as there is no free upgrade path from Type1 to OpenType for<br />

commercial fonts, that one will get used for older fonts. Of course most loading is done<br />

by the otf reader(s).<br />

A.8 The data in the final tfm table is organized in subtables. The biggest ones are the<br />

characters and descriptions tables that have information about each glyph. Later<br />

we will see more of that. There are a few additional tables of which we show two:<br />

properties and parameters. For the current font the first one has the following entries:<br />

autoitalicamount <br />

embedding subset<br />

encodingbytes 2<br />

filename DejaVuSerif.ttf<br />

finalized true

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!