added optional storing of full font sets in the .swf. (option -f)
authorkramm <kramm>
Sun, 4 Nov 2001 22:21:13 +0000 (22:21 +0000)
committerkramm <kramm>
Sun, 4 Nov 2001 22:21:13 +0000 (22:21 +0000)
pdf2swf/SWFOutputDev.cc
pdf2swf/SWFOutputDev.h
pdf2swf/pdf2swf.cc
pdf2swf/swfoutput.cc
pdf2swf/swfoutput.h

index 4af15aa..c6ad24e 100644 (file)
@@ -1317,6 +1317,11 @@ void pdfswf_linksopennewwindow()
     opennewwindow = 1;
 }
 
+void pdfswf_storeallcharacters()
+{
+    storeallcharacters = 1;
+}
+
 void pdfswf_jpegquality(int val)
 {
     if(val<0) val=0;
index 5264ca2..ea43b3e 100644 (file)
@@ -16,6 +16,7 @@ void pdfswf_ignoredraworder();
 void pdfswf_linksopennewwindow();
 void pdfswf_jpegquality(int);
 void pdfswf_performconversion();
+void pdfswf_storeallcharacters();
 
 int pdfswf_numpages();
 void pdfswf_convertpage(int page) ;
index 41ed77d..20f9348 100644 (file)
@@ -71,6 +71,11 @@ int args_callback_option(char*name,char*val) {
        pdfswf_linksopennewwindow();
        return 0;
     }
+    else if (!strcmp(name, "f"))
+    {
+       pdfswf_storeallcharacters();
+       return 0;
+    }
     else if (name[0]=='j')
     {
        if(name[1]) {
@@ -102,6 +107,7 @@ struct options_t options[] =
  {"j","jpegquality"},
  {"p","pages"},
  {"w","samewindow"},
+ {"f","fonts"},
  {0,0}
 };
 
@@ -135,6 +141,7 @@ void args_callback_usage(char*name)
     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");
 }
 
index 07969d9..18e86d9 100644 (file)
@@ -34,6 +34,7 @@ int opennewwindow=0;
 int ignoredraworder=0;
 int drawonlyshapes=0;
 int jpegquality=85;
+int storeallcharacters=0;
 static int flag_protected = 0;
 
 typedef unsigned char u8;
@@ -518,6 +519,7 @@ SWFFont::SWFFont(char*name, int id, char*filename)
     
     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);
@@ -564,7 +566,19 @@ SWFFont::SWFFont(char*name, int id, char*filename)
 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++;
@@ -580,6 +594,7 @@ SWFFont::~SWFFont()
         m.m21 = m.m12 = 0;
         m.m13 = CHARMIDX;
         m.m23 = CHARMIDY;
+
         for(t=0;t<swfcharpos;t++) 
         {
             ptr[t] = swf_GetDataSize(ftag);
@@ -605,16 +620,20 @@ SWFFont::~SWFFont()
         }
         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);
index 0efbbc6..ba54912 100644 (file)
@@ -19,6 +19,7 @@ extern int opennewwindow; //default:0
 extern int ignoredraworder; //default:0
 extern int drawonlyshapes; //default:0
 extern int jpegquality; //default:100;
+extern int storeallcharacters; // default:0
 
 typedef long int twip;