removed scale factor 20 in advance value
[swftools.git] / lib / gfxfont.c
index 6ec1a4f..71c0c13 100644 (file)
@@ -136,7 +136,7 @@ static void glyph_clear(gfxglyph_t*g)
 
 static int errorno = 0;
 
-gfxfont_t* gfxfont_load(char*filename, double quality)
+gfxfont_t* gfxfont_load(char*id, char*filename, double quality)
 {
     FT_Face face;
     FT_Error error;
@@ -164,7 +164,7 @@ gfxfont_t* gfxfont_load(char*filename, double quality)
     FT_Set_Pixel_Sizes (face, 16*loadfont_scale, 16*loadfont_scale);
 
     if(error) {
-       fprintf(stderr, "Couldn't load file %s- not a TTF file?\n", filename);
+       fprintf(stderr, "Couldn't load file %s- not a TTF file? (error=%02x)\n", filename, error);
        return 0;
     }
     if(face->num_glyphs <= 0) {
@@ -179,6 +179,7 @@ gfxfont_t* gfxfont_load(char*filename, double quality)
     //font->leading = font->layout->ascent + font->layout->descent;
     //font->encoding = FONT_ENCODING_UNICODE;
     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));
@@ -282,12 +283,17 @@ gfxfont_t* gfxfont_load(char*filename, double quality)
                hasname = 1;
            }
        }
-       if(has_had_errors && (isunicode && !glyph2unicode[t]) && !hasname) {
+
+#if 0 // some cantonese pdfs fail to work if this is activated
+
+       if(has_had_errors && (isunicode && !glyph2unicode[t]) && !hasname && t>=256) {
            /* some freetype versions crash or corrupt memory if we try to load
               characters (without unicode index or name) above 256 for some fonts.
               So skip those characters once the first error occured */
            omit = 1;
        }
+#endif
+
        if(!omit) {
            error = FT_Load_Glyph(face, t, FT_LOAD_NO_BITMAP);
            if(error) {
@@ -338,7 +344,7 @@ gfxfont_t* gfxfont_load(char*filename, double quality)
                FT_Done_Glyph(glyph);
                omit = 4;
            } else {
-               font->glyphs[font->num_glyphs].advance = (glyph->advance.x*20)/65536;
+               font->glyphs[font->num_glyphs].advance = glyph->advance.x/65536;
                font->glyphs[font->num_glyphs].line = (gfxline_t*)draw.result(&draw);
            }
            l = font->glyphs[font->num_glyphs].line;