29 lines
2.1 KiB
Markdown
29 lines
2.1 KiB
Markdown
# 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).
|
|
|
|
## 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_text` setting in allegro5.cfg is now reused to determine what glyphs can be rendered at all. `skip_cache_misses` has no effect.
|
|
When `cache_text` is undefined, the [Latin](https://en.wikipedia.org/wiki/ASCII), [Germanic, and Romance](https://en.wikipedia.org/wiki/Latin_Extended-A) 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_font` function.
|
|
- 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.
|
|
|
|
 |