summaryrefslogtreecommitdiff
path: root/pdf
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2011-04-15 11:29:02 +0200
committerTor Andersson <tor.andersson@artifex.com>2011-04-15 11:33:53 +0200
commit68ddf2e5505b3b6295f2373fdac8a5b296bb441c (patch)
treed8890ffad8dd2cc82ac898e377af82fb052eff15 /pdf
parent33a189cce63587e52d76bffadcd547a55818cf92 (diff)
downloadmupdf-68ddf2e5505b3b6295f2373fdac8a5b296bb441c.tar.xz
Use artificial italics and emboldening for substitute font.
Diffstat (limited to 'pdf')
-rw-r--r--pdf/pdf_font.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/pdf/pdf_font.c b/pdf/pdf_font.c
index d0a67b31..36c23d0e 100644
--- a/pdf/pdf_font.c
+++ b/pdf/pdf_font.c
@@ -99,6 +99,16 @@ static int ft_kind(FT_Face face)
return UNKNOWN;
}
+static int ft_is_bold(FT_Face face)
+{
+ return face->style_flags & FT_STYLE_FLAG_BOLD;
+}
+
+static int ft_is_italic(FT_Face face)
+{
+ return face->style_flags & FT_STYLE_FLAG_ITALIC;
+}
+
static int ft_char_index(FT_Face face, int cid)
{
int gid = FT_Get_Char_Index(face, cid);
@@ -197,8 +207,8 @@ pdf_load_substitute_font(pdf_font_desc *fontdesc, int mono, int serif, int bold,
return fz_rethrow(error, "cannot load freetype font from memory");
fontdesc->font->ft_substitute = 1;
- fontdesc->font->ft_bold = bold;
- fontdesc->font->ft_italic = italic;
+ fontdesc->font->ft_bold = bold && !ft_is_bold(fontdesc->font->ft_face);
+ fontdesc->font->ft_italic = italic && !ft_is_italic(fontdesc->font->ft_face);
return fz_okay;
}
@@ -261,7 +271,7 @@ pdf_load_system_font(pdf_font_desc *fontdesc, char *fontname, char *collection)
error = pdf_load_substitute_font(fontdesc, mono, serif, bold, italic);
if (error)
- return fz_throw("cannot load substitute font");
+ return fz_rethrow(error, "cannot load substitute font");
return fz_okay;
}