- 
    
Suggestion
 - 
    Resolution: Invalid
 - 
    
  Not Evaluated                     
     - 
    None
 - 
    4.7.2
 - 
    None
 - 
    
Wince6.0/iMx515
 
according to last mailing list, anti-aliasing on wince/qt is unavailable.
but i found anti-aliasing enable method.
QFontEngineWin::alphaMapForGlyph(glyph_t glyph, const QTransform &xform) designed to RGB32
when wince use 16bpp problems occured
qGray function is for RGB32/24 not RGB565
this patch is make font 256 gray anti-aliasing
i don't know how make RGB mask for text
if U can make RGB mask, it will be able to subpixel font rendering too.
==============================================================================================================
wince_Antialiasing.diff
--- D:/Qt/qt-4.7.1-wince6L/src/gui/text/qfontengine_win.cpp.org	화 4 26 10:55:54 2011
+++ D:/Qt/qt-4.7.1-wince6L/src/gui/text/qfontengine_win.cpp	화 4 26 10:56:15 2011
@@ -1190,7 +1190,6 @@
     return ni;
 }
 
-
 extern uint qt_pow_gamma[256];
 
 QImage QFontEngineWin::alphaMapForGlyph(glyph_t glyph, const QTransform &xform)
@@ -1221,26 +1220,24 @@
 
     // Copy data... Cannot use QPainter here as GDI has messed up the
     // Alpha channel of the ni.image pixels...
-    for (int y=0; y<mask->height(); ++y) {
-        uchar *dest = indexed.scanLine(y);
-        if (mask->image.format() == QImage::Format_RGB16) {
-            const qint16 *src = (qint16 *) ((const QImage &) mask->image).scanLine(y);
-            for (int x=0; x<mask->width(); ++x)
-                dest[x] = 255 - qGray(src[x]);
-        } else {
-            const uint *src = (uint *) ((const QImage &) mask->image).scanLine(y);
-            for (int x=0; x<mask->width(); ++x) {
+	const QImage source = mask->image.depth() == 32
+		? mask->image
+		: mask->image.convertToFormat(QImage::Format_RGB32);
+
+	for (int y=0; y<source.height(); ++y) {
+		uchar *dest = indexed.scanLine(y);
+		const uint *src = (uint *) source.scanLine(y);
+		for (int x=0; x<source.width(); ++x) {
 #ifdef Q_OS_WINCE
-                dest[x] = 255 - qGray(src[x]);
+			dest[x] = 255 - qGray(src[x]);
 #else
-                if (QNativeImage::systemFormat() == QImage::Format_RGB16)
-                    dest[x] = 255 - qGray(src[x]);
-                else
-                    dest[x] = 255 - (qt_pow_gamma[qGray(src[x])] * 255. / 2047.);
+			if (QNativeImage::systemFormat() == QImage::Format_RGB16)
+				dest[x] = 255 - qGray(src[x]);
+			else
+				dest[x] = 255 - (qt_pow_gamma[qGray(src[x])] * 255. / 2047.);
 #endif
-            }
-        }
-    }
+		}
+	}
 
     // Cleanup...
     delete mask;
@@ -1257,12 +1254,16 @@
 QImage QFontEngineWin::alphaRGBMapForGlyph(glyph_t glyph, int margin, const QTransform &t)
 {
     HFONT font = hfont;
+	if (qt_cleartype_enabled) {
+		LOGFONT lf = logfont;		
+		lf.lfQuality = ANTIALIASED_QUALITY;
+		font = CreateFontIndirect(&lf);
+	}
 
     int contrast;
     SystemParametersInfo(SPI_GETFONTSMOOTHINGCONTRAST, 0, &contrast, 0);
     SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) 1000, 0);
-
-    QNativeImage *mask = drawGDIGlyph(font, glyph, margin, t, QImage::Format_RGB32);
+	QNativeImage *mask = drawGDIGlyph(font, glyph, margin, t, QNativeImage::systemFormat());
     SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) contrast, 0);
 
     if (mask == 0)
@@ -1278,11 +1279,14 @@
         uint *dest = (uint *) rgbMask.scanLine(y);
         const uint *src = (uint *) source.scanLine(y);
         for (int x=0; x<mask->width(); ++x) {
            dest[x] = 0xffffffff - (0x00ffffff & src[x]);
         }
     }
 
     delete mask;
+	if (qt_cleartype_enabled) {
+		DeleteObject(font);
+	}
 
     return rgbMask;
 }