summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@hotmail.com>2008-08-14 17:46:01 +0200
committerSebastian Rasmussen <sebras@hotmail.com>2008-08-14 17:46:01 +0200
commit5511beab1406c849b936ccd33db40aa175f59f90 (patch)
tree17d1d0d1e15c7a2c0a7d1e9bf2140987f53ffeb4
parent4c53fd0f861143cccada81823e82182ba000859a (diff)
downloadmupdf-5511beab1406c849b936ccd33db40aa175f59f90.tar.xz
Print freetype error messages.
-rw-r--r--include/mupdf/rsrc.h1
-rw-r--r--mupdf/pdf_font.c44
-rw-r--r--mupdf/pdf_fontfile.c20
-rw-r--r--mupdf/pdf_fontfilefc.c8
-rw-r--r--mupdf/pdf_fontfilems.c8
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;