n = 0;
while (t)
- { if (swf_GetTagID(t)==ST_DEFINEFONTINFO)
+ { if (swf_GetTagID(t)==ST_DEFINEFONTINFO ||
+ swf_GetTagID(t)==ST_DEFINEFONT2)
{ n++;
if (FontCallback)
{ U16 id;
U8 s[257];
swf_SaveTagPos(t);
swf_SetTagPos(t,0);
-
+
id = swf_GetU16(t);
+ if(swf_GetTagID(t) == ST_DEFINEFONT2)
+ swf_GetU16(t);
l = swf_GetU8(t);
swf_GetBlock(t,s,l);
s[l] = 0;
{
int t, glyphcount;
int maxcode;
+ int fid;
U8 flags1,flags2,namelen;
+ swf_SaveTagPos(tag);
+ swf_SetTagPos(tag,0);
font->version=2;
- font->id = swf_GetU16(tag);
+ fid = swf_GetU16(tag);
+ if(id && id!=fid)
+ return;
+ font->id = fid;
flags1 = swf_GetU8(tag);
flags2 = swf_GetU8(tag); //reserved flags
namelen = swf_GetU8(tag);
font->layout->kerning[t].char1 = swf_GetU16(tag);
font->layout->kerning[t].char2 = swf_GetU16(tag);
} else {
- font->layout->kerning[t].char1 = swf_GetU16(tag);
- font->layout->kerning[t].char2 = swf_GetU16(tag);
+ font->layout->kerning[t].char1 = swf_GetU8(tag);
+ font->layout->kerning[t].char2 = swf_GetU8(tag);
}
font->layout->kerning[t].adjustment = swf_GetS16(tag);
}
}
}
+ swf_RestoreTagPos(t);
return font->id;
}
{ int code = f->glyph2ascii[glyph];
if (jobs&FEDTJ_PRINT) printf("%c",code);
if (jobs&FEDTJ_MODIFY)
- /*if (!f->glyph[code].advance)*/ f->glyph[code].advance = adv;
+ /*if (!f->glyph[code].advance)*/ f->glyph[glyph].advance = adv;
}
}
if ((id==fid)&&(jobs&FEDTJ_PRINT)) printf("\n");