|  | #include <stdio.h> | 
|  |  | 
|  | enum data_types {dfChar, dfShort, dfLong, dfString}; | 
|  |  | 
|  | #define ERROR_DATA	1 | 
|  | #define ERROR_VERSION	2 | 
|  | #define ERROR_SIZE	3 | 
|  | #define ERROR_MEMORY	4 | 
|  | #define ERROR_FILE	5 | 
|  |  | 
|  | typedef struct tagFontHeader | 
|  | { | 
|  | unsigned char dfVersion[2]; 	/* Version (always 0x3000) */ | 
|  | unsigned char dfSize[4];            /* Total File Size */ | 
|  | unsigned char dfCopyright[60];      /* Copyright notice */ | 
|  | unsigned char dfType[2];            /* Vector or bitmap font */ | 
|  | unsigned char dfPoints[2];          /* Nominal point size */ | 
|  | unsigned char dfVertRes[2]; 	/* Vertical Resolution */ | 
|  | unsigned char dfHorizRes[2];        /* Horizontal Resolutionchar */ | 
|  | unsigned char dfAscent[2];          /* Character ascent in pixels */ | 
|  | unsigned char dfInternalLeading[2]; /* Leading included in character defn */ | 
|  | unsigned char dfExternalLeading[2]; /* Leading to be added by Windows */ | 
|  | unsigned char dfItalic[1];             /* 1=Italic font */ | 
|  | unsigned char dfUnderline[1];          /* 1=underlined font */ | 
|  | unsigned char dfStrikeOut[1];          /* 1=strike-out font */ | 
|  | unsigned char dfWeight[2];          /* Weight: 400=normal */ | 
|  | unsigned char dfCharSet[1];            /* Character Set for this font */ | 
|  | unsigned char dfPixWidth[2];        /* Character width (0 for proportional) */ | 
|  | unsigned char dfPixHeight[2];       /* Character height */ | 
|  | unsigned char dfPitchAndFamily[1];     /* Font Pitch and family */ | 
|  | unsigned char dfAvgWidth[2];        /* Average character width */ | 
|  | unsigned char dfMaxWidth[2];        /* Maximum character width */ | 
|  | unsigned char dfFirstChar[1];          /* Firwst character of the font */ | 
|  | unsigned char dfLastChar[1];           /* Last character of the font */ | 
|  | unsigned char dfDefaultChar[1];        /* Missing character */ | 
|  | unsigned char dfBreakChar[1];          /* Character to indicate word breaks */ | 
|  | unsigned char dfWidthBytes[2];      /* Number of bytes in each row */ | 
|  | unsigned char dfDevice[4];          /* Offset to device name */ | 
|  | unsigned char dfFace[4];            /* Offset to type face name */ | 
|  | unsigned char dfBitsPointer[4]; | 
|  | unsigned char dfBitsOffset[4];      /* Offset to bitmaps */ | 
|  | unsigned char dfReserved[1]; | 
|  | unsigned char dfFlags[4];           /* Bitmapped flags */ | 
|  | unsigned char dfAspace[2]; | 
|  | unsigned char dfBspace[2]; | 
|  | unsigned char dfCspace[2]; | 
|  | unsigned char dfColorTable[2];      /* Offset to Color table */ | 
|  | unsigned char dfReserved1[4]; | 
|  | } fnt_hdrS; | 
|  |  | 
|  | typedef struct WinCharStruct | 
|  | { | 
|  | unsigned int charWidth; | 
|  | unsigned int charOffset; | 
|  | } WinCharS; | 
|  |  | 
|  | typedef struct fntFontStruct | 
|  | { | 
|  | fnt_hdrS 	 	hdr; | 
|  | WinCharS 		*dfCharTable; | 
|  | unsigned char	*dfDeviceP; | 
|  | unsigned char 	*dfFaceP; | 
|  | unsigned char 	*dfBitsPointerP; | 
|  | unsigned char 	*dfBitsOffsetP; | 
|  | short 		*dfColorTableP; | 
|  | } fnt_fontS; | 
|  |  | 
|  | extern	int return_data_value(enum data_types, void *); | 
|  |  | 
|  | extern	int dump_bdf(fnt_fontS*, unsigned char* ); | 
|  | extern	int dump_bdf_hdr(FILE* fp,fnt_fontS*, unsigned char* ); | 
|  |  | 
|  | extern	int parse_fnt_data(unsigned char* file_buffer, int length); | 
|  |  |