pdfswf_linksopennewwindow();
return 0;
}
+ else if (!strcmp(name, "f"))
+ {
+ pdfswf_storeallcharacters();
+ return 0;
+ }
else if (name[0]=='j')
{
if(name[1]) {
{"j","jpegquality"},
{"p","pages"},
{"w","samewindow"},
+ {"f","fonts"},
{0,0}
};
printf("-j --jpegquality=quality Set quality of embedded jpeg pictures (default:85)\n");
printf("-v --verbose Be verbose. Use more than one -v for greater effect\n");
printf("-w --samewindow Don't open a new Browser Window for Links in the SWF\n");
+ printf("-f --fonts Store full fonts in SWF. (Don't reduce to used characters)\n");
printf("-V --version Print program version\n");
}
int ignoredraworder=0;
int drawonlyshapes=0;
int jpegquality=85;
+int storeallcharacters=0;
static int flag_protected = 0;
typedef unsigned char u8;
outline = (T1_OUTLINE**)malloc(t*sizeof(T1_OUTLINE*));
charname = (char**)malloc(t*sizeof(char*));
+ memset(charname, t*sizeof(char*), 0);
used = (char*)malloc(t*sizeof(char));
char2swfcharid = (U16*)malloc(t*2);
swfcharid2char = (U16*)malloc(t*2);
SWFFont::~SWFFont()
{
int t,usednum=0;
- int*ptr = (int*)malloc(swfcharpos*sizeof(int));
+ int*ptr;
+
+ if(storeallcharacters)
+ {
+ int t;
+ for(t=0;t<this->charnum;t++)
+ {
+ if(this->charname[t])
+ getSWFCharID(this->charname[t]);
+ }
+ }
+
+ ptr = (int*)malloc(swfcharpos*sizeof(int));
for(t=0;t<charnum;t++)
if(used[t]) usednum++;
m.m21 = m.m12 = 0;
m.m13 = CHARMIDX;
m.m23 = CHARMIDY;
+
for(t=0;t<swfcharpos;t++)
{
ptr[t] = swf_GetDataSize(ftag);
}
ftag = swf_InsertTag(ftag,ST_DEFINEFONTINFO);
swf_SetU16(ftag, this->swfid);
- swf_SetU8(ftag, strlen(this->fontid));
- swf_SetBlock(ftag, (U8*)this->fontid, strlen(this->fontid));
- swf_SetU8(ftag, 0);
+ if(this->fontid) {
+ swf_SetU8(ftag, strlen(this->fontid));
+ swf_SetBlock(ftag, (U8*)this->fontid, strlen(this->fontid));
+ } else {
+ swf_SetU8(ftag, 0);
+ }
+ swf_SetU8(ftag, 0); //flags
for(t=0;t<swfcharpos;t++)
{
int s;
char * name = this->charname[this->swfcharid2char[t]];
for(s=0;s<256;s++) {
if(standardEncodingNames[s] &&
- !strcasecmp(name,standardEncodingNames[s]))
+ !strcmp(name,standardEncodingNames[s]))
break;
}
swf_SetU8(ftag, (U8)s);