+#ifdef HAVE_POPPLER
+#include <splash/SplashTypes.h>
+#include <splash/SplashPath.h>
+#include <splash/SplashFont.h>
+#include <splash/SplashFontFile.h>
+#else
+#include "SplashTypes.h"
id2font = new GHash(1);
SplashColor white = {255,255,255};
splash = new SplashOutputDev(splashModeRGB8,320,0,white,0,0);
id2font = new GHash(1);
SplashColor white = {255,255,255};
splash = new SplashOutputDev(splashModeRGB8,320,0,white,0,0);
- info = new FontInfo;
- info->font = font;
- info->max_size = 0;
+ currentfont = (FontInfo*)id2font->lookup(id);
+ if(!currentfont) {
+ currentfont = new FontInfo;
+ currentfont->font = font;
+ currentfont->max_size = 0;
+ GString* idStr = new GString(id);
+ id2font->add(idStr, (void*)currentfont);
+ num_fonts++;
+ }
state->setCTM(1.0,0,0,1.0,0,0);
splash->updateCTM(state, 0,0,0,0,0,0);
state->setCTM(1.0,0,0,1.0,0,0);
splash->updateCTM(state, 0,0,0,0,0,0);
- state->setTextMat(1.0,0,0,-1.0,0,0);
+ state->setTextMat(1.0,0,0,1.0,0,0);
state->setFont(font, 1024.0);
splash->doUpdateFont(state);
state->setFont(font, 1024.0);
splash->doUpdateFont(state);
- info->splash_font = splash->getCurrentFont();
-
- if(!info->splash_font) {
- delete info;
- return;
+ currentfont->splash_font = splash->getCurrentFont();
+ if(currentfont->splash_font) {
+ currentfont->ascender = currentfont->splash_font->ascender;
+ currentfont->descender = currentfont->splash_font->descender;
+ } else {
+ currentfont->ascender = currentfont->descender = 0;
double lenx = sqrt(m11*m11 + m12*m12);
double leny = sqrt(m21*m21 + m22*m22);
double len = lenx>leny?lenx:leny;
double lenx = sqrt(m11*m11 + m12*m12);
double leny = sqrt(m21*m21 + m22*m22);
double len = lenx>leny?lenx:leny;
}
GBool InfoOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen)
}
GBool InfoOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen)
}
void InfoOutputDev::type3D1(GfxState *state, double wx, double wy, double llx, double lly, double urx, double ury)
{
currentglyph->x1=llx;
}
void InfoOutputDev::type3D1(GfxState *state, double wx, double wy, double llx, double lly, double urx, double ury)
{
currentglyph->x1=llx;