//////////////////////////////////////////////////////////// // softfont.h struct CHARDESC { unsigned char format; // 4: raster, 10: Intellifont char continuation; // if continuation is set, rest of descriptor not present, // only character raster data follows unsigned char cdsize; // 14: raster, 2: Intellifont unsigned char charclass; // 1:bitmap, 2:compressed bitmap, 3:Contour (Intellifont), 4:Compound Contour (Intellifont) unsigned char orientation; unsigned char reserved; short leftoffset; short topoffset; unsigned short width; unsigned short height; short deltax; // immediately followed by raster data }; struct FONTDESC { unsigned short fdsize; // 64 for bitmap, 80 for Intellifont unsigned char format; // 0 for bitmap, 10 for Intellifont unsigned char type; // 0: 32-127, 1: also 160-255, 2: 0-255 unsigned char stylemsb; unsigned char reserved; unsigned short baseline; unsigned short cellwidth; unsigned short cellheight; unsigned char orientation; char spacing; unsigned short symbolset; unsigned short pitch; unsigned short height; unsigned short xheight; char widthtype; unsigned char stylelsb; char weight; unsigned char typefacelsb; unsigned char typefacemsb; unsigned char serifstyle; unsigned char quality; char placement; char underlinedistance; unsigned char underlineheight; unsigned short textheight; unsigned short textwidth; unsigned short firstcode; unsigned short lastcode; unsigned char pitchex; unsigned char heightex; unsigned short capheight; unsigned char fontno[4]; char fontname[16]; #if 0 // Intellifont unsigned short scalefactor; unsigned short masterxres; unsigned short masteryres; unsigned short masterunderlineposition; unsigned short masterunderlineheight; unsigned short lrethreshold; unsigned short globalitalicangle; unsigned short globalintillifontdatasize; // globalintillifontdata; #endif unsigned short copyrightlen; // copyright data here #if 0 unsigned char reserved2; unsigned char checksum; #endif }; typedef struct FONTNODE { struct FONTNODE *next; unsigned short id; CHARDESC *cd[256]; FONTDESC fd; // followed by copyright information } *FONTLIST; FONTNODE *font_find( int id ); FONTNODE *font_new( int id, char *pdata, int cdata ); CHARDESC *font_newchar( int id, int charcode, char *pdata, int cdata ); int font_drawchar( unsigned char bits[3300][300], int x, int y, FONTNODE *pf, int charcode );