X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fpdf%2FInfoOutputDev.cc;h=8fb751af6e00e7ea2e49b0489dc2398f898f8c7b;hp=5990d4ffbf05d6950f62082be4a2e6efe0891856;hb=fc713269e9d26d1be92f70e1ff0d508c94a65dba;hpb=ad99af72e37b3c3ab2a84d544a12c0ac11fa72f0 diff --git a/lib/pdf/InfoOutputDev.cc b/lib/pdf/InfoOutputDev.cc index 5990d4f..8fb751a 100644 --- a/lib/pdf/InfoOutputDev.cc +++ b/lib/pdf/InfoOutputDev.cc @@ -118,7 +118,15 @@ static int findSpace(gfxfont_t*font) for(t=0;tnum_glyphs;t++) { gfxglyph_t*g = &font->glyphs[t]; if(GLYPH_IS_SPACE(g)) { - if(g->unicode == 32) return t; + if(g->unicode == 32) { + /* now that we have found a space char, make sure it's unique */ + int s; + for(s=0;snum_glyphs;s++) { + if(s!=t && font->glyphs[s].unicode==32) + font->glyphs[s].unicode=0; + } + return t; + } } } return -1; @@ -148,8 +156,7 @@ static int addSpace(gfxfont_t*font) static gfxfont_t* createGfxFont(FontInfo*src) { - gfxfont_t*font = (gfxfont_t*)malloc(sizeof(gfxfont_t)); - memset(font, 0, sizeof(gfxfont_t)); + gfxfont_t*font = (gfxfont_t*)rfx_calloc(sizeof(gfxfont_t)); font->glyphs = (gfxglyph_t*)malloc(sizeof(gfxglyph_t)*src->num_glyphs); memset(font->glyphs, 0, sizeof(gfxglyph_t)*src->num_glyphs); @@ -537,6 +544,16 @@ void InfoOutputDev::endType3Char(GfxState *state) currentglyph->path->lineTo(x1,y2); currentglyph->path->close(); } + +void InfoOutputDev::saveState(GfxState *state) +{ + updateAll(state); +} + +void InfoOutputDev::restoreState(GfxState *state) +{ + updateAll(state); +} void InfoOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert,