X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswffont.c;h=e7ad1df21cffadc7a1538ccfb85db451213fa5a0;hb=80cc20b7784cccc9d8baf9839f9781db6bb6f539;hp=876c139cb695a5c140c60923c55dd97424af4fe0;hpb=338fe5380bbfab8828826ae7b81b7bbbcc29cf50;p=swftools.git diff --git a/lib/modules/swffont.c b/lib/modules/swffont.c index 876c139..e7ad1df 100644 --- a/lib/modules/swffont.c +++ b/lib/modules/swffont.c @@ -59,7 +59,7 @@ void swf_SetLoadFontParameters(int _scale, int _skip_unused, int _full_unicode) #define FT_SCALE 1 #define FT_SUBPIXELS 64 -static int ft_move_to(FT_Vector* _to, void* user) +static int ft_move_to(const FT_Vector* _to, void* user) { drawer_t* draw = (drawer_t*)user; FPOINT to; @@ -68,7 +68,7 @@ static int ft_move_to(FT_Vector* _to, void* user) draw->moveTo(draw, &to); return 0; } -static int ft_line_to(FT_Vector* _to, void* user) +static int ft_line_to(const FT_Vector* _to, void* user) { drawer_t* draw = (drawer_t*)user; FPOINT to; @@ -77,28 +77,28 @@ static int ft_line_to(FT_Vector* _to, void* user) draw->lineTo(draw, &to); return 0; } -static int ft_cubic_to(FT_Vector* _c1, FT_Vector* _c2, FT_Vector* _to, void* user) +static int ft_conic_to(const FT_Vector* _c, const FT_Vector* _to, void* user) { drawer_t* draw = (drawer_t*)user; - FPOINT c1,c2,to; + FPOINT c,to; to.x = _to->x*FT_SCALE/(float)FT_SUBPIXELS; to.y = -_to->y*FT_SCALE/(float)FT_SUBPIXELS; - c1.x = _c1->x*FT_SCALE/(float)FT_SUBPIXELS; - c1.y = -_c1->y*FT_SCALE/(float)FT_SUBPIXELS; - c2.x = _c2->x*FT_SCALE/(float)FT_SUBPIXELS; - c2.y = -_c2->y*FT_SCALE/(float)FT_SUBPIXELS; - draw_cubicTo(draw, &c1, &c2, &to); + c.x = _c->x*FT_SCALE/(float)FT_SUBPIXELS; + c.y = -_c->y*FT_SCALE/(float)FT_SUBPIXELS; + draw_conicTo(draw, &c, &to); return 0; } -static int ft_conic_to(FT_Vector* _c, FT_Vector* _to, void* user) +static int ft_cubic_to(const FT_Vector* _c1, const FT_Vector* _c2, const FT_Vector* _to, void* user) { drawer_t* draw = (drawer_t*)user; - FPOINT c,to; + FPOINT c1,c2,to; to.x = _to->x*FT_SCALE/(float)FT_SUBPIXELS; to.y = -_to->y*FT_SCALE/(float)FT_SUBPIXELS; - c.x = _c->x*FT_SCALE/(float)FT_SUBPIXELS; - c.y = -_c->y*FT_SCALE/(float)FT_SUBPIXELS; - draw_conicTo(draw, &c, &to); + c1.x = _c1->x*FT_SCALE/(float)FT_SUBPIXELS; + c1.y = -_c1->y*FT_SCALE/(float)FT_SUBPIXELS; + c2.x = _c2->x*FT_SCALE/(float)FT_SUBPIXELS; + c2.y = -_c2->y*FT_SCALE/(float)FT_SUBPIXELS; + draw_cubicTo(draw, &c1, &c2, &to); return 0; } static FT_Outline_Funcs outline_functions = @@ -125,7 +125,7 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) FT_Size size; int max_unicode = 0; int charmap = -1; - + if(ftlibrary == 0) { if(FT_Init_FreeType(&ftlibrary)) { fprintf(stderr, "Couldn't init freetype library!\n"); @@ -133,12 +133,14 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) } } error = FT_New_Face(ftlibrary, filename, 0, &face); - FT_Set_Pixel_Sizes (face, 16*loadfont_scale, 16*loadfont_scale); - if(error) { + if(error || !face) { fprintf(stderr, "Couldn't load file %s- not a TTF file?\n", filename); return 0; } + + FT_Set_Pixel_Sizes (face, 16*loadfont_scale, 16*loadfont_scale); + if(face->num_glyphs <= 0) { fprintf(stderr, "File %s contains %d glyphs\n", face->num_glyphs); return 0; @@ -255,7 +257,8 @@ SWFFONT* swf_LoadTrueTypeFont(char*filename) } error = FT_Load_Glyph(face, t, FT_LOAD_NO_BITMAP); if(error) { - fprintf(stderr, "Couldn't load glyph %d, error:%d\n", t, error); + //tends to happen with some pdfs + fprintf(stderr, "Warning: Glyph %d has return code %d\n", t, error); glyph=0; if(skip_unused) continue; @@ -492,9 +495,7 @@ SWFFONT* swf_LoadT1Font(char*filename) } last = pos; outline = outline->link; - printf("t1lib: (%f,%f) ", pos.x, pos.y); } - printf("\n"); draw.finish(&draw);