// Does this device use drawChar() or drawString()?
virtual GBool useDrawChar();
- virtual GBool interpretType3Chars() {return gFalse;}
+ virtual GBool interpretType3Chars() {return gTrue;}
//----- initialization and control
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,
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;
};
else if(nr == 1)
logf("<warning> The following font caused problems (substituting):");
else if(nr == 2)
- logf("<warning> This document contains Type 3 Fonts: (some text may be incorrectly displayed)");
+ logf("<warning> The following Type 3 Font will be rendered as bitmap:");
dumpFontInfo("<warning>", font);
}
ttfinfo = 0;
linkinfo = 0;
pbminfo = 0;
+ type3active = 0;
clippos = 0;
clipping[clippos] = 0;
outputstarted = 0;
logf("<error> CID Font");
return;
}
+ if(font->getType() == fontType3) {
+ /* type 3 chars are passed primarily as graphics */
+ return;
+ }
font8 = (Gfx8BitFont*)font;
char**enc=font8->getEncoding();
logf("<debug> endstring\n");
}
+
+GBool SWFOutputDev::beginType3Char(GfxState *state,
+ CharCode code, Unicode *u, int uLen)
+{
+ logf("<debug> 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("<debug> endType3Char");
+}
+
void SWFOutputDev::startPage(int pageNum, GfxState *state)
{
double x1,y1,x2,y2;
state->transform(1, 1, &x4, &y4);
if(!pbminfo && !(str->getKind()==strDCT)) {
- logf("<notice> file contains pbm pictures %s",mask?"(masked)":"");
+ if(!type3active) {
+ logf("<notice> file contains pbm pictures %s",mask?"(masked)":"");
+ pbminfo = 1;
+ }
if(mask)
logf("<verbose> drawing %d by %d masked picture\n", width, height);
- pbminfo = 1;
}
if(!jpeginfo && (str->getKind()==strDCT)) {
logf("<notice> file contains jpeg pictures");