--- pango-1.8.1/pango/pango-context.c 2004-11-21 10:59:15.000000000 -0500 +++ pango-1.8.1.new/pango/pango-context.c 2005-06-25 10:57:27.000000000 -0400 @@ -783,7 +783,10 @@ PangoItem *item = l->data; if (item->analysis.shape_engine) break; - item->analysis.font = g_object_ref (font); + if (font) + item->analysis.font = g_object_ref (font); + else + item->analysis.font = NULL; item->analysis.shape_engine = shape_engine; } } --- pango-1.8.1/pango/ellipsize.c 2004-09-20 13:48:44.000000000 -0400 +++ pango-1.8.1.new/pango/ellipsize.c 2005-06-25 10:57:52.000000000 -0400 @@ -347,14 +347,15 @@ /* If that fails we use "..." in the first matching font */ - if (!_pango_engine_shape_covers (item->analysis.shape_engine, item->analysis.font, + if (!item->analysis.font || + !_pango_engine_shape_covers (item->analysis.shape_engine, item->analysis.font, item->analysis.language, g_utf8_get_char (ellipsis_text))) { pango_item_free (item); /* Modify the fallback iter while it is inside the PangoAttrList; Don't try this at home */ - ((PangoAttrInt *)fallback)->value = FALSE; + ((PangoAttrInt *)fallback)->value = TRUE; ellipsis_text = "..."; item = itemize_text (state, ellipsis_text, attrs);