From 67aada135687d9eb982fc243d994f9a6ad3ad673 Mon Sep 17 00:00:00 2001 From: Matthias Kramm Date: Wed, 31 Mar 2010 16:04:43 -0700 Subject: [PATCH] fixed space char detection bug --- lib/filters/remove_font_transforms.c | 5 ++++- lib/pdf/InfoOutputDev.cc | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/filters/remove_font_transforms.c b/lib/filters/remove_font_transforms.c index 4b671f7..cdebf67 100644 --- a/lib/filters/remove_font_transforms.c +++ b/lib/filters/remove_font_transforms.c @@ -145,7 +145,10 @@ static transformedfont_t* transformedfont_new(gfxfont_t*orig, mymatrix_t*m) f->used = rfx_calloc(sizeof(f->used[0])*orig->num_glyphs); int t; for(t=0;tnum_glyphs;t++) { - if(orig->glyphs[t].unicode==32) + if(orig->glyphs[t].unicode==32 && + (!orig->glyphs[t].line || + !orig->glyphs[t].line->next || + !orig->glyphs[t].line->next->next)) f->used[t]=1; //always preserve the space char in fonts } return f; diff --git a/lib/pdf/InfoOutputDev.cc b/lib/pdf/InfoOutputDev.cc index a977970..83dd43f 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; -- 1.7.10.4