TachyFont files
===============

base
----

The preprocessed skeleton.

1. prepend info for client side processing
   * Code: base_header.py: BaseHeaderPrepare.prepare
1. zero hmtx/lsb and/or vmtx/tsb
   * Code: base_fonter.py: __zero_mtx
1. 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
1. sparsify loca table
    * Code: base_fonter.py: __segment_table
1. zero cmaps
    * Code: base_fonter.py: __zero_cmaps
1. rle to shrink large blocks of zeros
    * Code: base_fonter.py: __rle

NOTE: the base is _not_ compressed

closure_idx
-----------

Data about related / possibly-needed glyphs.

1. length is proportional to the number of glyphs (which is contiguous from 0 - (n-1))
1. offset & size of closure list in closure_data
    * Code: closure.py: dump_closure_map

closure_data
------------
Arrays of glyphs that might be used with a given glyph (ligatures, GSUB, etc).

1. array of possibly-needed glyphs
    * Code: closure.py: dump_closure_map

codepoints
----------

An array of the Unicode codepoints in the font
    * Code: preprocess.py: cmap_dump.

1. convert to an associative map codepoint:gid at runtime

gids
----

The primary glyph for each codepoint in codepoints
    * Code: proprocess.py: cmap_dump.

glyph_data
----------

The per-glyph data.
    * Code: preprocess.py: serial_glyphs, _serial_Glyf/_serial_Cff

1. exact same order and length as the font's glyph data

glyph_table
-----------

Array of glyphs' data.

1. offset
1. length
1. hmtx/lsb and/or vmtx/tsb

    * Code: preprocess.py: serial_glyphs, _serial_Glyf/_serial_Cff

Add description of the TachyFont files.
Add description of the TachyFont files.
