--- ../../CVSRepository/gnustep/core/back/Source/art/ftfont.m	2005-10-06 17:02:47.178230600 +0900
+++ Source/art/ftfont.m	2005-10-07 14:32:44.661277824 +0900
@@ -2689,7 +2689,7 @@
 /* TODO: this whole thing needs cleaning up */
 @implementation FTFontInfo_subpixel
 
-#if 0
+#if 1
 -(void) drawGlyphs: (const NSGlyph *)glyphs : (int)length
 	at: (int)x : (int)y
 	to: (int)x0 : (int)y0 : (int)x1 : (int)y1
@@ -2699,7 +2699,7 @@
 	transform: (NSAffineTransform *)transform
 	drawinfo: (struct draw_info_s *)di
 {
-  FTC_CMapDescRec cmap;
+  //FTC_CMapDescRec cmap;
   unsigned int glyph;
 
   int use_sbit;
@@ -2730,7 +2730,11 @@
 		matrix[3], matrix[4], matrix[5]
 		);*/
 
-  cur = imgd;
+  cur.face_id = faceId;
+  cur.width = pix_width;
+  cur.height = pix_height;
+  cur.flags = FT_LOAD_TARGET_LCD;
+
   {
     float xx, xy, yx, yy;
 
@@ -2746,8 +2750,8 @@
 	xx < 72 && yy < 72 && xx > 0.5 && yy > 0.5)
       {
 	use_sbit = 1;
-	cur.font.pix_width = xx;
-	cur.font.pix_height = yy;
+	cur.width = xx;
+	cur.height = yy;
 
 /*	if (cur.font.pix_width < 16 && cur.font.pix_height < 16 &&
 	    cur.font.pix_width > 6 && cur.font.pix_height > 6)
@@ -2769,7 +2773,7 @@
 
 	f = (int)f;
 
-	cur.font.pix_width = cur.font.pix_height = f;
+	cur.width = cur.height = f;
 	ftmatrix.xx = xx / f * 65536.0;
 	ftmatrix.xy = xy / f * 65536.0;
 	ftmatrix.yx = yx / f * 65536.0;
@@ -2782,9 +2786,9 @@
 /*	NSLog(@"drawString: '%s' at: %i:%i  to: %i:%i:%i:%i:%p\n",
 		s, x, y, x0, y0, x1, y1, buf);*/
 
-  cmap.face_id = imgd.font.face_id;
-  cmap.u.encoding = ft_encoding_unicode;
-  cmap.type = FTC_CMAP_BY_ENCODING;
+  //cmap.face_id = imgd.font.face_id;
+  //cmap.u.encoding = ft_encoding_unicode;
+  //cmap.type = FTC_CMAP_BY_ENCODING;
 
   for (; length; length--, glyphs++)
     {
@@ -2958,16 +2962,25 @@
 	  FT_Face face;
 	  FT_Glyph gl;
 	  FT_BitmapGlyph gb;
+	  FTC_ScalerRec sclr;
+	  FT_Size sz;
+
+	  sclr.face_id = cur.face_id;
+	  sclr.width = cur.width;
+	  sclr.height = cur.height;
+	  sclr.pixel = 0;
+	  sclr.x_res = 0;
+	  sclr.y_res = 0;
 
-	  if (FTC_Manager_Lookup_Size(ftc_manager, &cur.font, &face, 0))
+	  if (FTC_Manager_LookupSize(ftc_manager, &sclr, &sz))
 	    continue;
 
 	  /* TODO: for rotations of 90, 180, 270, and integer
 	     scales hinting might still be a good idea. */
-	  if (FT_Load_Glyph(face, glyph, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP))
+	  if (FT_Load_Glyph(sz->face, glyph, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP))
 	    continue;
 
-	  if (FT_Get_Glyph(face->glyph, &gl))
+	  if (FT_Get_Glyph(sz->face->glyph, &gl))
 	    continue;
 
 	  if (FT_Glyph_Transform(gl, &ftmatrix, &ftdelta))
