9 void dump_fontinfo( AFM_FontInfo fi )
14 printf(
"This AFM is for %sCID font.\n\n",
15 ( fi->IsCIDFont ) ?
"" :
"non-" );
17 printf(
"FontBBox: %.2f %.2f %.2f %.2f\n", fi->FontBBox.xMin / 65536.,
18 fi->FontBBox.yMin / 65536.,
19 fi->FontBBox.xMax / 65536.,
20 fi->FontBBox.yMax / 65536. );
21 printf(
"Ascender: %.2f\n", fi->Ascender / 65536. );
22 printf(
"Descender: %.2f\n\n", fi->Descender / 65536. );
24 if ( fi->NumTrackKern )
25 printf(
"There are %d sets of track kernings:\n",
28 printf(
"There is no track kerning.\n" );
30 for ( i = 0; i < fi->NumTrackKern; i++ )
32 AFM_TrackKern tk = fi->TrackKerns + i;
35 printf(
"\t%2d: %5.2f %5.2f %5.2f %5.2f\n", tk->degree,
36 tk->min_ptsize / 65536.,
37 tk->min_kern / 65536.,
38 tk->max_ptsize / 65536.,
39 tk->max_kern / 65536. );
44 if ( fi->NumKernPair )
45 printf(
"There are %d kerning pairs:\n",
48 printf(
"There is no kerning pair.\n" );
50 for ( i = 0; i < fi->NumKernPair; i++ )
52 AFM_KernPair kp = fi->KernPairs + i;
55 printf(
"\t%3d + %3d => (%4d, %4d)\n", kp->index1,
64 dummy_get_index(
const char* name,
75 parse_afm( FT_Library library,
81 FT_Error error = FT_Err_Ok;
84 psaux = (PSAux_Service)FT_Get_Module_Interface( library,
"psaux" );
85 if ( !psaux || !psaux->afm_parser_funcs )
88 error = FT_Stream_EnterFrame( stream, stream->size );
92 error = psaux->afm_parser_funcs->init( &parser,
100 parser.get_index = dummy_get_index;
102 error = psaux->afm_parser_funcs->parse( &parser );
104 psaux->afm_parser_funcs->done( &parser );
115 FT_Error error = FT_Err_Ok;
120 return FT_ERR( Invalid_Argument );
122 error = FT_Init_FreeType( &library );
127 error = FT_Stream_Open( &stream, argv[1] );
130 stream.memory = library->memory;
133 error = parse_afm( library, &stream, &fi );
137 FT_Memory memory = library->memory;
140 dump_fontinfo( &fi );
143 FT_FREE( fi.KernPairs );
145 FT_FREE( fi.TrackKerns );
148 printf(
"parse error\n" );
150 FT_Stream_Close( &stream );
153 FT_Done_FreeType( library );