The preprocessed skeleton.
- prepend info for client side processing
- Code: base_header.py: BaseHeaderPrepare.prepare
- zero hmtx/lsb and/or vmtx/tsb
- Code: base_fonter.py: __zero_mtx
- zero out glyph data
- CFF code: base_fonter.py: __end_char_strings, __fill_char_strings, __zero_charset_fmt
- TTF code: base_fonter.py: __zero_glyf
- sparsify loca table
- Code: base_fonter.py: __segment_table
- zero cmaps
- Code: base_fonter.py: __zero_cmaps
- rle to shrink large blocks of zeros
- Code: base_fonter.py: __rle
NOTE: the base is not compressed
Data about related / possibly-needed glyphs.
- length is proportional to the number of glyphs (which is contiguous from 0 - (n-1))
- offset & size of closure list in closure_data
- Code: closure.py: dump_closure_map
Arrays of glyphs that might be used with a given glyph (ligatures, GSUB, etc).
- array of possibly-needed glyphs
- Code: closure.py: dump_closure_map
An array of the Unicode codepoints in the font
- convert to an associative map codepoint:gid at runtime
- Code: preprocess.py: cmap_dump.
The primary glyph for each codepoint in codepoints
- Code: proprocess.py: cmap_dump.
The per-glyph data.
- exact same order and length as the font's glyph data
- Code: preprocess.py: serial_glyphs, _serial_Glyf/_serial_Cff
Array of glyphs' data.
- offset
- length
- hmtx/lsb and/or vmtx/tsb
- Code: preprocess.py: serial_glyphs, _serial_Glyf/_serial_Cff