#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
int w, h;
double *ctm;
SplashCoord mat[6];
---- TextOutputDev.h 2006-11-12 12:23:01.000000000 +0100
-+++ TextOutputDev.h 2006-11-12 12:25:31.000000000 +0100
-@@ -578,7 +578,7 @@
- //----- initialization and control
-
- // Start a page.
-- virtual void startPage(int pageNum, GfxState *state);
-+ virtual void startPage(int pageNum, GfxState *state, double x1,double y1,double x2,double y2);
-
- // End a page.
- virtual void endPage();
--- TextOutputDev.cc 2006-11-12 12:22:53.000000000 +0100
+++ TextOutputDev.cc 2006-11-12 12:25:03.000000000 +0100
@@ -3805,7 +3805,7 @@
}
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);
+ }
+
+--- TextOutputDev.h.orig 2009-10-07 17:00:29.000000000 -0700
++++ TextOutputDev.h 2009-10-07 17:01:50.000000000 -0700
+@@ -170,6 +170,7 @@
+ friend class TextFlow;
+ friend class TextWordList;
+ friend class TextPage;
++ friend class XMLOutputDev;
+ };
+
+ //------------------------------------------------------------------------
+@@ -578,7 +579,7 @@
+ //----- initialization and control
+
+ // Start a page.
+- virtual void startPage(int pageNum, GfxState *state);
++ virtual void startPage(int pageNum, GfxState *state, double x1,double y1,double x2,double y2);
+
+ // End a page.
+ virtual void endPage();