X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpdf%2Fxpdf-changes.patch;h=234952dbf4a2b6a0d30a92e5bfaea5156582d323;hb=ad60d7e0a361c58fc9872753cfb872c3cc54b82f;hp=5ea3a8656264023281ea9077c83fe15fcd78a3c5;hpb=3fea2408c808249a16b4b9113e4721fcdedaf1ab;p=swftools.git diff --git a/lib/pdf/xpdf-changes.patch b/lib/pdf/xpdf-changes.patch index 5ea3a86..234952d 100644 --- a/lib/pdf/xpdf-changes.patch +++ b/lib/pdf/xpdf-changes.patch @@ -39,24 +39,6 @@ diff -u -r1.9 -r1.10 } 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 @@ -492,7 +474,7 @@ Index: config.h @@ -53,9 +53,9 @@ // user config file name, relative to the user's home directory - #if defined(VMS) || defined(WIN32) + #if defined(VMS) || (defined(WIN32) && !defined(__CYGWIN32__)) -#define xpdfUserConfigFile "xpdfrc" +#define xpdfUserConfigFile "pdf2swf.conf" #else @@ -792,8 +774,8 @@ diff -u -r1.5 -r1.6 } 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; @@ -835,7 +817,16 @@ diff -u -r1.5 -r1.6 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; } @@ -844,6 +835,15 @@ diff -u -r1.5 -r1.6 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 @@ @@ -862,7 +862,7 @@ diff -u -r1.5 -r1.6 int SplashScreen::test(int x, int y, Guchar value) { int xx, yy; -+ return 0; ++ return 1; + if (value < minVal) { return 0; @@ -976,3 +976,37 @@ diff -u -r1.5 -r1.6 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); + } +