update wmax, update README.md

This commit is contained in:
2026-09-22 18:43:20 -05:00
parent 02eb8fc160
commit 07395f7777
4 changed files with 10 additions and 4 deletions

View File

@@ -3,6 +3,8 @@ Drop-in replacement for Allegro_TTF that contains libschrift, instead of using F
It is 100% API compatible with the vanilla TrueType addon. Compile Allegro with these files inside of `/addons/ttf`. It is 100% API compatible with the vanilla TrueType addon. Compile Allegro with these files inside of `/addons/ttf`.
![Comparison between FreeType2 and schrift when running Allegro's ex_ttf demo](comparison.png)
Pros: Pros:
- It doesn't require NT 6 kernel calls - 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 - It doesn't dynamically link against hundreds of thousands of lines of ugly corporate-backed C code you can't read
@@ -14,4 +16,6 @@ Caveats:
- 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, or impossible. - 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, or impossible.
If your usecase doesn't need every fancy rendering feature and can use schrift, you probably aren't supporting enough characters and languages to need on-the-fly caching, so we consider this an acceptable tradeoff. If your usecase doesn't need every fancy rendering feature and can use schrift, you probably aren't supporting enough characters and languages to need on-the-fly caching, so we consider 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. - 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 English and Romance alphabets will be generated by default. 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.

View File

@@ -1 +0,0 @@
#cmakedefine ALLEGRO_CFG_TTF_FREETYPE

View File

@@ -24,6 +24,9 @@ ALLEGRO_DEBUG_CHANNEL("font")
#define delimit_blue (unsigned)255 #define delimit_blue (unsigned)255
#define delimit_alpha (unsigned)255 #define delimit_alpha (unsigned)255
#define delimit_color al_map_rgba(delimit_red, delimit_green, delimit_blue, delimit_alpha) #define delimit_color al_map_rgba(delimit_red, delimit_green, delimit_blue, delimit_alpha)
#define wmax (int32_t)2048 // fixed atlas width - 1024 or 2048 are ideal depending on font size
// height is automatically adjusted in powers of two
// todo we should expand this less when the card supports npot textures
/* globals */ /* globals */
static bool ttf_inited; static bool ttf_inited;
@@ -66,7 +69,8 @@ ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file,
al_get_config_value(system_cfg, "ttf", "cache_text"); al_get_config_value(system_cfg, "ttf", "cache_text");
if (!cache_text_str) { if (!cache_text_str) {
ALLEGRO_ERROR("No characters defined in cache_text! Using defaults\n"); ALLEGRO_ERROR("No characters defined in cache_text! Using defaults\n");
cache_text_str = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?/()@#$%^&*-_=+<>~`\u007F"; // todo probably should just store a list of ranges instead, maybe even ditch the config var entirely
cache_text_str = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?/()@#$%^&*-_=+<>~`\u007FĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ";
} }
// read font file // read font file
@@ -89,7 +93,6 @@ ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file,
} }
// convert glyphs into textures // convert glyphs into textures
#define wmax (int32_t)1024
int32_t woff = 1, hoff = 1, hmax = 128; // signed to calculate difference at texture edges int32_t woff = 1, hoff = 1, hmax = 128; // signed to calculate difference at texture edges
gtex = al_create_bitmap(wmax, hmax); gtex = al_create_bitmap(wmax, hmax);
al_set_target_bitmap(gtex); al_set_target_bitmap(gtex);

BIN
comparison.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB