--- /dev/null
+
+The following patch fixes a problem in _XomGenericTextEscapement().
+The problem is that the font used when
+
+To reproduce the bug, load the following fontset:
+
+ "-*-helvetica-bold-r-normal--10-*-*-*-p-*-*-*," \
+ "-*-*-bold-r-normal-*-10-*-*-*-*-*-*-*,*"
+
+And then (in a Latin-1 locale) compare the results of measuring the
+string with actually drawing the font on the screen. Though helvetica
+is drawn on the screen, the width will not be the width from the
+helvetica font, but from a different font from matching on the '*'.
+
+The patch below fixes selecting the font for measuring the text
+escapement to work the same way as selecting the font for drawing.
+
+I've added another comment in a different portion of code that appears
+somewhat dubious to me; the entries in font_set->font_data are getting
+filled in with bogus fonts. Loading these fonts is unecessary
+overhead, and having them there is likely to produce odd bugs like
+this one.
+
+(I have to say that reading this code makes me more and more happy
+that I decided to ignore and bypass it for Pango.)
+
+Regards,
+ Owen
+
+--- xc/lib/X11/omGeneric.c.ots Wed Jul 12 12:02:04 2000
++++ xc/lib/X11/omGeneric.c Wed Jul 12 12:09:15 2000
+@@ -1031,6 +1031,15 @@
+
+ found_num++;
+ is_found = True;
++ /* We almost certainly should have 'break' here and should ignore
++ * the rest of the patterns. The problem is that we'll overwrite
++ * font_data->font and font_data->xlfd_name with later matches.
++ * But the general expectation would be that font_data->xlfd_name
++ * would correspond to to the returned value. (It's not clear
++ * why this routine modifies font_data and has a font_data_return...)
++ *
++ * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
++ */
+ }
+
+ switch(class) {
+--- xc/lib/X11/omTextEsc.c.ots Wed Jul 12 11:57:58 2000
++++ xc/lib/X11/omTextEsc.c Wed Jul 12 12:07:41 2000
+@@ -151,10 +151,27 @@
+ is_xchar2b, FONTSCOPE);
+ if(ptr_len <= 0)
+ break;
++
++ /* First, see if the "Best Match" font for the FontSet was set.
++ * If it was, use that font. If it was not set, then use the
++ * font defined by font_set->font_data[0] (which is what
++ * _XomGetFontDataFromFontSet() always seems to return for
++ * non-VW text). Note that given the new algorithm in
++ * parse_fontname() and parse_fontdata(), fs->font will
++ * *always* contain good data. We should probably remove
++ * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
++ *
++ * Above comment and way this is done propagated from omText.c
++ * Note that fd->font is junk so using the result of the
++ * above call /needs/ to be ignored.
++ *
++ * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
++ *
++ */
+ if(fd == (FontData) NULL ||
+- (font = fd->font) == (XFontStruct *) NULL) {
++ (font = font_set->font) == (XFontStruct *) NULL) {
+
+- if((font = font_set->font) == (XFontStruct *) NULL)
++ if((font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+