#include #include FT_FREETYPE_H int main (int argc, char ** argv) { FT_Library library; FT_Face face; FT_CharMap charmap; FT_Vector kerninfo; char * buffer; int error; int i, j; FT_ULong charcode; FT_UInt gindex; FT_UInt testa, testb; error = FT_Init_FreeType (&library); if (error) { printf ("An error occurred during initialisation.\n"); exit (EXIT_FAILURE); } error = FT_New_Face (library, argv[1], 0, &face); if (error == FT_Err_Unknown_File_Format) { printf ("Unknown file format.\n"); exit (EXIT_FAILURE); } else if (error) { printf ("Unknown error: %d.\n", error); exit (EXIT_FAILURE); } else { printf ("Font was loaded successfully.\n"); charmap = face->charmap; printf ("Charmap Platform ID: %d.\n", charmap->platform_id); printf ("Charmap Encoding ID: %d.\n", charmap->encoding_id); if (FT_HAS_KERNING(face)) { printf ("Found kerning information.\n"); } else { printf ("Could not find any kerning information.\n"); } if (FT_IS_SFNT(face)) { printf ("Font uses the SFNT storage scheme.\n"); } else { printf ("Font does not use the SFNT storage scheme.\n"); } if (FT_HAS_GLYPH_NAMES(face)) { printf ("Face contains glyph names.\n"); } else { printf ("Face does not contain any glyph names.\n"); } charcode = FT_Get_First_Char(face, &gindex); while (gindex != 0) { error = FT_Get_Glyph_Name (face, gindex, buffer, 80); if (error) { printf ("Error while reading glyph name (charcode was %ld.\n", charcode); exit (EXIT_FAILURE); } else { printf ("Found glyph: %s (%ld,%d)\n", buffer, charcode, gindex); } charcode = FT_Get_Next_Char(face, charcode, &gindex); } for (i = 0; i < face->num_glyphs; i++) { for (j = 0; j < face->num_glyphs; j++) { error = FT_Get_Kerning (face, i, j, FT_KERNING_DEFAULT, &kerninfo); if (error) { printf ("Unable to extract kerning for this pair (%d, %d).\n", i, j); } else { printf ("Found kerning: %d, %d.\n", kerninfo.x, kerninfo.y); } } } //FT_Done_Face (face); //FT_Done_FreeType (library); exit (EXIT_SUCCESS); } printf ("You should never have come here.\n"); exit (EXIT_FAILURE); }