#define FEDTJ_PRINT 0x01
#define FEDTJ_MODIFY 0x02
+#define FEDTJ_CALLBACK 0x04
-int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
+int swf_FontExtract_DefineTextCallback(int id,SWFFONT * f,TAG * t,int jobs,
+ void(*callback)(int*chars, int nr, int fontid))
{ U16 cid;
SRECT r;
MATRIX m;
}
else
{ int i;
+ int buf[256];
for (i=0;i<flags;i++)
{ int glyph;
int adv;
if (jobs&FEDTJ_MODIFY)
/*if (!f->glyph[code].advance)*/ f->glyph[glyph].advance = adv;
}
+ buf[i] = glyph;
}
if ((id==fid)&&(jobs&FEDTJ_PRINT)) printf("\n");
+ if (jobs&FEDTJ_CALLBACK)
+ callback(buf, flags, fid);
}
flags = swf_GetU8(t);
}
return id;
}
+int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
+{
+ return swf_FontExtract_DefineTextCallback(id,f,t,jobs,0);
+}
+
int swf_FontExtract(SWF * swf,int id,SWFFONT * * font)
{ TAG * t;
SWFFONT * f;
return res;
}
-void swf_WriteFont(SWFFONT*font, char* filename, int useDefineFont2)
+SWFFONT* swf_ReadFont(char* filename)
+{
+ int f;
+ SWF swf;
+ if(!filename)
+ return 0;
+ f = open(filename,O_RDONLY);
+
+ if (f<0 || swf_ReadSWF(f,&swf)<0)
+ { fprintf(stderr,"%s is not a valid SWF font file or contains errors.\n",filename);
+ close(f);
+ return 0;
+ }
+ else
+ { SWFFONT*font;
+ close(f);
+ if(swf_FontExtract(&swf, WRITEFONTID, &font) < 0)
+ return 0;
+ swf_FreeTags(&swf);
+ return font;
+ }
+}
+
+void swf_WriteFont(SWFFONT*font, char* filename)
{ SWF swf;
TAG * t;
SRECT r;
RGBA rgb;
int f;
+ int useDefineFont2 = 1;
if(useDefineFont2) {
- fprintf(stderr, "DefineFont2 is not yet supported!\n");
+ //fprintf(stderr, "DefineFont2 is not yet supported!\n");
useDefineFont2 = 0;
}
{ int textscale = 400;
int s;
int xmax = 0;
- int ymax = textscale * 20;
+ int ymax = textscale * 2 * 20;
U8 gbits,abits;
char text[257];
int x,y;
}
}
if(c) {
- swf_TextSetInfoRecord(t,font,textscale,&rgb,lastx+1,textscale*y);
+ swf_TextSetInfoRecord(t,font,textscale,&rgb,lastx+1,textscale*y*2);
for(x=0;x<16;x++)
{
int g = font->ascii2glyph[y*16+x];
swf_FreeTags(&swf);
}
-SWFFONT* swf_ReadFont(char* filename)
-{
- int f;
- SWF swf;
- if(!filename)
- return 0;
- f = open(filename,O_RDONLY);
-
- if (f<0 || swf_ReadSWF(f,&swf)<0)
- { fprintf(stderr,"%s is not a valid SWF font file or contains errors.\n",filename);
- close(f);
- return 0;
- }
- else
- { SWFFONT*font;
- close(f);
- if(swf_FontExtract(&swf, WRITEFONTID, &font) < 0)
- return 0;
- swf_FreeTags(&swf);
- return font;
- }
-}