summaryrefslogtreecommitdiff
path: root/fitz/res_font.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2011-04-03 19:59:11 +0200
committerTor Andersson <tor.andersson@artifex.com>2011-04-03 19:59:11 +0200
commit5ea6c5701e7ec3f738a8adb6d20790edcda781ba (patch)
tree38352e2cff9f1b9ae7f48d20480b5a8088624de9 /fitz/res_font.c
parenta5bfe0eef4361ec3ca8190b2533eca041eb7ef61 (diff)
parentbc5be11061e7687a80bcda6edc9bf3c136529111 (diff)
downloadmupdf-5ea6c5701e7ec3f738a8adb6d20790edcda781ba.tar.xz
Merge branch 'xps'
Diffstat (limited to 'fitz/res_font.c')
-rw-r--r--fitz/res_font.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/fitz/res_font.c b/fitz/res_font.c
index 1df8b2e6..44046451 100644
--- a/fitz/res_font.c
+++ b/fitz/res_font.c
@@ -176,6 +176,7 @@ fz_finalizefreetype(void)
fz_error
fz_newfontfromfile(fz_font **fontp, char *path, int index)
{
+ FT_Face face;
fz_error error;
fz_font *font;
int fterr;
@@ -184,14 +185,16 @@ fz_newfontfromfile(fz_font **fontp, char *path, int index)
if (error)
return fz_rethrow(error, "cannot init freetype library");
- font = fz_newfont();
-
- fterr = FT_New_Face(fz_ftlib, path, index, (FT_Face*)&font->ftface);
+ fterr = FT_New_Face(fz_ftlib, path, index, &face);
if (fterr)
- {
- fz_free(font);
return fz_throw("freetype: cannot load font: %s", ft_errorstring(fterr));
- }
+
+ font = fz_newfont();
+ font->ftface = face;
+ font->bbox.x0 = face->bbox.xMin * 1000 / face->units_per_EM;
+ font->bbox.y0 = face->bbox.yMin * 1000 / face->units_per_EM;
+ font->bbox.x1 = face->bbox.xMax * 1000 / face->units_per_EM;
+ font->bbox.y1 = face->bbox.yMax * 1000 / face->units_per_EM;
*fontp = font;
return fz_okay;
@@ -200,6 +203,7 @@ fz_newfontfromfile(fz_font **fontp, char *path, int index)
fz_error
fz_newfontfrombuffer(fz_font **fontp, unsigned char *data, int len, int index)
{
+ FT_Face face;
fz_error error;
fz_font *font;
int fterr;
@@ -210,12 +214,16 @@ fz_newfontfrombuffer(fz_font **fontp, unsigned char *data, int len, int index)
font = fz_newfont();
- fterr = FT_New_Memory_Face(fz_ftlib, data, len, index, (FT_Face*)&font->ftface);
+ fterr = FT_New_Memory_Face(fz_ftlib, data, len, index, &face);
if (fterr)
- {
- fz_free(font);
return fz_throw("freetype: cannot load font: %s", ft_errorstring(fterr));
- }
+
+ font = fz_newfont();
+ font->ftface = face;
+ font->bbox.x0 = face->bbox.xMin * 1000 / face->units_per_EM;
+ font->bbox.y0 = face->bbox.yMin * 1000 / face->units_per_EM;
+ font->bbox.x1 = face->bbox.xMax * 1000 / face->units_per_EM;
+ font->bbox.y1 = face->bbox.yMax * 1000 / face->units_per_EM;
*fontp = font;
return fz_okay;