#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;
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;
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 =
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");
}
}
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;
}
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;
}
last = pos;
outline = outline->link;
- printf("t1lib: (%f,%f) ", pos.x, pos.y);
}
- printf("\n");
draw.finish(&draw);