--- SDL_ttf.c 2006-05-01 11:26:17.000000000 +0200 +++ SDL_ttf.c-patched 2006-08-13 14:52:41.000000000 +0200 @@ -524,7 +514,7 @@ * a freetype2 bug because it is inconsistent with the * freetype2 documentation under FT_Render_Mode section. * */ - if ( mono || !FT_IS_SCALABLE(face) ) { + if ( mono || !FT_IS_SCALABLE(face) || src->pixel_mode == FT_PIXEL_MODE_MONO ) { dst->pitch *= 8; } @@ -550,27 +540,28 @@ for( i = 0; i < src->rows; i++ ) { int soffset = i * src->pitch; int doffset = i * dst->pitch; - if ( mono ) { + if ( mono || src->pixel_mode == FT_PIXEL_MODE_MONO ) { unsigned char *srcp = src->buffer + soffset; unsigned char *dstp = dst->buffer + doffset; + unsigned char value = mono ? 1 : 255; int j; for ( j = 0; j < src->width; j += 8 ) { unsigned char ch = *srcp++; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; ch <<= 1; - *dstp++ = (ch&0x80) >> 7; + *dstp++ = ch&0x80 ? value : 0; } } else if ( !FT_IS_SCALABLE(face) ) { /* This special case wouldn't