diff -rupN --exclude=.svn --exclude='*.log' --exclude=Makefile --exclude='*.m4' --exclude='*.in' --exclude=autom4te.cache --exclude='config*' --exclude='*.Po' --exclude='*.sh' lcd4linux/drv_dpf.c lcd4linux.1/drv_dpf.c --- lcd4linux/drv_dpf.c 2011-11-14 14:41:40.859787820 +0100 +++ lcd4linux.1/drv_dpf.c 2011-11-13 14:42:58.650315817 +0100 @@ -160,12 +160,26 @@ static int drv_dpf_start2(const char *se } /* Fixme: provider other fonts someday... */ - if (XRES != 6 && YRES != 8) { + /* Overridden - we have scaled the textout drawing */ +/* if (XRES != 6 && YRES != 8) { error("%s: bad Font '%s' from %s (only 6x8 at the moment)", Name, s, cfg_source()); return -1; + } */ + + /* we dont want fonts below 6 width */ + if (XRES <6) { + error("%s: bad Font '%s' width '%d' using minimum of 6)", + Name,s,XRES); + XRES = 6; } + /* we dont want fonts below 8 height */ + if (YRES <8) { + error("%s: bad Font '%s' height '%d' using minimum of 8)", + Name,s,YRES); + YRES = 8; + } /* open communication with the display */ if (drv_dpf_open(section) < 0) { diff -rupN --exclude=.svn --exclude='*.log' --exclude=Makefile --exclude='*.m4' --exclude='*.in' --exclude=autom4te.cache --exclude='config*' --exclude='*.Po' --exclude='*.sh' lcd4linux/drv_generic_graphic.c lcd4linux.1/drv_generic_graphic.c --- lcd4linux/drv_generic_graphic.c 2011-11-14 14:41:40.614375417 +0100 +++ lcd4linux.1/drv_generic_graphic.c 2011-11-14 14:58:29.303285793 +0100 @@ -259,15 +259,18 @@ static void drv_generic_graphic_render(c } for (y = 0; y < YRES; y++) { - int mask = 1 << XRES; + for (x = 0; x < XRES; x++) { - mask >>= 1; - if (chr[y] & mask) - drv_generic_graphic_FB[layer][(r + y) * LCOLS + c + x] = fg; - else - drv_generic_graphic_FB[layer][(r + y) * LCOLS + c + x] = bg; + int mask = 1 << 6; + mask >>= ((x*6)/(XRES))+1; + if (chr[(y*8)/(YRES)] & mask) + drv_generic_graphic_FB[layer][(r + y ) * LCOLS + c + x] = fg; + else + drv_generic_graphic_FB[layer][(r + y ) * LCOLS + c + x] = bg; + } } + c += XRES; txt++; }