From: kramm Date: Tue, 28 May 2002 11:03:19 +0000 (+0000) Subject: use the xpdf type 3 font renderer. X-Git-Tag: release-0-4-0~76 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=af362434b81e89338d136e152aa4207edbc9f376 use the xpdf type 3 font renderer. --- diff --git a/pdf2swf/SWFOutputDev.cc b/pdf2swf/SWFOutputDev.cc index 0357f50..885733a 100644 --- a/pdf2swf/SWFOutputDev.cc +++ b/pdf2swf/SWFOutputDev.cc @@ -132,7 +132,7 @@ public: // Does this device use drawChar() or drawString()? virtual GBool useDrawChar(); - virtual GBool interpretType3Chars() {return gFalse;} + virtual GBool interpretType3Chars() {return gTrue;} //----- initialization and control @@ -187,6 +187,10 @@ public: virtual void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, int *maskColors, GBool inlineImg); + + virtual GBool beginType3Char(GfxState *state, + CharCode code, Unicode *u, int uLen); + virtual void endType3Char(GfxState *state); private: void drawGeneralImage(GfxState *state, Object *ref, Stream *str, @@ -206,6 +210,8 @@ public: int linkinfo; // did we write "File contains links" yet? int ttfinfo; // did we write "File contains TrueType Fonts" yet? + int type3active; // are we between beginType3()/endType3()? + GfxState *laststate; }; @@ -339,7 +345,7 @@ void showFontError(GfxFont*font, int nr) else if(nr == 1) logf(" The following font caused problems (substituting):"); else if(nr == 2) - logf(" This document contains Type 3 Fonts: (some text may be incorrectly displayed)"); + logf(" The following Type 3 Font will be rendered as bitmap:"); dumpFontInfo("", font); } @@ -413,6 +419,7 @@ SWFOutputDev::SWFOutputDev() ttfinfo = 0; linkinfo = 0; pbminfo = 0; + type3active = 0; clippos = 0; clipping[clippos] = 0; outputstarted = 0; @@ -582,6 +589,10 @@ void SWFOutputDev::drawChar(GfxState *state, double x, double y, logf(" CID Font"); return; } + if(font->getType() == fontType3) { + /* type 3 chars are passed primarily as graphics */ + return; + } font8 = (Gfx8BitFont*)font; char**enc=font8->getEncoding(); @@ -603,6 +614,23 @@ void SWFOutputDev::endString(GfxState *state) logf(" endstring\n"); } + +GBool SWFOutputDev::beginType3Char(GfxState *state, + CharCode code, Unicode *u, int uLen) +{ + logf(" beginType3Char %d, %08x, %d", code, *u, uLen); + type3active = 1; + /* the character itself is going to be passed using + drawImageMask() */ + return gFalse; +} + +void SWFOutputDev::endType3Char(GfxState *state) +{ + type3active = 0; + logf(" endType3Char"); +} + void SWFOutputDev::startPage(int pageNum, GfxState *state) { double x1,y1,x2,y2; @@ -1233,10 +1261,12 @@ void SWFOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str, state->transform(1, 1, &x4, &y4); if(!pbminfo && !(str->getKind()==strDCT)) { - logf(" file contains pbm pictures %s",mask?"(masked)":""); + if(!type3active) { + logf(" file contains pbm pictures %s",mask?"(masked)":""); + pbminfo = 1; + } if(mask) logf(" drawing %d by %d masked picture\n", width, height); - pbminfo = 1; } if(!jpeginfo && (str->getKind()==strDCT)) { logf(" file contains jpeg pictures"); diff --git a/pdf2swf/pdf2swf.1 b/pdf2swf/pdf2swf.1 index 4c07ddb..106147c 100644 --- a/pdf2swf/pdf2swf.1 +++ b/pdf2swf/pdf2swf.1 @@ -61,7 +61,7 @@ Link preloader \fIfilename\fR to the swf file, where \fIfilename\fR is an arbitrary swf animation. .SH BUGS .PP -type 3 fonts don't work yet +dashed lines don't work. .SH AUTHOR