update wmax, update README.md
This commit is contained in:
@@ -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`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
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.
|
||||||
@@ -1 +0,0 @@
|
|||||||
#cmakedefine ALLEGRO_CFG_TTF_FREETYPE
|
|
||||||
@@ -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
BIN
comparison.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 136 KiB |
Reference in New Issue
Block a user