}
Gfx::Gfx(XRef *xrefA, OutputDev *outA, Dict *resDict,
-@@ -3783,6 +3789,7 @@
- pushResources(resDict);
-
- // save current graphics state
-+ GfxState*mystate = state;
- saveState();
-
- // kill any pre-existing path
-@@ -3848,6 +3855,9 @@
-
- // restore graphics state
- restoreState();
-+ if(state!=mystate) {
-+ fprintf(stderr, "Invalid state nesting in PDF file- file broken?\n");
-+ }
-
- // pop resource stack
- popResources();
Index: GfxFont.h
===================================================================
RCS file: /home/kramm/cvs/swftools.cache.cvsroot/swftools.cache/pdf2swf/xpdf/GfxFont.h,v
#endif
#include <string.h>
#include <ctype.h>
-Index: config.h
---- config.h 2007-09-09 12:11:20.000000000 +0200
-+++ config.h 2007-09-09 12:11:40.000000000 +0200
-@@ -53,9 +53,9 @@
-
- // user config file name, relative to the user's home directory
- #if defined(VMS) || defined(WIN32)
--#define xpdfUserConfigFile "xpdfrc"
-+#define xpdfUserConfigFile "pdf2swf.conf"
- #else
--#define xpdfUserConfigFile ".xpdfrc"
-+#define xpdfUserConfigFile ".pdf2swf.conf"
- #endif
-
- // system config file name (set via the configure script)
-@@ -64,7 +64,7 @@
- #else
- // under Windows, we get the directory with the executable and then
- // append this file name
--#define xpdfSysConfigFile "xpdfrc"
-+#define xpdfSysConfigFile "pdf2swf.conf"
- #endif
-
- //------------------------------------------------------------------------
Index: gfile.h
===================================================================
RCS file: /home/kramm/cvs/swftools.cache.cvsroot/swftools.cache/pdf2swf/xpdf/gfile.h,v
}
void SplashFont::initCache() {
---- xpdf/SplashFTFont.cc.orig 2008-09-09 21:31:01.000000000 +0200
-+++ xpdf/SplashFTFont.cc 2008-10-05 17:37:32.000000000 +0200
+--- xpdf/SplashFTFont.cc.orig 2009-03-08 17:19:08.000000000 +0100
++++ xpdf/SplashFTFont.cc 2009-03-15 19:18:11.000000000 +0100
@@ -46,6 +46,7 @@
int x, y;
ff = (SplashFTFontFile *)fontFile;
ff->face->size = sizeObj;
FT_Set_Transform(ff->face, &textMatrix, NULL);
-@@ -268,6 +281,8 @@
+@@ -262,17 +275,24 @@
+ // skip the TrueType notdef glyph
+ return NULL;
+ }
+- if (FT_Load_Glyph(ff->face, gid, FT_LOAD_NO_BITMAP)) {
++ int error = 0;
++ if ((error=FT_Load_Glyph(ff->face, gid, FT_LOAD_NO_BITMAP|FT_LOAD_NO_HINTING))) {
++ fprintf(stderr, "Truetype wasn't able to load glyph %d, error %d\n", gid, error);
+ return NULL;
+ }
if (FT_Get_Glyph(slot, &glyph)) {
return NULL;
}
path.path = new SplashPath();
path.textScale = textScale;
path.needClose = gFalse;
+- FT_Outline_Decompose(&((FT_OutlineGlyph)glyph)->outline,
++ error = FT_Outline_Decompose(&((FT_OutlineGlyph)glyph)->outline,
+ &outlineFuncs, &path);
++ if(error) {
++ fprintf(stderr, "Truetype wasn't able to read glyph %d, error %d\n", gid, error);
++ }
+ if (path.needClose) {
+ path.path->close();
+ }
--- xpdf/SplashFTFont.h.orig 2008-09-09 21:31:01.000000000 +0200
+++ xpdf/SplashFTFont.h 2008-10-04 17:39:57.000000000 +0200
@@ -42,6 +42,9 @@
return gFalse;
}
*name = new GString(s);
+--- xpdf/Gfx.cc.orig 2009-03-08 17:10:40.000000000 +0100
++++ xpdf/Gfx.cc 2009-03-08 17:18:23.000000000 +0100
+@@ -3188,8 +3188,11 @@
+ u, (int)(sizeof(u) / sizeof(Unicode)), &uLen,
+ &dx, &dy, &originX, &originY);
+ dx = dx * state->getFontSize() + state->getCharSpace();
+- if (n == 1 && *p == ' ') {
+- dx += state->getWordSpace();
++ if (n == 1 && (*p == ' ' || *p == 0)) {
++ double w=state->getWordSpace();
++ if (w==0 && dx==0)
++ w=state->getFontSize()/3; // workaround for zero word space
++ dx += w;
+ }
+ dx *= state->getHorizScaling();
+ dy *= state->getFontSize();
+@@ -3824,6 +3833,7 @@
+ out->beginTransparencyGroup(state, bbox, blendingColorSpace,
+ isolated, knockout, softMask);
+ }
++ GfxState*old_state = state;
+
+ // set new base matrix
+ for (i = 0; i < 6; ++i) {
+@@ -3835,6 +3845,9 @@
+ display(str, gFalse);
+
+ if (softMask || transpGroup) {
++ // restore graphics state
++ while(state != old_state)
++ restoreState();
+ out->endTransparencyGroup(state);
+ }
+