git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed some bugs in extractdefinefont2
[swftools.git]
/
lib
/
modules
/
swftext.c
diff --git
a/lib/modules/swftext.c
b/lib/modules/swftext.c
index
62618f2
..
270447d
100644
(file)
--- a/
lib/modules/swftext.c
+++ b/
lib/modules/swftext.c
@@
-46,7
+46,8
@@
int swf_FontEnumerate(SWF * swf,void (*FontCallback) (U16,U8*))
n = 0;
while (t)
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;
{ n++;
if (FontCallback)
{ U16 id;
@@
-54,8
+55,10
@@
int swf_FontEnumerate(SWF * swf,void (*FontCallback) (U16,U8*))
U8 s[257];
swf_SaveTagPos(t);
swf_SetTagPos(t,0);
U8 s[257];
swf_SaveTagPos(t);
swf_SetTagPos(t,0);
-
+
id = swf_GetU16(t);
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;
l = swf_GetU8(t);
swf_GetBlock(t,s,l);
s[l] = 0;
@@
-155,9
+158,15
@@
int swf_FontExtract_DefineFont2(int id,SWFFONT * font,TAG * tag)
{
int t, glyphcount;
int maxcode;
{
int t, glyphcount;
int maxcode;
+ int fid;
U8 flags1,flags2,namelen;
U8 flags1,flags2,namelen;
+ swf_SaveTagPos(tag);
+ swf_SetTagPos(tag,0);
font->version=2;
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);
flags1 = swf_GetU8(tag);
flags2 = swf_GetU8(tag); //reserved flags
namelen = swf_GetU8(tag);
@@
-235,13
+244,14
@@
int swf_FontExtract_DefineFont2(int id,SWFFONT * font,TAG * 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);
} 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);
}
}
}
}
font->layout->kerning[t].adjustment = swf_GetS16(tag);
}
}
}
+ swf_RestoreTagPos(t);
return font->id;
}
return font->id;
}
@@
-293,7
+303,7
@@
int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
{ int code = f->glyph2ascii[glyph];
if (jobs&FEDTJ_PRINT) printf("%c",code);
if (jobs&FEDTJ_MODIFY)
{ 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");
}
}
if ((id==fid)&&(jobs&FEDTJ_PRINT)) printf("\n");