diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/Makefile.am my-gtk/pango/pango/Makefile.am
--- from-cvs/pango/pango/Makefile.am	Sat May 24 15:24:48 2003
+++ my-gtk/pango/pango/Makefile.am	Sat Mar 15 18:04:56 2003
@@ -27,6 +27,7 @@
 	$(PANGO_DEBUG_FLAGS)				\
 	$(GLIB_CFLAGS)					\
 	$(XFT_CFLAGS)					\
+	$(FONTCONFIG_CFLAGS)				\
 	$(FREETYPE_CFLAGS)				\
 	$(X_CFLAGS)					\
 	-I$(top_srcdir)
@@ -77,7 +78,6 @@
 	pango-markup.c	   \
 	pango-tabs.c	   \
 	pango-utils.c	   \
-	pangofc-font.c	   \
 	reorder-items.c    \
 	shape.c	           \
 	pango-enum-types.c
@@ -100,8 +100,7 @@
 	pango-modules.h	   \
 	pango-tabs.h	   \
 	pango-types.h	   \
-	pango-utils.h	   \
-	pangofc-font.h
+	pango-utils.h
 
 pangoinclude_HEADERS =	   \
 	$(pango_headers)   \
@@ -182,7 +181,7 @@
 endif
 
 libpangoft2_1_0_la_LDFLAGS = -version-info $(LT_VERSION_INFO) $(no_undefined)
-libpangoft2_1_0_la_LIBADD = opentype/libpango-ot.la libpango-$(PANGO_API_VERSION).la $(INCLUDED_FT2_MODULES) $(FREETYPE_LIBS) $(GLIB_LIBS)
+libpangoft2_1_0_la_LIBADD = opentype/libpango-ot.la libpango-$(PANGO_API_VERSION).la $(INCLUDED_FT2_MODULES) $(FONTCONFIG_LIBS) $(GLIB_LIBS)
 libpangoft2_1_0_la_DEPENDENCIES = libpango-$(PANGO_API_VERSION).la $(INCLUDED_FT2_MODULES)
 
 libpangoft2_1_0_la_SOURCES =   	\
Only in my-gtk/pango/pango: _fontconfig
Only in my-gtk/pango/pango: cache-times.txt
Only in my-gtk/pango/pango: first
Only in my-gtk/pango/pango: first-times.txt
Only in my-gtk/pango/pango: fixme-win32.txt
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/fonts.c my-gtk/pango/pango/fonts.c
--- from-cvs/pango/pango/fonts.c	Sat May 24 15:24:48 2003
+++ my-gtk/pango/pango/fonts.c	Fri Feb 14 22:22:44 2003
@@ -95,12 +95,13 @@
 pango_font_description_set_family (PangoFontDescription *desc,
 				   const char           *family)
 {
-  gchar *old_family = NULL;
-	
   g_return_if_fail (desc != NULL);
 
+  if (desc->family_name == family)
+    return;
+  
   if (desc->family_name && !desc->static_family)
-    old_family = desc->family_name;
+    g_free (desc->family_name);
 
   if (family)
     {
@@ -113,9 +114,6 @@
       desc->family_name = NULL;
       desc->mask &= ~PANGO_FONT_MASK_FAMILY;
     }
-
-  if (old_family)
-    g_free (old_family);
 }
 
 /**
@@ -618,24 +616,6 @@
 	   (desc1->family_name && desc2->family_name && g_ascii_strcasecmp (desc1->family_name, desc2->family_name) == 0)));
 }
 
-#define TOLOWER(c) \
-  (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c))
-
-static guint
-case_insensitive_hash (const char *key)
-{
-  const char *p = key;
-  guint h = TOLOWER (*p);
-
-  if (h)
-    {
-      for (p += 1; *p != '\0'; p++)
-	h = (h << 5) - h + TOLOWER (*p);
-    }
-
-  return h;
-}
-
 /**
  * pango_font_description_hash:
  * @desc: a #PangoFontDescription
@@ -653,7 +633,7 @@
   hash = desc->mask;
   
   if (desc->mask & PANGO_FONT_MASK_FAMILY)
-    hash = case_insensitive_hash (desc->family_name);
+    hash = g_str_hash (desc->family_name);
   if (desc->mask & PANGO_FONT_MASK_SIZE)
     hash ^= desc->size;
   if (desc->mask & PANGO_FONT_MASK_STYLE)
Only in my-gtk/pango/pango: makeenums.pl
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/mapping.c my-gtk/pango/pango/mapping.c
--- from-cvs/pango/pango/mapping.c	Sat May 24 15:24:48 2003
+++ my-gtk/pango/pango/mapping.c	Wed Jan 01 12:39:44 2003
@@ -275,53 +275,23 @@
     }
   else
     {
-      double cp = ((double)(x_pos - start_xpos) * cluster_chars) / (end_xpos - start_xpos);
+      double cp = ((double)(x_pos - start_xpos) * cluster_chars) / (end_xpos - start_xpos); 
 
-      /* LTR and right-to-left have to be handled separately
-       * here because of the edge condition when we are exactly
-       * at a pixel boundary; end_xpos goes with the next
-       * character for LTR, with the previous character for RTL.
-       */
-      if (start_xpos < end_xpos) /* Left-to-right */
+      if (index)
 	{
-	  if (index)
-	    {
-	      char *p = text + start_index;
-	      int i = 0;
-	      
-	      while (i + 1 <= cp)
-		{
-		  p = g_utf8_next_char (p);
-		  i++;
-		}
-	      
-	      *index = (p - text);
-	    }
-	  
-	  if (trailing)
-	    *trailing = (cp - (int)cp >= 0.5) ? 1 : 0;
-	}
-      else /* Right-to-left */
-	{
-	  if (index)
-	    {
-	      char *p = text + start_index;
-	      int i = 0;
-	      
-	      while (i + 1 < cp)
-		{
-		  p = g_utf8_next_char (p);
-		  i++;
-		}
-	      
-	      *index = (p - text);
-	    }
-	  
-	  if (trailing)
+	  char *p = text + start_index;
+	  int i = 0;
+
+	  while (i + 1 <= cp)
 	    {
-	      double cp_flip = cluster_chars - cp;
-	      *trailing = (cp_flip - (int)cp_flip >= 0.5) ? 0 : 1;
+	      p = g_utf8_next_char (p);
+	      i++;
 	    }
+	    
+	  *index = (p - text);
 	}
+
+      if (trailing)
+	*trailing = (cp - (int)cp > 0.5) ? 1 : 0;
     }
 }
Only in my-gtk/pango/pango/mini-fribidi: fribidi-0.1.12.patch
Only in my-gtk/pango/pango: mini-xft
Only in my-gtk/pango/pango: module-defs-ft2.c
Only in my-gtk/pango/pango: module-defs-win32.c
Only in my-gtk/pango/pango: monospace-24.bmp
Only in my-gtk/pango/pango: monospace-32.bmp
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/opentype/ftxgpos.c my-gtk/pango/pango/opentype/ftxgpos.c
--- from-cvs/pango/pango/opentype/ftxgpos.c	Sat May 24 15:24:54 2003
+++ my-gtk/pango/pango/opentype/ftxgpos.c	Wed Oct 02 23:02:30 2002
@@ -4778,13 +4778,12 @@
     if ( class_offset )
       {
         if ( !FILE_Seek( class_offset + base_offset ) )
-          error = Load_ClassDefinition( cd, limit, stream );
+          error = Load_ClassDefinition( cd, limit, stream ) == TT_Err_Ok;
       }
     else
        error = Load_EmptyClassDefinition ( cd, stream );
 
