diff options
author | Sebastian Rasmussen <sebras@hotmail.com> | 2008-08-14 17:46:01 +0200 |
---|---|---|
committer | Sebastian Rasmussen <sebras@hotmail.com> | 2008-08-14 17:46:01 +0200 |
commit | 5511beab1406c849b936ccd33db40aa175f59f90 (patch) | |
tree | 17d1d0d1e15c7a2c0a7d1e9bf2140987f53ffeb4 | |
parent | 4c53fd0f861143cccada81823e82182ba000859a (diff) | |
download | mupdf-5511beab1406c849b936ccd33db40aa175f59f90.tar.xz |
Print freetype error messages.
-rw-r--r-- | include/mupdf/rsrc.h | 1 | ||||
-rw-r--r-- | mupdf/pdf_font.c | 44 | ||||
-rw-r--r-- | mupdf/pdf_fontfile.c | 20 | ||||
-rw-r--r-- | mupdf/pdf_fontfilefc.c | 8 | ||||
-rw-r--r-- | mupdf/pdf_fontfilems.c | 8 |
5 files changed, 55 insertions, 26 deletions
diff --git a/include/mupdf/rsrc.h b/include/mupdf/rsrc.h index f6e58d42..aa1935b5 100644 --- a/include/mupdf/rsrc.h +++ b/include/mupdf/rsrc.h @@ -239,6 +239,7 @@ fz_error *pdf_loadsubstitutefont(pdf_font *font, int fdflags, char *collection); fz_error *pdf_loadtype3font(pdf_font **fontp, pdf_xref *xref, fz_obj *obj, fz_obj *ref); /* font.c */ +char *ft_errstr(int err); fz_error *pdf_loadfontdescriptor(pdf_font *font, pdf_xref *xref, fz_obj *desc, char *collection); fz_error *pdf_loadfont(pdf_font **fontp, pdf_xref *xref, fz_obj *obj, fz_obj *ref); void pdf_dropfont(pdf_font *font); diff --git a/mupdf/pdf_font.c b/mupdf/pdf_font.c index 55e63afc..4a55b18a 100644 --- a/mupdf/pdf_font.c +++ b/mupdf/pdf_font.c @@ -43,6 +43,33 @@ static char *basefontnames[14][7] = enum { UNKNOWN, TYPE1, TRUETYPE, CID }; +#undef __FTERRORS_H__ +#define FT_ERRORDEF(e, v, s) { (e), (s) }, +#define FT_ERROR_START_LIST +#define FT_ERROR_END_LIST { 0, NULL } + +struct ft_error +{ + int err; + char *str; +}; + +const struct ft_error ft_errors[] = +{ +#include FT_ERRORS_H +}; + +char *ft_errstr(int err) +{ + const struct ft_error *e; + + for (e = ft_errors; e->str != NULL; e++) + if (e->err == err) + return e->str; + + return "Unknown error"; +} + static int ftkind(FT_Face face) { const char *kind = FT_Get_X11_Font_Format(face); @@ -109,7 +136,7 @@ ftrender(fz_glyph *glyph, fz_font *fzfont, int cid, fz_matrix trm) fterr = FT_Load_Glyph(font->ftface, gid, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP | FT_LOAD_IGNORE_TRANSFORM); if (fterr) - return fz_throw("freetype failed to load glyph: 0x%x", fterr); + return fz_throw("freetype failed to load glyph: %s", ft_errstr(fterr)); realw = ((FT_Face)font->ftface)->glyph->advance.x; subw = fz_gethmtx(fzfont, cid); @@ -148,7 +175,7 @@ ftrender(fz_glyph *glyph, fz_font *fzfont, int cid, fz_matrix trm) fterr = FT_Load_Glyph(face, gid, FT_LOAD_NO_BITMAP); if (fterr) - fz_warn("freetype load glyph: 0x%x", fterr); + fz_warn("freetype load glyph: %s", ft_errstr(fterr)); #else @@ -164,13 +191,13 @@ ftrender(fz_glyph *glyph, fz_font *fzfont, int cid, fz_matrix trm) fterr = FT_Load_Glyph(face, gid, FT_LOAD_NO_BITMAP | FT_LOAD_NO_HINTING); if (fterr) - fz_warn("freetype load glyph: 0x%x", fterr); + fz_warn("freetype load glyph: %s", ft_errstr(fterr)); #endif fterr = FT_Render_Glyph(face->glyph, ft_render_mode_normal); if (fterr) - fz_warn("freetype render glyph: 0x%x", fterr); + fz_warn("freetype render glyph: %s", ft_errstr(fterr)); glyph->w = face->glyph->bitmap.width; glyph->h = face->glyph->bitmap.rows; @@ -302,7 +329,8 @@ loadsimplefont(pdf_font **fontp, pdf_xref *xref, fz_obj *dict, fz_obj *ref) char *fontname; char *estrings[256]; char ebuffer[256][32]; - int i, k, n, e; + int i, k, n; + int fterr; basefont = fz_toname(fz_dictgets(dict, "BaseFont")); fontname = cleanfontname(basefont); @@ -376,10 +404,10 @@ loadsimplefont(pdf_font **fontp, pdf_xref *xref, fz_obj *dict, fz_obj *ref) if (cmap) { - e = FT_Set_Charmap(face, cmap); - if (e) + fterr = FT_Set_Charmap(face, cmap); + if (fterr) { - error = fz_throw("freetype could not set cmap: 0x%x", e); + error = fz_throw("freetype could not set cmap: %s", ft_errstr(fterr)); goto cleanup; } } diff --git a/mupdf/pdf_fontfile.c b/mupdf/pdf_fontfile.c index 28155086..d9808328 100644 --- a/mupdf/pdf_fontfile.c +++ b/mupdf/pdf_fontfile.c @@ -120,7 +120,7 @@ static fz_error *initfontlibs(void) fterr = FT_Init_FreeType(&ftlib); if (fterr) - return fz_throw("freetype failed initialisation: 0x%x", fterr); + return fz_throw("freetype failed initialisation: %s", ft_errstr(fterr)); FT_Library_Version(ftlib, &maj, &min, &pat); if (maj == 2 && min == 1 && pat < 7) @@ -135,7 +135,7 @@ pdf_loadbuiltinfont(pdf_font *font, char *fontname) fz_error *error; unsigned char *data; unsigned int len; - FT_Error e; + int fterr; int i; error = initfontlibs(); @@ -154,9 +154,9 @@ found: data = (unsigned char *) basefonts[i].cff; len = *basefonts[i].len; - e = FT_New_Memory_Face(ftlib, data, len, 0, (FT_Face*)&font->ftface); - if (e) - return fz_throw("freetype: cannot load font: 0x%x", e); + fterr = FT_New_Memory_Face(ftlib, data, len, 0, (FT_Face*)&font->ftface); + if (fterr) + return fz_throw("freetype: cannot load font: %s", ft_errstr(fterr)); return fz_okay; } @@ -232,7 +232,7 @@ static fz_error * loadcidfont(pdf_font *font, int csi, int kind) { char path[1024]; - int e; + int fterr; int i; for (i = 0; i < nelem(fontsubs); i++) @@ -242,9 +242,9 @@ loadcidfont(pdf_font *font, int csi, int kind) if (findcidfont(fontsubs[i].name, path, sizeof path)) { pdf_logfont("load system font '%s'\n", fontsubs[i].name); - e = FT_New_Face(ftlib, path, 0, (FT_Face*)&font->ftface); - if (e) - return fz_throw("freetype: cannot load font: 0x%x", e); + fterr = FT_New_Face(ftlib, path, 0, (FT_Face*)&font->ftface); + if (fterr) + return fz_throw("freetype: cannot load font: %s", ft_errstr(fterr)); return fz_okay; } } @@ -383,7 +383,7 @@ pdf_loadembeddedfont(pdf_font *font, pdf_xref *xref, fz_obj *stmref) if (fterr) { fz_dropbuffer(buf); - return fz_throw("freetype: cannot load embedded font: 0x%x", fterr); + return fz_throw("freetype: cannot load embedded font: %s", ft_errstr(fterr)); } font->ftface = face; diff --git a/mupdf/pdf_fontfilefc.c b/mupdf/pdf_fontfilefc.c index b0d7318b..5104acad 100644 --- a/mupdf/pdf_fontfilefc.c +++ b/mupdf/pdf_fontfilefc.c @@ -71,7 +71,7 @@ static fz_error *initfontlibs(void) fterr = FT_Init_FreeType(&ftlib); if (fterr) - return fz_throw("freetype failed initialisation: 0x%x", fterr); + return fz_throw("freetype failed initialisation: %s", ft_errstr(fterr)); FT_Library_Version(ftlib, &maj, &min, &pat); if (maj == 2 && min == 1 && pat < 7) @@ -130,7 +130,7 @@ pdf_loadbuiltinfont(pdf_font *font, char *basefont) fterr = FT_New_Face(ftlib, file, index, &face); if (fterr) - return fz_throw("freetype could not load font file '%s': 0x%x", file, fterr); + return fz_throw("freetype could not load font file '%s': %s", file, ft_errstr(fterr)); FcPatternDestroy(matchpat); FcPatternDestroy(searchpat); @@ -247,7 +247,7 @@ pdf_loadsystemfont(pdf_font *font, char *basefont, char *collection) if (fterr) { FcPatternDestroy(matchpat); FcPatternDestroy(searchpat); - return fz_throw("freetype could not load font file '%s': 0x%x", file, fterr); + return fz_throw("freetype could not load font file '%s': %s", file, ft_errstr(fterr)); } FcPatternDestroy(matchpat); @@ -284,7 +284,7 @@ pdf_loadembeddedfont(pdf_font *font, pdf_xref *xref, fz_obj *stmref) if (fterr) { fz_free(buf); - return fz_throw("freetype could not load embedded font: 0x%x", fterr); + return fz_throw("freetype could not load embedded font: %s", ft_errstr(fterr)); } font->ftface = face; diff --git a/mupdf/pdf_fontfilems.c b/mupdf/pdf_fontfilems.c index 26a4ea6a..f5ad7fda 100644 --- a/mupdf/pdf_fontfilems.c +++ b/mupdf/pdf_fontfilems.c @@ -678,7 +678,7 @@ static fz_error *initfontlibs(void) fterr = FT_Init_FreeType(&ftlib); if (fterr) - return fz_throw("freetype failed initialisation: 0x%x", fterr); + return fz_throw("freetype failed initialisation: %s", ft_errstr(fterr)); FT_Library_Version(ftlib, &maj, &min, &pat); if (maj == 2 && min == 1 && pat < 7) @@ -711,7 +711,7 @@ pdf_loadbuiltinfont(pdf_font *font, char *basefont) fterr = FT_New_Face(ftlib, file, index, &face); if (fterr) - return fz_throw("freetype could not load font file '%s': 0x%x", file, fterr); + return fz_throw("freetype could not load font file '%s': %s", file, ft_errstr(fterr)); font->ftface = face; @@ -737,7 +737,7 @@ pdf_loadsystemfont(pdf_font *font, char *basefont, char *collection) fterr = FT_New_Face(ftlib, file, index, &face); if (fterr) { - return fz_throw("freetype could not load font file '%s': 0x%x", file, fterr); + return fz_throw("freetype could not load font file '%s': %s", file, ft_errstr(fterr)); } font->ftface = face; @@ -768,7 +768,7 @@ pdf_loadembeddedfont(pdf_font *font, pdf_xref *xref, fz_obj *stmref) if (fterr) { fz_free(buf); - return fz_throw("freetype could not load embedded font: 0x%x", fterr); + return fz_throw("freetype could not load embedded font: %s", ft_errstr(fterr)); } font->ftface = face; |