diff options
Diffstat (limited to 'source/fitz')
-rw-r--r-- | source/fitz/font-imp.h | 4 | ||||
-rw-r--r-- | source/fitz/font.c | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/source/fitz/font-imp.h b/source/fitz/font-imp.h index 74a25ccf..f121923c 100644 --- a/source/fitz/font-imp.h +++ b/source/fitz/font-imp.h @@ -39,6 +39,10 @@ struct fz_font_s /* cached encoding lookup */ uint16_t *encoding_cache[256]; + + /* cached md5sum for caching */ + int has_digest; + unsigned char digest[16]; }; #endif diff --git a/source/fitz/font.c b/source/fitz/font.c index 2075306e..c39174ee 100644 --- a/source/fitz/font.c +++ b/source/fitz/font.c @@ -1814,3 +1814,15 @@ fz_shaper_data_t *fz_font_shaper_data(fz_context *ctx, fz_font *font) { return font ? &font->shaper_data : NULL; } + +void fz_font_digest(fz_context *ctx, fz_font *font, unsigned char digest[16]) +{ + if (!font->buffer) + fz_throw(ctx, FZ_ERROR_GENERIC, "no font file for digest"); + if (!font->has_digest) + { + fz_md5_buffer(ctx, font->buffer, font->digest); + font->has_digest = 1; + } + memcpy(digest, font->digest, 16); +} |