-    if (error == TT_Err_Ok)
-      (void)FILE_Seek( cur_offset ); /* Changes error as a side-effect */
+    (void)FILE_Seek( cur_offset );
 
     return error;
   }
@@ -4827,14 +4826,13 @@
     lookahead_offset = GET_UShort();
 
     /* `ChainPosClassSetCount' is the upper limit for input class values,
-       thus we read it now to make an additional safety check. No limit
-       is known or needed for the other two class definitions          */
+       thus we read it now to make an additional safety check.            */
 
     count = ccpf2->ChainPosClassSetCount = GET_UShort();
 
     FORGET_Frame();
 
-    if ( ( error = Load_EmptyOrClassDefinition( &ccpf2->BacktrackClassDef, 65535,
+    if ( ( error = Load_EmptyOrClassDefinition( &ccpf2->BacktrackClassDef, count,
 						backtrack_offset, base_offset,
 						stream ) ) != TT_Err_Ok )
       goto Fail5;
@@ -4842,7 +4840,7 @@
 						input_offset, base_offset,
 						stream ) ) != TT_Err_Ok )
       goto Fail4;
-    if ( ( error = Load_EmptyOrClassDefinition( &ccpf2->LookaheadClassDef, 65535,
+    if ( ( error = Load_EmptyOrClassDefinition( &ccpf2->LookaheadClassDef, count,
 						lookahead_offset, base_offset,
 						stream ) ) != TT_Err_Ok )
       goto Fail3;
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/opentype/ftxgsub.c my-gtk/pango/pango/opentype/ftxgsub.c
--- from-cvs/pango/pango/opentype/ftxgsub.c	Sat May 24 15:24:56 2003
+++ my-gtk/pango/pango/opentype/ftxgsub.c	Wed Oct 02 23:02:30 2002
@@ -2994,14 +2994,13 @@
     lookahead_offset = GET_UShort();
 
     /* `ChainSubClassSetCount' is the upper limit for input class values,
-       thus we read it now to make an additional safety check. No limit
-       is known or needed for the other two class definitions          */
+       thus we read it now to make an additional safety check.            */
 
     count = ccsf2->ChainSubClassSetCount = GET_UShort();
 
     FORGET_Frame();
 
-    if ( ( error = Load_EmptyOrClassDefinition( &ccsf2->BacktrackClassDef, 65535,
+    if ( ( error = Load_EmptyOrClassDefinition( &ccsf2->BacktrackClassDef, count,
                                                 backtrack_offset, base_offset,
 					        stream ) ) != TT_Err_Ok )
         goto Fail5;
@@ -3010,7 +3009,7 @@
                                                 input_offset, base_offset,
                                                 stream ) ) != TT_Err_Ok )
         goto Fail4;
-    if ( ( error = Load_EmptyOrClassDefinition( &ccsf2->LookaheadClassDef, 65535,
+    if ( ( error = Load_EmptyOrClassDefinition( &ccsf2->LookaheadClassDef, count,
                                                 lookahead_offset, base_offset,
                                                 stream ) ) != TT_Err_Ok )
       goto Fail3;
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/opentype/ftxopen.c my-gtk/pango/pango/opentype/ftxopen.c
--- from-cvs/pango/pango/opentype/ftxopen.c	Sat May 24 15:24:58 2003
+++ my-gtk/pango/pango/opentype/ftxopen.c	Thu Sep 12 21:49:06 2002
@@ -1266,8 +1266,7 @@
     FT_UShort*  cva = cdf1->ClassValueArray;
 
 
-    if ( index )
-      *index = 0;
+    *index = 0;
 
     if ( glyphID >= cdf1->StartGlyph &&
          glyphID <= cdf1->StartGlyph + cdf1->GlyphCount )
Only in my-gtk/pango/pango/opentype: o.txt
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/opentype/pango-ot-info.c my-gtk/pango/pango/opentype/pango-ot-info.c
--- from-cvs/pango/pango/opentype/pango-ot-info.c	Sat May 24 15:24:58 2003
+++ my-gtk/pango/pango/opentype/pango-ot-info.c	Sun Jan 12 13:27:06 2003
@@ -175,21 +175,6 @@
     }
 }
 
-static gboolean
-set_unicode_charmap (FT_Face face)
-{
-  int charmap;
-
-  for (charmap = 0; charmap < face->num_charmaps; charmap++)
-    if (face->charmaps[charmap]->encoding == ft_encoding_unicode)
-      {
-	FT_Error error = FT_Set_Charmap(face, face->charmaps[charmap]);
-	return error == FT_Err_Ok;
-      }
-
-  return FALSE;
-}
-
 /* Synthesize a GDEF table using the font's charmap and the
  * unicode property database. We'll fill in class definitions
  * for glyphs not in the charmap as we walk through the tables.
@@ -203,13 +188,9 @@
   FT_ULong charcode;
   FT_UInt glyph;
   int i, j;
-  FT_CharMap old_charmap;
   
-  old_charmap = info->face->charmap;
-
-  if (!old_charmap || !old_charmap->encoding != ft_encoding_unicode)
-    if (!set_unicode_charmap (info->face))
-      return;
+  if (info->face->charmap->encoding != ft_encoding_unicode)
+    return;
 
   glyph_infos = g_array_new (FALSE, FALSE, sizeof (GlyphInfo));
 
@@ -221,13 +202,13 @@
     {
       GlyphInfo glyph_info;
 
-      if (glyph <= 65535)
-	{
-	  glyph_info.glyph = glyph;
-	  glyph_info.class = get_glyph_class (charcode);
-	  
-	  g_array_append_val (glyph_infos, glyph_info);
-	}
+      if (glyph > 65535)
+	continue;
+
+      glyph_info.glyph = glyph;
+      glyph_info.class = get_glyph_class (charcode);
+
+      g_array_append_val (glyph_infos, glyph_info);
       
       charcode = FT_Get_Next_Char (info->face, charcode, &glyph);
     }
@@ -259,9 +240,6 @@
 
   g_free (glyph_indices);
   g_free (classes);
-
-  if (old_charmap && info->face->charmap != old_charmap)
-    FT_Set_Charmap (info->face, old_charmap);
 }
 
 TTO_GDEF 
Only in my-gtk/pango/pango/opentype: pango-ot.def
Only in my-gtk/pango/pango: pang.def
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pango-attributes.c my-gtk/pango/pango/pango-attributes.c
--- from-cvs/pango/pango/pango-attributes.c	Sat May 24 15:24:50 2003
+++ my-gtk/pango/pango/pango-attributes.c	Fri Dec 20 17:09:22 2002
@@ -1244,7 +1244,7 @@
 {
   GList *tmp_list;
 
-  g_return_val_if_fail (iterator != NULL, FALSE);
+  g_return_val_if_fail (iterator != NULL, -1);
 
   if (!iterator->next_attribute && !iterator->attribute_stack)
     return FALSE;
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pango-coverage.c my-gtk/pango/pango/pango-coverage.c
--- from-cvs/pango/pango/pango-coverage.c	Sat May 24 15:24:50 2003
+++ my-gtk/pango/pango/pango-coverage.c	Fri Feb 14 22:22:46 2003
@@ -217,7 +217,7 @@
       int old_n_blocks = coverage->n_blocks;
 
       coverage->n_blocks =
-	N_BLOCKS_INCREMENT * ((block_index + N_BLOCKS_INCREMENT) / N_BLOCKS_INCREMENT);
+	N_BLOCKS_INCREMENT * ((block_index + N_BLOCKS_INCREMENT - 1) / N_BLOCKS_INCREMENT);
       
       coverage->blocks = g_renew (PangoBlockInfo, coverage->blocks, coverage->n_blocks);
       memset (coverage->blocks + old_n_blocks, 0,
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pango-engine.h my-gtk/pango/pango/pango-engine.h
--- from-cvs/pango/pango/pango-engine.h	Sat May 24 15:24:50 2003
+++ my-gtk/pango/pango/pango-engine.h	Fri Oct 05 18:51:12 2001
@@ -94,24 +94,6 @@
 PangoEngine *script_engine_load   (const char       *id);
 void         script_engine_unload (PangoEngine      *engine);
 
-/* Macro used for possibly builtin Pango modules. Not useful
- * for externally build modules. If we are compiling a module standaline,
- * then we name the entry points script_engine_list, etc. But if we
- * are compiling it for inclusion directly in Pango, then we need them to
- * to have distinct names for this module, so we prepend a prefix.
- *
- * The two intermediate macros are to deal with details of the C
- * preprocessor; token pasting tokens must be function arguments,
- * and macro substitution isn't used on function arguments that
- * are used for token pasting.
- */
-#ifdef PANGO_MODULE_PREFIX
-#define PANGO_MODULE_ENTRY(func) _PANGO_MODULE_ENTRY2(PANGO_MODULE_PREFIX,func)
-#define _PANGO_MODULE_ENTRY2(prefix,func) _PANGO_MODULE_ENTRY3(prefix,func)
-#define _PANGO_MODULE_ENTRY3(prefix,func) prefix##_script_engine_##func
-#else
-#define PANGO_MODULE_ENTRY(func) script_engine_##func
-#endif
 
 #endif /* PANGO_ENABLE_ENGINE */
 
Only in my-gtk/pango/pango: pango-enum-types.c
Only in my-gtk/pango/pango: pango-enum-types.h
Only in my-gtk/pango/pango: pango-fonts-aa.bmp
Only in my-gtk/pango/pango: pango-fonts-na.bmp
Only in my-gtk/pango/pango: pango-fonts-wo.png
Only in my-gtk/pango/pango: pango-fonts.bmp
Only in my-gtk/pango/pango: pango-fonts.png
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pango-layout.c my-gtk/pango/pango/pango-layout.c
--- from-cvs/pango/pango/pango-layout.c	Sat May 24 15:24:50 2003
+++ my-gtk/pango/pango/pango-layout.c	Fri Feb 14 22:22:48 2003
@@ -3977,18 +3977,21 @@
 update_run (PangoLayoutIter *iter,
 	    int              run_start_index)
 {
+  int old_run_width;
   Extents *line_ext;
 
   line_ext = (Extents*)iter->line_extents_link->data;
   
-  /* Note that in iter_new() the iter->run_logical_rect.width
-   * is garbage but we don't use it since we're on the first run of
+  /* Note that in iter_new() the old_run_width is garbage,
+   * but we don't use it since we're on the first run of
    * a line.
    */
+  old_run_width = iter->run_logical_rect.width;
+
   if (iter->run_list_link == iter->line->runs)
     iter->run_x = line_ext->logical_rect.x;
   else
-    iter->run_x += iter->run_logical_rect.width;
+    iter->run_x += old_run_width;
   
   if (iter->run)
     {
Only in my-gtk/pango/pango: pango-monospace.png
Only in my-gtk/pango/pango: pango-sans.png
Only in my-gtk/pango/pango: pango-serif.png
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pango.def my-gtk/pango/pango/pango.def
--- from-cvs/pango/pango/pango.def	Fri Nov 23 13:56:58 2001
+++ my-gtk/pango/pango/pango.def	Sat Mar 15 19:51:12 2003
@@ -7,12 +7,14 @@
 	pango_attr_iterator_copy
 	pango_attr_iterator_destroy
 	pango_attr_iterator_get
+	pango_attr_iterator_get_attrs
 	pango_attr_iterator_get_font
 	pango_attr_iterator_next
 	pango_attr_iterator_range
 	pango_attr_language_new
 	pango_attr_list_change
 	pango_attr_list_copy
+	pango_attr_list_filter
 	pango_attr_list_get_iterator
 	pango_attr_list_get_type
 	pango_attr_list_insert
@@ -134,6 +136,8 @@
 	pango_get_log_attrs
 	pango_get_mirror_char
 	pango_get_sysconf_subdirectory
+	pango_glyph_item_apply_attrs
+	pango_glyph_item_split
 	pango_glyph_string_copy
 	pango_glyph_string_extents
 	pango_glyph_string_extents_range
Only in my-gtk/pango/pango: pango.rc
Only in my-gtk/pango/pango: pango2.def
Only in from-cvs/pango/pango: pangofc-font.c
Only in from-cvs/pango/pango: pangofc-font.h
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoft2-fontmap.c my-gtk/pango/pango/pangoft2-fontmap.c
--- from-cvs/pango/pango/pangoft2-fontmap.c	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangoft2-fontmap.c	Sat Mar 15 18:04:56 2003
@@ -169,7 +169,7 @@
  * Sets a function that will be called to do final configuration
  * substitution on a #FcPattern before it is used to load
  * the font. This function can be used to do things like set
- * hinting and antialiasing options.
+ * hinting and antiasing options.
  *
  * Since: 1.2
  **/
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoft2-private.h my-gtk/pango/pango/pangoft2-private.h
--- from-cvs/pango/pango/pangoft2-private.h	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangoft2-private.h	Sat Mar 15 18:04:56 2003
@@ -59,7 +59,7 @@
 
 struct _PangoFT2Font
 {
-  PangoFcFont font;
+  PangoFont font;
 
   FcPattern *font_pattern;
   FT_Face face;
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoft2.c my-gtk/pango/pango/pangoft2.c
--- from-cvs/pango/pango/pangoft2.c	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangoft2.c	Sat Mar 15 18:04:56 2003
@@ -34,11 +34,6 @@
 #include "pangoft2.h"
 #include "pangoft2-private.h"
 
-/* for compatibility with older freetype versions */
-#ifndef FT_LOAD_TARGET_MONO
-#define FT_LOAD_TARGET_MONO  FT_LOAD_MONOCHROME
-#endif
-
 #define PANGO_TYPE_FT2_FONT              (pango_ft2_font_get_type ())
 #define PANGO_FT2_FONT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FT2_FONT, PangoFT2Font))
 #define PANGO_FT2_FONT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FT2_FONT, PangoFT2FontClass))
@@ -51,7 +46,7 @@
 
 struct _PangoFT2FontClass
 {
-  PangoFcFontClass parent_class;
+  PangoFontClass parent_class;
 };
 
 struct _PangoFT2MetricsInfo
@@ -87,18 +82,6 @@
 static PangoFontMetrics *    pango_ft2_font_get_metrics       (PangoFont            *font,
 							       PangoLanguage        *language);
   
-static FT_Face    pango_ft2_font_real_lock_face         (PangoFcFont *font);
-static void       pango_ft2_font_real_unlock_face       (PangoFcFont *font);
-static gboolean   pango_ft2_font_real_has_char          (PangoFcFont *font,
-							 gunichar     wc);
-static guint      pango_ft2_font_real_get_glyph         (PangoFcFont *font,
-							 gunichar     wc);
-static PangoGlyph pango_ft2_font_real_get_unknown_glyph (PangoFcFont *font,
-							 gunichar     wc);
-static int        pango_ft2_font_real_get_kerning       (PangoFcFont *font,
-							 PangoGlyph   left,
-							 PangoGlyph   right);
-
 static void                  pango_ft2_get_item_properties    (PangoItem      	    *item,
 							       PangoUnderline 	    *uline,
 							       PangoAttrColor 	    *fg_color,
@@ -209,48 +192,37 @@
  * 
  * Returns the native FreeType2 FT_Face structure used for this PangoFont.
  * This may be useful if you want to use FreeType2 functions directly.
- *
- * Use pango_fc_font_get_face() instead.
  * 
  * Return value: a pointer to a #FT_Face structure, with the size set correctly
  **/
 FT_Face
-pango_ft2_font_get_face (PangoFont *font)
+pango_ft2_font_get_face (PangoFont      *font)
 {
   PangoFT2Font *ft2font = (PangoFT2Font *)font;
   FT_Error error;
   FcPattern *pattern;
   FcChar8 *filename;
-  FcBool antialias, hinting, autohint;
+  FcBool hinting, autohint;
   int id;
 
   pattern = ft2font->font_pattern;
 
   if (!ft2font->face)
     {
-      ft2font->load_flags = 0;
-
-      /* disable antialiasing if requested */
-      if (FcPatternGetBool (pattern,
-                            FC_ANTIALIAS, 0, &antialias) != FcResultMatch)
-	antialias = FcTrue;
+      /* If we add support for not antialising, then we should
+       * need to conditionalize NO_BITMAP on that.
+       */
+      ft2font->load_flags = FT_LOAD_NO_BITMAP;
 
-      if (antialias)
-        ft2font->load_flags |= FT_LOAD_NO_BITMAP;
-      else
-	ft2font->load_flags |= FT_LOAD_TARGET_MONO;
-
       /* disable hinting if requested */
-      if (FcPatternGetBool (pattern,
-                            FC_HINTING, 0, &hinting) != FcResultMatch)
+      if (FcPatternGetBool (pattern, FC_HINTING, 0, &hinting) != FcResultMatch)
 	hinting = FcTrue;
 
       if (!hinting)
         ft2font->load_flags |= FT_LOAD_NO_HINTING;
 
       /* force autohinting if requested */
-      if (FcPatternGetBool (pattern,
-                            FC_AUTOHINT, 0, &autohint) != FcResultMatch)
+      if (FcPatternGetBool (pattern, FC_AUTOHINT, 0, &autohint) != FcResultMatch)
 	autohint = FcFalse;
 
       if (autohint)
@@ -274,8 +246,7 @@
       
       if (!set_unicode_charmap (ft2font->face))
 	{
-	  g_warning ("Unable to load unicode charmap from font file %s",
-                     filename);
+	  g_warning ("Unable to load unicode charmap from font file %s", filename);
 	  
 	  FT_Done_Face (ft2font->face);
 	  ft2font->face = NULL;
@@ -314,7 +285,7 @@
         (GInstanceInitFunc) pango_ft2_font_init,
       };
       
-      object_type = g_type_register_static (PANGO_TYPE_FC_FONT,
+      object_type = g_type_register_static (PANGO_TYPE_FONT,
                                             "PangoFT2Font",
                                             &object_info, 0);
     }
@@ -339,8 +310,7 @@
 {
   GObjectClass *object_class = G_OBJECT_CLASS (class);
   PangoFontClass *font_class = PANGO_FONT_CLASS (class);
-  PangoFcFontClass *fc_font_class = PANGO_FC_FONT_CLASS (class);
-  
+
   parent_class = g_type_class_peek_parent (class);
   
   object_class->finalize = pango_ft2_font_finalize;
@@ -350,13 +320,6 @@
   font_class->find_shaper = pango_ft2_font_find_shaper;
   font_class->get_glyph_extents = pango_ft2_font_get_glyph_extents;
   font_class->get_metrics = pango_ft2_font_get_metrics;
-  
-  fc_font_class->lock_face = pango_ft2_font_real_lock_face;
-  fc_font_class->unlock_face = pango_ft2_font_real_unlock_face;
-  fc_font_class->has_char = pango_ft2_font_real_has_char;
-  fc_font_class->get_glyph = pango_ft2_font_real_get_glyph;
-  fc_font_class->get_unknown_glyph = pango_ft2_font_real_get_unknown_glyph;
-  fc_font_class->get_kerning = pango_ft2_font_real_get_kerning;
 }
 
 static void
@@ -379,13 +342,11 @@
   
   if (face)
     {
-      PangoFT2Font *ft2font = (PangoFT2Font *) font;
-
+      PangoFT2Font *ft2font = (PangoFT2Font *)font;
+	    
       /* Draw glyph */
       FT_Load_Glyph (face, glyph_index, ft2font->load_flags);
-      FT_Render_Glyph (face->glyph,
-		       (ft2font->load_flags & FT_LOAD_TARGET_MONO ?
-			ft_render_mode_mono : ft_render_mode_normal));
+      FT_Render_Glyph (face->glyph, ft_render_mode_normal);
 
       rendered->bitmap = face->glyph->bitmap;
       rendered->bitmap.buffer = g_memdup (face->glyph->bitmap.buffer,
@@ -502,7 +463,7 @@
 		    for (ix = x_start; ix < x_limit; ix++)
 		      {
 			if ((*src) & (1 << (7 - (ix % 8))))
-			  *dest |= 0xff;
+			  *dest |= (1 << (7 - (ix % 8)));
 			if ((ix % 8) == 7)
 			  src++;
 			dest++;
@@ -608,8 +569,6 @@
  * @right: the right #PangoGlyph
  * 
  * Retrieves kerning information for a combination of two glyphs.
- *
- * Use pango_fc_font_get_kerning() instead.
  * 
  * Return value: The amount of kerning (in Pango units) to apply for 
  * the given combination of glyphs.
@@ -619,7 +578,27 @@
 			    PangoGlyph left,
 			    PangoGlyph right)
 {
-  return pango_fc_font_get_kerning (PANGO_FC_FONT (font), left, right);
+  FT_Face face;
+  FT_Error error;
+  FT_Vector kerning;
+
+  face = pango_ft2_font_get_face (font);
+  if (!face)
+    return 0;
+
+  if (!FT_HAS_KERNING (face))
+    return 0;
+
+  if (!left || !right)
+    return 0;
+
+  error = FT_Get_Kerning (face, left, right,
+			  ft_kerning_default, &kerning);
+  if (error != FT_Err_Ok)
+    g_warning ("FT_Get_Kerning returns error: %s",
+	       _pango_ft2_ft_strerror (error));
+
+  return PANGO_UNITS_26_6 (kerning.x);
 }
 
 static PangoFontMetrics *
@@ -687,79 +666,6 @@
   return pango_font_metrics_ref (info->metrics);
 }
 
-static FT_Face
-pango_ft2_font_real_lock_face (PangoFcFont *font)
-{
-  return pango_ft2_font_get_face ((PangoFont *)font);
-}
-
-static void
-pango_ft2_font_real_unlock_face (PangoFcFont *font)
-{
-}
-
-static gboolean
-pango_ft2_font_real_has_char (PangoFcFont *font,
-			      gunichar     wc)
-{
-  FT_Face face;
-  FT_UInt index;
-
-  face = pango_ft2_font_get_face ((PangoFont *)font);
-  index = FT_Get_Char_Index (face, wc);
-  return (index && index <= face->num_glyphs);
-}
-				   
-static guint
-pango_ft2_font_real_get_glyph (PangoFcFont *font,
-			       gunichar     wc)
-{
-  FT_Face face;
-  FT_UInt index;
-
-  face = pango_ft2_font_get_face ((PangoFont *)font);
-  index = FT_Get_Char_Index (face, wc);
-  if (index && index <= face->num_glyphs)
-    return index;
-
-  return 0;
-}
-
-static PangoGlyph
-pango_ft2_font_real_get_unknown_glyph (PangoFcFont *font,
-				       gunichar     wc)
-{
-  return 0;
-}
-
-static int
-pango_ft2_font_real_get_kerning (PangoFcFont *font,
-				 PangoGlyph   left,
-				 PangoGlyph   right)
-{
-  FT_Face face;
-  FT_Error error;
-  FT_Vector kerning;
-
-  face = pango_ft2_font_get_face ((PangoFont *)font);
-  if (!face)
-    return 0;
-
-  if (!FT_HAS_KERNING (face))
-    return 0;
-
-  if (!left || !right)
-    return 0;
-
-  error = FT_Get_Kerning (face, left, right,
-			  ft_kerning_default, &kerning);
-  if (error != FT_Err_Ok)
-    g_warning ("FT_Get_Kerning returns error: %s",
-	       _pango_ft2_ft_strerror (error));
-
-  return PANGO_UNITS_26_6 (kerning.x);
-}
-
 static gboolean
 pango_ft2_free_glyph_info_callback (gpointer key, gpointer value, gpointer data)
 {
@@ -872,8 +778,6 @@
  * 
  * Return the index of a glyph suitable for drawing unknown characters.
  * 
- * Use pango_fc_font_get_unknown_glyph() instead.
- * 
  * Return value: a glyph index into @font
  **/
 PangoGlyph
@@ -991,35 +895,80 @@
 void 
 pango_ft2_render_layout (FT_Bitmap   *bitmap,
 			 PangoLayout *layout,
-			 int          x, 
-			 int          y)
+			 int         x, 
+			 int         y)
 {
-  PangoLayoutIter *iter;
+  PangoRectangle logical_rect;
+  GSList *tmp_list;
+  PangoAlignment align;
+  int indent;
+  int width;
+  int y_offset = 0;
 
+  gboolean first = TRUE;
+  
   g_return_if_fail (bitmap != NULL);
-  g_return_if_fail (PANGO_IS_LAYOUT (layout));
+  g_return_if_fail (layout != NULL);
+
+  indent = pango_layout_get_indent (layout);
+  width = pango_layout_get_width (layout);
+  align = pango_layout_get_alignment (layout);
 
-  iter = pango_layout_get_iter (layout);
+  PING (("x:%d y:%d indent:%d width:%d", x, y, indent, width));
 
-  do
+  if (width == -1 && align != PANGO_ALIGN_LEFT)
     {
-      PangoRectangle   logical_rect;
-      PangoLayoutLine *line;
-      int              baseline;
-      
-      line = pango_layout_iter_get_line (iter);
-      
-      pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
-      baseline = pango_layout_iter_get_baseline (iter);
-      
-      pango_ft2_render_layout_line (bitmap,
-                                    line,
-				    x + PANGO_PIXELS (logical_rect.x),
-				    y + PANGO_PIXELS (baseline));
+      pango_layout_get_extents (layout, NULL, &logical_rect);
+      width = logical_rect.width;
     }
-  while (pango_layout_iter_next_line (iter));
+  
+  tmp_list = pango_layout_get_lines (layout);
+  while (tmp_list)
+    {
+      PangoLayoutLine *line = tmp_list->data;
+      int x_offset;
+      
+      pango_layout_line_get_extents (line, NULL, &logical_rect);
+
+      if (width != 1 && align == PANGO_ALIGN_RIGHT)
+	x_offset = width - logical_rect.width;
+      else if (width != 1 && align == PANGO_ALIGN_CENTER)
+	x_offset = (width - logical_rect.width) / 2;
+      else
+	x_offset = 0;
+
+      if (first)
+	{
+	  if (indent > 0)
+	    {
+	      if (align == PANGO_ALIGN_LEFT)
+		x_offset += indent;
+	      else
+		x_offset -= indent;
+	    }
+
+	  first = FALSE;
+	}
+      else
+	{
+	  if (indent < 0)
+	    {
+	      if (align == PANGO_ALIGN_LEFT)
+		x_offset -= indent;
+	      else
+		x_offset += indent;
+	    }
+	}
+
+      PING (("x_offset:%d y_offset:%d logical_rect.y:%d logical_rect.height:%d", x_offset, y_offset, logical_rect.y, logical_rect.height));
 
-  pango_layout_iter_free (iter);
+      pango_ft2_render_layout_line (bitmap, line,
+				    x + PANGO_PIXELS (x_offset),
+				    y + PANGO_PIXELS (y_offset - logical_rect.y));
+
+      y_offset += logical_rect.height;
+      tmp_list = tmp_list->next;
+    }
 }
 
 /* This utility function is duplicated here and in pango-layout.c; should it be
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoft2.def my-gtk/pango/pango/pangoft2.def
--- from-cvs/pango/pango/pangoft2.def	Fri Mar 08 13:28:12 2002
+++ my-gtk/pango/pango/pangoft2.def	Sat May 24 14:54:34 2003
@@ -9,13 +9,8 @@
 	pango_ft2_render_layout
 	pango_ft2_render_layout_line
 	pango_ft2_shutdown_display
-	pango_ot_info_find_feature
-	pango_ot_info_find_language
-	pango_ot_info_find_script
-	pango_ot_info_list_features
-	pango_ot_info_list_languages
-	pango_ot_info_list_scripts
-	pango_ot_info_new
-	pango_ot_ruleset_add_feature
-	pango_ot_ruleset_new
-	pango_ot_ruleset_shape
+	pango_ft2_font_map_create_context
+	pango_ft2_font_map_get_type
+	pango_ft2_font_map_new
+	pango_ft2_font_map_set_default_substitute
+	pango_ft2_font_map_set_resolution
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoft2.h my-gtk/pango/pango/pangoft2.h
--- from-cvs/pango/pango/pangoft2.h	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangoft2.h	Wed Jul 24 21:36:30 2002
@@ -23,10 +23,11 @@
 #ifndef __PANGOFT2_H__
 #define __PANGOFT2_H__
 
+#include <freetype/freetype.h>
+
 #include <fontconfig/fontconfig.h>
 
 #include <pango/pango-layout.h>
-#include <pango/pangofc-font.h>
 
 G_BEGIN_DECLS
 
@@ -78,7 +79,6 @@
 
 /* API for rendering modules
  */
-#ifndef PANGO_DISABLE_DEPRECATED
 PangoGlyph     pango_ft2_get_unknown_glyph (PangoFont       *font);
 int            pango_ft2_font_get_kerning  (PangoFont       *font,
 					    PangoGlyph       left,
@@ -86,7 +86,6 @@
 FT_Face        pango_ft2_font_get_face     (PangoFont       *font);
 PangoCoverage *pango_ft2_font_get_coverage (PangoFont       *font,
 					    PangoLanguage   *language);
-#endif /* PANGO_DISABLE_DEPRECATED */
 
 G_END_DECLS
 
Only in my-gtk/pango/pango: pangoft2.rc
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangowin32.c my-gtk/pango/pango/pangowin32.c
--- from-cvs/pango/pango/pangowin32.c	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangowin32.c	Sat May 24 21:54:32 2003
@@ -813,30 +813,205 @@
 			   int          x, 
 			   int          y)
 {
-  PangoLayoutIter *iter;
+  PangoRectangle logical_rect;
+  GSList *tmp_list;
+  PangoAlignment align;
+  int indent;
+  int width;
+  int y_offset = 0;
 
-  g_return_if_fail (hdc != NULL);
-  g_return_if_fail (PANGO_IS_LAYOUT (layout));
+  gboolean first = TRUE;
+  
+  g_return_if_fail (layout != NULL);
 
-  do
+  indent = pango_layout_get_indent (layout);
+  width = pango_layout_get_width (layout);
+  align = pango_layout_get_alignment (layout);
+
+  if (width == -1 && align != PANGO_ALIGN_LEFT)
     {
-      PangoRectangle   logical_rect;
-      PangoLayoutLine *line;
-      int              baseline;
-      
-      line = pango_layout_iter_get_line (iter);
-      
-      pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
-      baseline = pango_layout_iter_get_baseline (iter);
+      pango_layout_get_extents (layout, NULL, &logical_rect);
+      width = logical_rect.width;
+    }
+  
+  tmp_list = pango_layout_get_lines (layout);
+  while (tmp_list)
+    {
+      PangoLayoutLine *line = tmp_list->data;
+      int x_offset;
       
-      pango_win32_render_layout_line (hdc,
-                                      line,
-                                      x + PANGO_PIXELS (logical_rect.x),
-                                      y + PANGO_PIXELS (baseline));
+      pango_layout_line_get_extents (line, NULL, &logical_rect);
+
+      if (width != 1 && align == PANGO_ALIGN_RIGHT)
+	x_offset = width - logical_rect.width;
+      else if (width != 1 && align == PANGO_ALIGN_CENTER)
+	x_offset = (width - logical_rect.width) / 2;
+      else
+	x_offset = 0;
+
+      if (first)
+	{
+	  if (indent > 0)
+	    {
+	      if (align == PANGO_ALIGN_LEFT)
+		x_offset += indent;
+	      else
+		x_offset -= indent;
+	    }
+
+	  first = FALSE;
+	}
+      else
+	{
+	  if (indent < 0)
+	    {
+	      if (align == PANGO_ALIGN_LEFT)
+		x_offset -= indent;
+	      else
+		x_offset += indent;
+	    }
+	}
+	  
+      pango_win32_render_layout_line (hdc, line,
+				      x + PANGO_PIXELS (x_offset),
+				      y + PANGO_PIXELS (y_offset - logical_rect.y));
+
+      y_offset += logical_rect.height;
+      tmp_list = tmp_list->next;
+    }
+}
+
+void
+pango_win32_render_layout_to_bitmap (PangoBitmap *bitmap,
+                                   PangoLayout *layout,
+                                   int          x, 
+                                   int          y)
+{
+  /* render into 8 bit given bitmap */
+  /* maybe something along the line of
+      res = GetGlyphOutlineA (pango_win32_hdc, 
+			      glyph_index,
+			      GGO_METRICS | GGO_GLYPH_INDEX,
+			      &gm, 
+			      0, NULL,
+			      &m);
+   or :
+   */
+  static HPALETTE grayPal = NULL;
+  struct
+  {
+    WORD palVersion;
+    WORD palNumEntries;
+    PALETTEENTRY palPalEntry[256];
+  } logpal;
+
+  static struct
+  {
+    BITMAPINFOHEADER bmiHeader;
+    WORD             bmiColors[256];
+  } bmi;
+
+  HDC hMemDC;
+  HBITMAP hbm8, holdbmp;
+  char *pbits8; 
+  int i;
+
+  if (!grayPal)
+    {
+
+      logpal.palVersion = 0x300;
+      logpal.palNumEntries = 256;
+
+      for (i = 0; i < 256; i++)
+        {
+          logpal.palPalEntry[i].peRed = 
+            logpal.palPalEntry[i].peGreen = 
+            logpal.palPalEntry[i].peBlue = i;
+          logpal.palPalEntry[i].peFlags = 0;
+
+          bmi.bmiColors[i] = i;
+        }
+      grayPal = CreatePalette ((LOGPALETTE *) &logpal);
+      g_return_if_fail (grayPal);
     }
-  while (pango_layout_iter_next_line (iter));
+
+  hMemDC = CreateCompatibleDC (NULL);
+  g_return_if_fail (hMemDC);
+
+  SelectPalette (hMemDC, grayPal, FALSE);
+  RealizePalette (hMemDC);
+  
+  /* Create a 8 bits depth bitmap and select it into the memory DC */
+  bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER);
+  bmi.bmiHeader.biWidth = bitmap->pitch;
+  bmi.bmiHeader.biHeight = bitmap->rows;
+  bmi.bmiHeader.biPlanes = 1;
+  bmi.bmiHeader.biBitCount = 8;
+  bmi.bmiHeader.biCompression = BI_RGB;
+  bmi.bmiHeader.biSizeImage = 0;
+  bmi.bmiHeader.biXPelsPerMeter = 0;
+  bmi.bmiHeader.biYPelsPerMeter = 0;
+  bmi.bmiHeader.biClrUsed = 256;
+  bmi.bmiHeader.biClrImportant = 256;
+
+  hbm8 = CreateDIBSection (hMemDC, (BITMAPINFO *)&bmi,
+                           DIB_PAL_COLORS, &pbits8, NULL, 0);
+
+  holdbmp = (HBITMAP) SelectObject (hMemDC, hbm8);
+
+  /* erase background */
+  {
+    HBRUSH hBr; 
+    HRGN   hRgn;
+
+    hRgn = CreateRectRgn (0, 0, bitmap->pitch, bitmap->rows);
+    hBr = CreateSolidBrush ( RGB (0, 0, 0));
+
+    FillRgn (hMemDC, hRgn, hBr);
+
+    DeleteObject (hBr);
+    DeleteObject (hRgn);
+  }
+
+  /* text out prerequisites */
+  SetBkColor (hMemDC, RGB (0,0,0));
+  SetTextColor (hMemDC, RGB (255,255,255));
+
+  SetBkMode (hMemDC, TRANSPARENT);
+  SetTextAlign (hMemDC, TA_LEFT|TA_BASELINE|TA_NOUPDATECP);
+
+  /* do it */
+  pango_win32_render_layout (hMemDC, layout, x, y);
+
+  GdiFlush (); /* make sure pbits8 is valid */
+
+  SelectObject (hMemDC, holdbmp);
+  /* copy data, its inverted */
+  for (i = 0; i < bitmap->rows; i++)
+    memcpy (bitmap->buffer + (i * bitmap->pitch), 
+            pbits8 + (bitmap->rows - i - 1) * bitmap->pitch, 
+            bitmap->pitch);
+
+  /* Test */
+  if (0)
+  {
+    int i;
+    for (i = 0; i < bitmap->rows; i++)
+      if (i < (bitmap->rows / 2))
+        {
+          memset (bitmap->buffer + (i * bitmap->pitch), 255, bitmap->pitch / 2);
+          memset (bitmap->buffer + (i * bitmap->pitch + bitmap->pitch / 2), 0, bitmap->pitch / 2);
+        }
+      else
+        {
+          memset (bitmap->buffer + (i * bitmap->pitch), 0, bitmap->pitch / 2);
+          memset (bitmap->buffer + (i * bitmap->pitch + bitmap->pitch / 2), 255, bitmap->pitch / 2);
+        }
+  }
 
-  pango_layout_iter_free (iter);  
+  /* clean up */
+  DeleteDC (hMemDC);
+  DeleteObject (hbm8);
 }
 
 /* This utility function is duplicated here and in pango-layout.c; should it be
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangowin32.def my-gtk/pango/pango/pangowin32.def
--- from-cvs/pango/pango/pangowin32.def	Sat Nov 09 20:32:48 2002
+++ my-gtk/pango/pango/pangowin32.def	Sat May 24 21:55:36 2003
@@ -21,4 +21,5 @@
 	pango_win32_render
 	pango_win32_render_layout
 	pango_win32_render_layout_line
+	pango_win32_render_layout_to_bitmap
 	pango_win32_shutdown_display
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangowin32.h my-gtk/pango/pango/pangowin32.h
--- from-cvs/pango/pango/pangowin32.h	Sat Nov 09 20:32:48 2002
+++ my-gtk/pango/pango/pangowin32.h	Sat May 24 21:51:10 2003
@@ -34,8 +34,27 @@
 #ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x0501	/* To get ClearType-related macros */
 #endif
+#define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #undef STRICT
+
+/* should be in pango-types.h */
+typedef struct _PangoBitmap PangoBitmap;
+
+struct _PangoBitmap
+{
+  int   width;
+  int   rows;
+  int   pitch;
+  int   num_grays;
+  char *buffer;
+};
+
+void
+pango_win32_render_layout_to_bitmap (PangoBitmap *bitmap,
+                                     PangoLayout *layout,
+                                     int          x, 
+                                     int          y);
 
 #define PANGO_RENDER_TYPE_WIN32 "PangoRenderWin32"
 
Only in my-gtk/pango/pango: pangowin32.rc
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangox.c my-gtk/pango/pango/pangox.c
--- from-cvs/pango/pango/pangox.c	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangox.c	Fri Dec 20 17:09:26 2002
@@ -1645,32 +1645,72 @@
 		       int              x, 
 		       int              y)
 {
-  PangoLayoutIter *iter;
+  PangoRectangle logical_rect;
+  GSList *tmp_list;
+  PangoAlignment align;
+  int indent;
+  int width;
+  int y_offset = 0;
 
+  gboolean first = TRUE;
+  
   g_return_if_fail (display != NULL);
-  g_return_if_fail (PANGO_IS_LAYOUT (layout));
+  g_return_if_fail (layout != NULL);
 
-  iter = pango_layout_get_iter (layout);
+  indent = pango_layout_get_indent (layout);
+  width = pango_layout_get_width (layout);
+  align = pango_layout_get_alignment (layout);
 
-  do
+  if (width == -1 && align != PANGO_ALIGN_LEFT)
     {
-      PangoRectangle   logical_rect;
-      PangoLayoutLine *line;
-      int              baseline;
-      
-      line = pango_layout_iter_get_line (iter);
-      
-      pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
-      baseline = pango_layout_iter_get_baseline (iter);
+      pango_layout_get_extents (layout, NULL, &logical_rect);
+      width = logical_rect.width;
+    }
+  
+  tmp_list = pango_layout_get_lines (layout);
+  while (tmp_list)
+    {
+      PangoLayoutLine *line = tmp_list->data;
+      int x_offset;
       
+      pango_layout_line_get_extents (line, NULL, &logical_rect);
+
+      if (width != 1 && align == PANGO_ALIGN_RIGHT)
+	x_offset = width - logical_rect.width;
+      else if (width != 1 && align == PANGO_ALIGN_CENTER)
+	x_offset = (width - logical_rect.width) / 2;
+      else
+	x_offset = 0;
+
+      if (first)
+	{
+	  if (indent > 0)
+	    {
+	      if (align == PANGO_ALIGN_LEFT)
+		x_offset += indent;
+	      else
+		x_offset -= indent;
+	    }
+
+	  first = FALSE;
+	}
+      else
+	{
+	  if (indent < 0)
+	    {
+	      if (align == PANGO_ALIGN_LEFT)
+		x_offset -= indent;
+	      else
+		x_offset += indent;
+	    }
+	}
+	  
       pango_x_render_layout_line (display, drawable, gc,
-                                  line,
-                                  x + PANGO_PIXELS (logical_rect.x),
-                                  y + PANGO_PIXELS (baseline));
-    }
-  while (pango_layout_iter_next_line (iter));
+				  line, x + x_offset / PANGO_SCALE, y + (y_offset - logical_rect.y) / PANGO_SCALE);
 
-  pango_layout_iter_free (iter);
+      y_offset += logical_rect.height;
+      tmp_list = tmp_list->next;
+    }
 }
 
 /* This utility function is duplicated here and in pango-layout.c; should it be
Only in my-gtk/pango/pango: pangox.def
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoxft-font.c my-gtk/pango/pango/pangoxft-font.c
--- from-cvs/pango/pango/pangoxft-font.c	Sat May 24 15:24:52 2003
+++ my-gtk/pango/pango/pangoxft-font.c	Sat Mar 15 18:04:56 2003
@@ -35,19 +35,12 @@
 
 #define PANGO_XFT_UNKNOWN_FLAG 0x10000000
 
-#define PANGO_SCALE_26_6 (PANGO_SCALE / (1<<6))
-#define PANGO_PIXELS_26_6(d)				\
-  (((d) >= 0) ?						\
-   ((d) + PANGO_SCALE_26_6 / 2) / PANGO_SCALE_26_6 :	\
-   ((d) - PANGO_SCALE_26_6 / 2) / PANGO_SCALE_26_6)
-#define PANGO_UNITS_26_6(d) (PANGO_SCALE_26_6 * (d))
-
 typedef struct _PangoXftFontClass    PangoXftFontClass;
 typedef struct _PangoXftMetricsInfo  PangoXftMetricsInfo;
 
 struct _PangoXftFontClass
 {
-  PangoFcFontClass  parent_class;
+  PangoFontClass  parent_class;
 };
 
 struct _PangoXftMetricsInfo
@@ -75,18 +68,6 @@
 static PangoFontMetrics *    pango_xft_font_get_metrics       (PangoFont        *font,
 							       PangoLanguage    *language);
 
-static FT_Face    pango_xft_font_real_lock_face         (PangoFcFont *font);
-static void       pango_xft_font_real_unlock_face       (PangoFcFont *font);
-static gboolean   pango_xft_font_real_has_char          (PangoFcFont *font,
-							 gunichar     wc);
-static guint      pango_xft_font_real_get_glyph         (PangoFcFont *font,
-							 gunichar     wc);
-static PangoGlyph pango_xft_font_real_get_unknown_glyph (PangoFcFont *font,
-							 gunichar     wc);
-static int        pango_xft_font_real_get_kerning       (PangoFcFont *font,
-							 PangoGlyph   left,
-							 PangoGlyph   right);
-
 static XftFont *xft_font_get_font (PangoFont *font);
 
 GType
@@ -109,7 +90,7 @@
         (GInstanceInitFunc) pango_xft_font_init,
       };
       
-      object_type = g_type_register_static (PANGO_TYPE_FC_FONT,
+      object_type = g_type_register_static (PANGO_TYPE_FONT,
                                             "PangoXftFont",
                                             &object_info, 0);
     }
@@ -128,7 +109,6 @@
 {
   GObjectClass *object_class = G_OBJECT_CLASS (class);
   PangoFontClass *font_class = PANGO_FONT_CLASS (class);
-  PangoFcFontClass *fc_font_class = PANGO_FC_FONT_CLASS (class);
 
   parent_class = g_type_class_peek_parent (class);
   
@@ -139,13 +119,6 @@
   font_class->find_shaper = pango_xft_font_find_shaper;
   font_class->get_glyph_extents = pango_xft_font_get_glyph_extents;
   font_class->get_metrics = pango_xft_font_get_metrics;
-
-  fc_font_class->lock_face = pango_xft_font_real_lock_face;
-  fc_font_class->unlock_face = pango_xft_font_real_unlock_face;
-  fc_font_class->has_char = pango_xft_font_real_has_char;
-  fc_font_class->get_glyph = pango_xft_font_real_get_glyph;
-  fc_font_class->get_unknown_glyph = pango_xft_font_real_get_unknown_glyph;
-  fc_font_class->get_kerning = pango_xft_font_real_get_kerning;
 }
 
 PangoXftFont *
@@ -743,76 +716,6 @@
   return xfont->xft_font;
 }
 
-static FT_Face
-pango_xft_font_real_lock_face (PangoFcFont *font)
-{
-  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);
-  
-  return XftLockFace (xft_font);
-}
-
-static void
-pango_xft_font_real_unlock_face (PangoFcFont *font)
-{
-  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);
-  
-  XftUnlockFace (xft_font);
-}
-
-static gboolean
-pango_xft_font_real_has_char (PangoFcFont *font,
-			      gunichar     wc)
-{
-  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);
-  
-  return XftCharExists (NULL, xft_font, wc);
-}
-
-static guint
-pango_xft_font_real_get_glyph (PangoFcFont *font,
-			       gunichar     wc)
-{
-  XftFont *xft_font = xft_font_get_font ((PangoFont *)font);
-  
-  return XftCharIndex (NULL, xft_font, wc);
-}
-
-static PangoGlyph
-pango_xft_font_real_get_unknown_glyph (PangoFcFont *font,
-				       gunichar     wc)
-{
-  return wc | PANGO_XFT_UNKNOWN_FLAG;
-}
-
-static int
-pango_xft_font_real_get_kerning (PangoFcFont *font,
-				 PangoGlyph   left,
-				 PangoGlyph   right)
-{
-  FT_Face face;
-  FT_Error error;
-  FT_Vector kerning;
-
-  face = pango_fc_font_lock_face (font);
-  if (!face)
-    return 0;
-
-  if (!FT_HAS_KERNING (face))
-    return 0;
-
-  if (!left || !right)
-    return 0;
-
-  error = FT_Get_Kerning (face, left, right,
-			  ft_kerning_default, &kerning);
-  if (error != FT_Err_Ok)
-    kerning.x = 0;
-
-  pango_fc_font_unlock_face (font);
-
-  return PANGO_UNITS_26_6 (kerning.x);
-}
-
 /**
  * pango_xft_font_get_font:
  * @font: a #PangoFont.
@@ -859,8 +762,6 @@
  * Returns the index of a glyph suitable for drawing @wc as an
  * unknown character.
  *
- * Use pango_fc_font_get_unknown_glyph() instead.
- *
  * Return value: a glyph index into @font.
  **/
 PangoGlyph
@@ -869,7 +770,7 @@
 {
   g_return_val_if_fail (PANGO_XFT_IS_FONT (font), -1);
 
-  return pango_fc_font_get_unknown_glyph (PANGO_FC_FONT (font), wc);
+  return wc | PANGO_XFT_UNKNOWN_FLAG;
 }
 
 /**
@@ -880,8 +781,6 @@
  * This face will be kept around until you call
  * pango_xft_font_unlock_face().
  *
- * Use pango_fc_font_lock_face() instead.
- *
  * Returns: the FreeType FT_Face associated with @font.
  *
  * Since: 1.2
@@ -889,9 +788,13 @@
 FT_Face
 pango_xft_font_lock_face (PangoFont *font)
 {
+  XftFont *xft_font;
+
   g_return_val_if_fail (PANGO_XFT_IS_FONT (font), NULL);
 
-  return pango_fc_font_lock_face (PANGO_FC_FONT (font));
+  xft_font = xft_font_get_font (font);
+  
+  return XftLockFace (xft_font);
 }
 
 /**
@@ -901,16 +804,18 @@
  * Releases a font previously obtained with
  * pango_xft_font_lock_face().
  *
- * Use pango_fc_font_unlock_face() instead.
- *
  * Since: 1.2
  **/
 void
 pango_xft_font_unlock_face (PangoFont *font)
 {
+  XftFont *xft_font;
+
   g_return_if_fail (PANGO_XFT_IS_FONT (font));
 
-  pango_fc_font_unlock_face (PANGO_FC_FONT (font));
+  xft_font = xft_font_get_font (font);
+  
+  XftUnlockFace (xft_font);
 }
 
 /**
@@ -922,8 +827,6 @@
  * for @font. If you only want to determine
  * whether the font has the glyph, use pango_xft_font_has_char().
  * 
- * Use pango_fc_font_get_glyph() instead.
- *
  * Return value: the glyph index, or 0, if the unicode
  *  codepoint doesn't exist in the font.
  *
@@ -933,9 +836,13 @@
 pango_xft_font_get_glyph (PangoFont *font,
 			  gunichar   wc)
 {
+  XftFont *xft_font;
+
   g_return_val_if_fail (PANGO_XFT_IS_FONT (font), 0);
 
-  return pango_fc_font_get_glyph (PANGO_FC_FONT (font), wc);
+  xft_font = xft_font_get_font (font);
+  
+  return XftCharIndex (NULL, xft_font, wc);
 }
 
 /**
@@ -945,8 +852,6 @@
  * 
  * Determines whether @font has a glyph for the codepoint @wc.
  * 
- * Use pango_fc_font_has_char() instead.
- *
  * Return value: %TRUE if @font has the requested codepoint.
  *
  * Since: 1.2
@@ -955,7 +860,11 @@
 pango_xft_font_has_char (PangoFont *font,
 			 gunichar   wc)
 {
+  XftFont *xft_font;
+
   g_return_val_if_fail (PANGO_XFT_IS_FONT (font), 0);
 
-  return pango_fc_font_has_char (PANGO_FC_FONT (font), wc);
+  xft_font = xft_font_get_font (font);
+  
+  return XftCharExists (NULL, xft_font, wc);
 }
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoxft-fontmap.c my-gtk/pango/pango/pangoxft-fontmap.c
--- from-cvs/pango/pango/pangoxft-fontmap.c	Sat May 24 15:24:54 2003
+++ my-gtk/pango/pango/pangoxft-fontmap.c	Sat Mar 15 18:04:58 2003
@@ -272,7 +272,7 @@
  * Sets a function that will be called to do final configuration
  * substitution on a #FcPattern before it is used to load
  * the font. This function can be used to do things like set
- * hinting and antialiasing options.
+ * hinting and antiasing options.
  *
  * Since: 1.2
  **/
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoxft-private.h my-gtk/pango/pango/pangoxft-private.h
--- from-cvs/pango/pango/pangoxft-private.h	Sat May 24 15:24:54 2003
+++ my-gtk/pango/pango/pangoxft-private.h	Sat Mar 15 18:04:58 2003
@@ -31,7 +31,7 @@
 
 struct _PangoXftFont
 {
-  PangoFcFont parent_instance;
+  PangoFont parent_instance;
 
   FcPattern *font_pattern;	    /* fully resolved pattern */
   XftFont *xft_font;		    /* created on demand */
diff --exclude-from=c:\util\tool\diff.ign -u -r from-cvs/pango/pango/pangoxft.h my-gtk/pango/pango/pangoxft.h
--- from-cvs/pango/pango/pangoxft.h	Sat May 24 15:24:54 2003
+++ my-gtk/pango/pango/pangoxft.h	Thu Sep 12 21:49:04 2002
@@ -25,7 +25,6 @@
 
 #include <pango/pango-context.h>
 #include <pango/pango-ot.h>
-#include <pango/pangofc-font.h>
 
 G_BEGIN_DECLS
 
@@ -84,17 +83,15 @@
 
 #ifdef PANGO_ENABLE_ENGINE
 XftFont *     pango_xft_font_get_font          (PangoFont *font);
-Display *     pango_xft_font_get_display       (PangoFont *font);
-#ifndef PANGO_DISABLE_DEPRECATED
 FT_Face       pango_xft_font_lock_face         (PangoFont *font);
 void	      pango_xft_font_unlock_face       (PangoFont *font);
 guint	      pango_xft_font_get_glyph	       (PangoFont *font,
 						gunichar   wc);
 gboolean      pango_xft_font_has_char          (PangoFont *font,
 						gunichar   wc);
+Display *     pango_xft_font_get_display       (PangoFont *font);
 PangoGlyph    pango_xft_font_get_unknown_glyph (PangoFont *font,
 						gunichar   wc);
-#endif /* PANGO_DISABLE_DEPRECATED */
 #endif /* PANGO_ENABLE_ENGINE */
 
 G_END_DECLS
Only in my-gtk/pango/pango: sans-12.bmp
