X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswffont.c;h=21a19e6a212ee5bf780f770e3983a1552c0af97e;hb=fa9f93ed6eac01d72ba26e2e72d2ceee78ffd3f9;hp=1663b8e9ffb6d36c33c41fbe088d8c893f4697b4;hpb=21ddd4444db6cddf2a02975c95f7dbb1eff3f6c6;p=swftools.git diff --git a/lib/modules/swffont.c b/lib/modules/swffont.c index 1663b8e..21a19e6 100644 --- a/lib/modules/swffont.c +++ b/lib/modules/swffont.c @@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifdef USE_FREETYPE +#ifdef HAVE_FREETYPE #include #include @@ -89,7 +89,7 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) { FT_Face face; FT_Error error; - const char* name; + const char* name = 0; FT_ULong charcode; FT_UInt gindex; SWFFONT* font; @@ -135,8 +135,9 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) font->layout->leading = -face->bbox.xMin; font->layout->kerningcount = 0; + name = FT_Get_Postscript_Name(face); if(name && *name) - font->name = (U8*)strdup(FT_Get_Postscript_Name(face)); + font->name = (U8*)strdup(name); /* // Map Glyphs to Unicode, version 1 (quick and dirty): int t; @@ -243,7 +244,7 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) return font; } -#else //USE_FREETYPE +#else //HAVE_FREETYPE SWFFONT* swf_LoadTrueTypeFont(char*filename) { @@ -407,9 +408,33 @@ 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 -1; + } + 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 defined(USE_FREETYPE) + int is_swf = isSWF(filename); + if(is_swf<0) + return 0; + if(is_swf) { + return swf_ReadFont(filename); + } +#if defined(HAVE_FREETYPE) return swf_LoadTrueTypeFont(filename); #elif defined(HAVE_T1LIB) return swf_LoadT1Font(filename);