This fits as a layer in your rendering pipeline between font rasterization and shaping and text
rendering. In other words, first you turn a string into a series of font glyphs. Each of those
glyphs is looked up against the cache, and if it hasn't been rendered, it is turned into a
bitmap and uploaded to the GPU. The string is then laid out and rendered by the client
application.

Scope of this library:

DO support various font libraries / types of fonts (TTFs, bitmap fonts)

DO support whatever backend (rendering to an image, GPU frameworks, etc.)

DON'T handle complex tasks like shaping. The font stack should handle that elsewhere, and
provide this library the glyphs to render

DON'T handle layout. This can be taken care of by the client
application when rendering.

Support is available out-of-the-box for software rendering via image, rendering via
rusttype, and performing automatic unicode normalization. All of these are optional features.