X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fpdf%2FInfoOutputDev.cc;h=8fb751af6e00e7ea2e49b0489dc2398f898f8c7b;hp=bd1a0b587993b3788dfbc56dcdd8c5e0f9257bed;hb=fc713269e9d26d1be92f70e1ff0d508c94a65dba;hpb=a1f5318b0789743bbc6d8e93d408379115c67534 diff --git a/lib/pdf/InfoOutputDev.cc b/lib/pdf/InfoOutputDev.cc index bd1a0b5..8fb751a 100644 --- a/lib/pdf/InfoOutputDev.cc +++ b/lib/pdf/InfoOutputDev.cc @@ -118,15 +118,18 @@ 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(first_space<0) - first_space = 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; + } } } - if(font->num_glyphs>32 && GLYPH_IS_SPACE(&font->glyphs[32])) { - return 32; - } - return first_space; + return -1; } static int addSpace(gfxfont_t*font) @@ -153,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); @@ -542,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,