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;
}