compress fonts using zlib

- smaller
- better
- ugly big-endian workaround no longer necessary
This commit is contained in:
tildearrow 2024-04-07 16:08:38 -05:00
parent c894ababc0
commit 44973de675
19 changed files with 168771 additions and 65734 deletions

View file

@ -2282,22 +2282,10 @@ ImFont* ImFontAtlas::AddFontFromMemoryTTF(void* ttf_data, int ttf_size, float si
ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compressed_ttf_data, int compressed_ttf_size, float size_pixels, const ImFontConfig* font_cfg_template, const ImWchar* glyph_ranges)
{
// workaround for big-endian
#ifdef TA_BIG_ENDIAN
unsigned char* beData=(unsigned char*)IM_ALLOC(compressed_ttf_size);
for (int i=0; i<compressed_ttf_size; i++) {
beData[i]=((unsigned char*)compressed_ttf_data)[i^3];
}
compressed_ttf_data=beData;
#endif
const unsigned int buf_decompressed_size = stb_decompress_length((const unsigned char*)compressed_ttf_data);
unsigned char* buf_decompressed_data = (unsigned char*)IM_ALLOC(buf_decompressed_size);
stb_decompress(buf_decompressed_data, (const unsigned char*)compressed_ttf_data, (unsigned int)compressed_ttf_size);
#ifdef TA_BIG_ENDIAN
IM_FREE(beData);
#endif
ImFontConfig font_cfg = font_cfg_template ? *font_cfg_template : ImFontConfig();
IM_ASSERT(font_cfg.FontData == NULL);
font_cfg.FontDataOwnedByAtlas = true;