* Allow SDLFontAtlas rendering commands to be overridden. This isn't
the nicest looking API in the world, but oh well.
* Render fonts through OpenGL via drawing the font's lazily rendered
bitmap
* Expose Handmade Math function for orthographic matrices
Rather than setting the field-type-metadata in the initializer, set it
in an introspection runtime fixup function. This is necessary
especially when metadata references a type in another file. I'm not
happy with this, but I want to move forwards with my project that
depends on Introspection.
* Fix initializer is not constant by converting license strings to an
array. I'm not sure this will hold up in GCC or TCC
* Don't mark allocated strings as const char to avoid warning
* With the typesetting path, a buffer of render rectangles is used
rather than rendering immediately. This allows me to save the
redundant typesetting that occurs when getting the size and then
rendering by re-typesetting. It is consistently faster this way,
though uses more stack space.
* Use cached space width rather than having to look it up every time
* No longer initialize and destroy the freetype library on every font
build. This annoyingly required the addition of global init and
destroy.
* Use 32 bit unsigned ints for keys to store entire decoded Unicode
codepoints. The kerning table uses a 64 bit key, but isn't hooked up
right yet for Unicode.
* Render a simpler ASCII range
* Enable texture streaming so it can be updated whenever new glyphs
are added. This is a separate function call right now so you can batch
update if you know what characters you want.
The problem was the deletion of the space when it was the final "word"
in the string at a word wrap boundary. This caused a zero-length
string request, which let the render string function render the entire
string. On second thought, it might be better for the API to take a
different magic number rather than 0 to mean no limit!