2 * gcc -DFT2_BUILD_LIBRARY -I../../include -o test_afm test_afm.c \
3 * -L../../objs/.libs -lfreetype -lz -static
7 #include FT_INTERNAL_STREAM_H
8 #include FT_INTERNAL_POSTSCRIPT_AUX_H
10 void dump_fontinfo( AFM_FontInfo fi
)
15 printf( "This AFM is for %sCID font.\n\n",
16 ( fi
->IsCIDFont
) ? "" : "non-" );
18 printf( "FontBBox: %.2f %.2f %.2f %.2f\n", fi
->FontBBox
.xMin
/ 65536.,
19 fi
->FontBBox
.yMin
/ 65536.,
20 fi
->FontBBox
.xMax
/ 65536.,
21 fi
->FontBBox
.yMax
/ 65536. );
22 printf( "Ascender: %.2f\n", fi
->Ascender
/ 65536. );
23 printf( "Descender: %.2f\n\n", fi
->Descender
/ 65536. );
25 if ( fi
->NumTrackKern
)
26 printf( "There are %d sets of track kernings:\n",
29 printf( "There is no track kerning.\n" );
31 for ( i
= 0; i
< fi
->NumTrackKern
; i
++ )
33 AFM_TrackKern tk
= fi
->TrackKerns
+ i
;
36 printf( "\t%2d: %5.2f %5.2f %5.2f %5.2f\n", tk
->degree
,
37 tk
->min_ptsize
/ 65536.,
38 tk
->min_kern
/ 65536.,
39 tk
->max_ptsize
/ 65536.,
40 tk
->max_kern
/ 65536. );
45 if ( fi
->NumKernPair
)
46 printf( "There are %d kerning pairs:\n",
49 printf( "There is no kerning pair.\n" );
51 for ( i
= 0; i
< fi
->NumKernPair
; i
++ )
53 AFM_KernPair kp
= fi
->KernPairs
+ i
;
56 printf( "\t%3d + %3d => (%4d, %4d)\n", kp
->index1
,
65 dummy_get_index( const char* name
,
76 parse_afm( FT_Library library
,
82 FT_Error error
= FT_Err_Ok
;
85 psaux
= (PSAux_Service
)FT_Get_Module_Interface( library
, "psaux" );
86 if ( !psaux
|| !psaux
->afm_parser_funcs
)
89 error
= FT_Stream_EnterFrame( stream
, stream
->size
);
93 error
= psaux
->afm_parser_funcs
->init( &parser
,
100 parser
.FontInfo
= fi
;
101 parser
.get_index
= dummy_get_index
;
103 error
= psaux
->afm_parser_funcs
->parse( &parser
);
105 psaux
->afm_parser_funcs
->done( &parser
);
116 FT_Error error
= FT_Err_Ok
;
121 return FT_Err_Invalid_Argument
;
123 error
= FT_Init_FreeType( &library
);
128 error
= FT_Stream_Open( &stream
, argv
[1] );
131 stream
.memory
= library
->memory
;
134 error
= parse_afm( library
, &stream
, &fi
);
138 FT_Memory memory
= library
->memory
;
141 dump_fontinfo( &fi
);
144 FT_FREE( fi
.KernPairs
);
146 FT_FREE( fi
.TrackKerns
);
149 printf( "parse error\n" );
151 FT_Stream_Close( &stream
);
154 FT_Done_FreeType( library
);