X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgfxfont.c;h=efe29c3f81011a49a982e028a5d4e1373ebade0a;hp=64461a419f9e8e282af5a782a5af3cbca1994404;hb=e47d392189dc87d32caf72cc6479117d512405a4;hpb=590f0973ebccca58681b170e76545630de505e4d diff --git a/lib/gfxfont.c b/lib/gfxfont.c index 64461a4..efe29c3 100644 --- a/lib/gfxfont.c +++ b/lib/gfxfont.c @@ -24,6 +24,7 @@ #include "../config.h" #include "gfxdevice.h" #include "gfxtools.h" +#include "gfxfont.h" static int loadfont_scale = 64; static int full_unicode = 1; @@ -149,7 +150,6 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali int t; int*glyph2glyph = 0; int*glyph2unicode = 0; - FT_Size size; int max_unicode = 0; int charmap = -1; int isunicode = 1; @@ -173,11 +173,11 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali return 0; } if(face->num_glyphs <= 0) { - fprintf(stderr, "File %s contains %d glyphs\n", face->num_glyphs); + fprintf(stderr, "File %s contains %d glyphs\n", filename, (int)face->num_glyphs); return 0; } - font = rfx_calloc(sizeof(gfxfont_t)); + font = (gfxfont_t*)rfx_calloc(sizeof(gfxfont_t)); //font->style = ((face->style_flags&FT_STYLE_FLAG_ITALIC)?FONT_STYLE_ITALIC:0) |((face->style_flags&FT_STYLE_FLAG_BOLD)?FONT_STYLE_BOLD:0); //font->ascent = abs(face->ascender)*FT_SCALE*loadfont_scale*20/FT_SUBPIXELS/2; //face->bbox.xMin; //font->descent = abs(face->descender)*FT_SCALE*loadfont_scale*20/FT_SUBPIXELS/2; //face->bbox.xMax; @@ -186,9 +186,9 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali font->max_unicode = 0; font->id = strdup(id); - font->glyphs = rfx_calloc(face->num_glyphs*sizeof(gfxglyph_t)); - glyph2unicode = rfx_calloc(face->num_glyphs*sizeof(int)); - glyph2glyph = rfx_calloc(face->num_glyphs*sizeof(int)); + font->glyphs = (gfxglyph_t*)rfx_calloc(face->num_glyphs*sizeof(gfxglyph_t)); + glyph2unicode = (int*)rfx_calloc(face->num_glyphs*sizeof(int)); + glyph2glyph = (int*)rfx_calloc(face->num_glyphs*sizeof(int)); if(FT_HAS_GLYPH_NAMES(face)) { //font->glyphnames = rfx_calloc(face->num_glyphs*sizeof(char*)); @@ -263,7 +263,7 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali if(full_unicode) font->max_unicode = 65535; - font->unicode2glyph = rfx_calloc(font->max_unicode*sizeof(int)); + font->unicode2glyph = (int*)rfx_calloc(font->max_unicode*sizeof(int)); for(t=0;tmax_unicode;t++) { int g = FT_Get_Char_Index(face, t); @@ -298,12 +298,9 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali for(t=0; t < face->num_glyphs; t++) { FT_Glyph glyph; - FT_BBox bbox; - FT_Matrix matrix; char name[128]; gfxdrawer_t draw; gfxdrawinfo_t info; - int ret; char hasname = 0; int omit = 0; name[0]=0; @@ -336,9 +333,9 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali error = FT_Load_Glyph(face, t, FT_LOAD_NO_BITMAP); if(error) { if(hasname) - fprintf(stderr, "Warning: glyph %d/%d (unicode %d, name %s) has return code %d\n", t, face->num_glyphs, glyph2unicode[t], name, error); + fprintf(stderr, "Warning: glyph %d/%d (unicode %d, name %s) has return code %d\n", t, (int)face->num_glyphs, glyph2unicode[t], name, error); else - fprintf(stderr, "Warning: glyph %d/%d (unicode %d) has return code %d\n", t, face->num_glyphs, glyph2unicode[t], error); + fprintf(stderr, "Warning: glyph %d/%d (unicode %d) has return code %d\n", t, (int)face->num_glyphs, glyph2unicode[t], error); omit = 2; #if 0 @@ -361,7 +358,7 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali if(!omit) { error = FT_Get_Glyph(face->glyph, &glyph); if(error) { - fprintf(stderr, "Couldn't get glyph %d/%d, error:%d\n", t, face->num_glyphs, error); + fprintf(stderr, "Couldn't get glyph %d/%d, error:%d\n", t, (int)face->num_glyphs, error); omit = 3; } } @@ -442,7 +439,7 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali so that the encoding equals the char position, and remove the unicode table */ int t; - gfxglyph_t*newglyphs = rfx_calloc(font->max_unicode*sizeof(gfxglyph_t)); + gfxglyph_t*newglyphs = (gfxglyph_t*)rfx_calloc(font->max_unicode*sizeof(gfxglyph_t)); for(t=0;tunicode2glyph[t]; @@ -491,7 +488,7 @@ gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quali } #else -gfxfont_t* gfxfont_load(char*filename) +gfxfont_t* gfxfont_load(char*id, char*filename, unsigned int flags, double quality) { fprintf(stderr, "No freetype support compiled in! Not able to load %s\n", filename); } @@ -511,6 +508,13 @@ void gfxfont_free(gfxfont_t*font) if(font->unicode2glyph) { free(font->unicode2glyph);font->unicode2glyph = 0; } + if(font->id) { + free((void*)font->id);font->id=0; + } + if(font->kerning) { + free(font->kerning);font->kerning=0; + } + free(font); }