X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswffont.c;h=f2727a462571a9653efcb8aaba2ab59014ba4537;hb=e38d3a125e8bb4459e26cc4b42ee63f010c56ffb;hp=1663b8e9ffb6d36c33c41fbe088d8c893f4697b4;hpb=21ddd4444db6cddf2a02975c95f7dbb1eff3f6c6;p=swftools.git diff --git a/lib/modules/swffont.c b/lib/modules/swffont.c index 1663b8e..f2727a4 100644 --- a/lib/modules/swffont.c +++ b/lib/modules/swffont.c @@ -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; @@ -407,8 +408,29 @@ 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)