a9c82c406d629edd0da0e0f4361db7cf087849e8
allegro_schrift
Drop-in replacement for Allegro_TTF that contains libschrift, instead of using FreeType2.
It is 100% API compatible with the vanilla TrueType addon. Compile Allegro with these files inside of /addons/ttf.
Requires the primitives addon.
Pros
- It doesn't require NT 6 kernel calls
- It doesn't dynamically link against hundreds of thousands of lines of ugly corporate-backed C code you can't read
- Our addon is only a couple or few hundred lines, and libschrift is less than 2,000. They're compiled together.
The original Allegro_TTF is over 1,000 lines (for a good reason) and has a relatively massive dependency weight (for a stupid reason).
- Our addon is only a couple or few hundred lines, and libschrift is less than 2,000. They're compiled together.
Caveats
- Pre-stretching is not implemented.
- The entire caching system is gone, fonts are baked to textures immediately and no further. This makes supporting some languages with this add-on inconvenient, and increases load times. For many users this an acceptable tradeoff.
- The
cache_textsetting in allegro5.cfg is now reused to determine what glyphs can be rendered at all.skip_cache_misseshas no effect.
Whencache_textis undefined, the Latin, Germanic, and Romance alphabets will be generated by default. (not necessarily 32 - 255) - TODO Alternatively, the developer can force a custom range of unicode characters to be generated using a new parameter in the
al_load_ttf_fontfunction.
- The
- Kerning, per-character advance and offsets, and other features which are exposed by libschrift are not currently implemented, but doing so is possible. See the above comparison screenshot.
In Practice
You can see here some of the flaws with this implementation. Line heights are taller than they should be, and there's an issue with string endings or other characters.
Not visible in the below example is the atlas size to hold glyph data.
Description
Languages
C
98.6%
CMake
1.4%

