short h_drawChar(h_Font * font, short x, short y, unsigned char caract, h_Mode mode, unsigned char * screen) { short decal; short j; short charsize=h_getFontCharSize(font,caract)+((mode & HMODE_BOLD)!=0)+((mode & HMODE_ITALIC)!=0); unsigned char * sprite=(font->spriteTable+font->y*(caract-font->firstChar+1)-1); screen+=(y+font->y-1)*30+(x>>3); decal=x&7; for (j=0;j<font->y;j++) { (*screen)|=((*sprite)>>decal); (*(screen+1))|=((*sprite)<<(8-decal)); if ((mode & HMODE_BOLD)!=0) { (*screen)|=((*sprite)>>(decal+1)); (*(screen+1))|=((*sprite)<<(8-decal-1)); } if ((mode & HMODE_ITALIC)!=0 && j%3==2) decal++; screen-=30; sprite--; } return charsize; }