pass font id to loadfont
[swftools.git] / lib / gfxfont.c
index 8a704fd..21c85ab 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;
@@ -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));
@@ -211,11 +212,13 @@ gfxfont_t* gfxfont_load(char*filename, double quality)
           the encoding is no longer unicode. 
           TODO: find a way to convert the encoding to unicode
         */
-       if(font->max_unicode == 0 && charmap < face->num_charmaps - 1) {
+       if(font->max_unicode == 0 && charmap < face->num_charmaps-1 && 
+               face->charmaps[charmap+1]->encoding != 0x41444243 /* custom */)
+               {
            charmap++;
            FT_Set_Charmap(face, face->charmaps[charmap]);
            isunicode = 0;
-       } else 
+       } else
            break;
     }
 
@@ -336,7 +339,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*20)/65536;
                font->glyphs[font->num_glyphs].line = (gfxline_t*)draw.result(&draw);
            }
            l = font->glyphs[font->num_glyphs].line;