Could you please try reverting your patch and trying out the attached? It checks for rounding errors explicitly rather than introducing a one-pixel fuzz value.
Thanks for your help, Juliusz
Index: xc/lib/font/FreeType/ftfuncs.c =================================================================== RCS file: /cvs/xc/lib/font/FreeType/ftfuncs.c,v retrieving revision 1.25 diff -c -r1.25 ftfuncs.c *** xc/lib/font/FreeType/ftfuncs.c 2002/10/02 15:06:12 1.25 --- xc/lib/font/FreeType/ftfuncs.c 2003/02/12 15:56:42 *************** *** 595,601 **** if(wd <= 0) wd = 1; if(ht <= 0) ht = 1; } ! /* Note that wd >= bitmap->width and ht >= bitmap->rows */ bpr = (((wd + (instance->bmfmt.glyph<<3) - 1) >> 3) & -instance->bmfmt.glyph); --- 595,606 ---- if(wd <= 0) wd = 1; if(ht <= 0) ht = 1; } ! ! /* Make sure rounding doesn't cause a crash in memcpy below */ ! if(wd < bitmap->width) ! wd = bitmap->width; ! if(ht < bitmap->rows) ! ht = bitmap->rows; bpr = (((wd + (instance->bmfmt.glyph<<3) - 1) >> 3) & -instance->bmfmt.glyph); Index: xc/lib/font/FreeType/module/ftmodule.c =================================================================== RCS file: /cvs/xc/lib/font/FreeType/module/ftmodule.c,v retrieving revision 1.13 diff -c -r1.13 ftmodule.c *** xc/lib/font/FreeType/module/ftmodule.c 2002/10/01 00:02:11 1.13 --- xc/lib/font/FreeType/module/ftmodule.c 2003/02/12 15:56:58 *************** *** 44,50 **** MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, ! 2, 0, 1, ABI_CLASS_FONT, /* Font module */ ABI_FONT_VERSION, MOD_CLASS_FONT, --- 44,50 ---- MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, ! 2, 0, 2, ABI_CLASS_FONT, /* Font module */ ABI_FONT_VERSION, MOD_CLASS_FONT,