Re: [PATCH to 1.2.8] gdk_text_width_wc was broked
- From: Owen Taylor <otaylor redhat com>
- To: gtk-devel-list gnome org
- Cc: Vlad Harchev <hvv hippo ru>
- Subject: Re: [PATCH to 1.2.8] gdk_text_width_wc was broked
- Date: 30 Dec 2000 15:37:28 -0500
- Have we released 1.2.9 yet? No. Is the product the CVS repository?
No.
- Is GTK+ supposed to work for non iso-8859-1 character sets without
using the Xlib internationalization support (and font sets)? No.
- Does your patch work for all languages? No. It's not even close
for Japanese, en_US.utf8, etc.
- Does your patch improve things? Well, it may make an unsupported
corner case work marginally better.
- Did I forget about the patch? Of course not.
I will decide whether to to apply your patch before we release
1.2.9. I expect I will apply it, since it probably doesn't actually
break anything, and GTK+-2.0 ditches this whole mess anyway.
Regards,
Owen
Vlad Harchev <hvv hippo ru> writes:
> On Tue, 22 Aug 2000, Vlad Harchev wrote:
>
> Guys, why don't you apply this patch to 1.2 branch? It's a bugfix, and should
> go in. I'm asking you to allow applying it since 22 Aug. Shame to you!
>
>
> > Hi,
> >
> > Here is a patch to fix broken behaviour of gdk_text_width_wc. If the font
> > passed to it is of type GDK_FONT_FONT (i.e. not a fontset) it converts wcs
> > to char[] using plain assignment, rather than using gdk_wcstombs). This breaks
> > horribly for russian strings - the characters get shifted by 128 after such
> > conversion, thus leading to measuring the width of completely different string
> > (it always shorter, so all strings in russian appear truncated by a half of a
> > letter in average).
> >
> > Best regards,
> > -Vlad
> >
> > diff -ru gtk+-1.2.5-was/gdk/gdkfont.c gtk+-1.2.5/gdk/gdkfont.c
> > --- gtk+-1.2.5-was/gdk/gdkfont.c Mon Aug 21 11:40:39 2000
> > +++ gtk+-1.2.5/gdk/gdkfont.c Tue Aug 22 18:48:55 2000
> > @@ -388,12 +388,18 @@
> > xfont = (XFontStruct *) private->xfont;
> > if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
> > {
> > - gchar *text_8bit;
> > - gint i;
> > - text_8bit = g_new (gchar, text_length);
> > - for (i=0; i<text_length; i++) text_8bit[i] = text[i];
> > - width = XTextWidth (xfont, text_8bit, text_length);
> > - g_free (text_8bit);
> > + GdkWChar* wc_tmp;
> > + gchar* mbtext;
> > + gint mblen;
> > +
> > + wc_tmp = g_new(GdkWChar,text_length+1);
> > + memcpy(wc_tmp,text,sizeof(GdkWChar)*text_length);
> > + wc_tmp[text_length] = (GdkWChar)0;
> > + mbtext = gdk_wcstombs(wc_tmp);
> > + mblen = strlen(mbtext);
> > + width = XTextWidth (xfont, mbtext, mblen);
> > + g_free(mbtext);
> > + g_free(wc_tmp);
> > }
> > else
> > {
> >
> >
> > _______________________________________________
> > gtk-devel-list mailing list
> > gtk-devel-list gnome org
> > http://mail.gnome.org/mailman/listinfo/gtk-devel-list
> >
>
> Best regards,
> -Vlad
>
>
> _______________________________________________
> gtk-devel-list mailing list
> gtk-devel-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-devel-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]