X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=lib%2Fmodules%2Fswffont.c;h=ba0b66e6f09d8bb61744fd6e056158ec267da7d1;hb=e062e242b05435bf68a739977f57434fd98748ec;hp=302500ac4c44492e94f22c5bbbfacb606b92865c;hpb=1e0cceb7fae5fcf1979f7c86d9088d5681a65d67;p=swftools.git diff --git a/lib/modules/swffont.c b/lib/modules/swffont.c index 302500a..ba0b66e 100644 --- a/lib/modules/swffont.c +++ b/lib/modules/swffont.c @@ -257,6 +257,8 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) #include +static int t1lib_initialized = 0; + SWFFONT* swf_LoadT1Font(char*filename) { SWFFONT * font; @@ -270,10 +272,13 @@ SWFFONT* swf_LoadT1Font(char*filename) char**charname; int c; - T1_SetBitmapPad(16); - if ((T1_InitLib(NO_LOGFILE)==NULL)){ - fprintf(stderr, "Initialization of t1lib failed\n"); - return 0; + if(!t1lib_initialized) { + T1_SetBitmapPad(16); + if ((T1_InitLib(NO_LOGFILE)==NULL)){ + fprintf(stderr, "Initialization of t1lib failed\n"); + return 0; + } + t1lib_initialized = 1; } nr = T1_AddFont(filename); T1_LoadFont(nr); @@ -402,3 +407,36 @@ SWFFONT* swf_LoadT1Font(char*filename) #endif +static int isSWF(const char*filename) +{ + FILE*fi = fopen(filename, "rb"); + char a[8]; + if(!fi) { + perror(filename); + return 0; + } + memset(a, 0, sizeof(a)); + fread(a, 4, 1, fi); + fclose(fi); + + if(!strncmp(a, "FWS", 3) || !strncmp(a, "CWS", 3)) { + return 1; + } + return 0; +} + +SWFFONT* swf_LoadFont(char*filename) +{ + if(isSWF(filename)) { + return swf_ReadFont(filename); + } +#if defined(USE_FREETYPE) + return swf_LoadTrueTypeFont(filename); +#elif defined(HAVE_T1LIB) + return swf_LoadT1Font(filename); +#else + fprintf(stderr, "Error: Neither T1lib nor FreeType support compiled in. Could not load %s\n", infile); + return 0; +#endif +} +