net@TUB.BITNET (Oliver Laumann) (01/10/89)
XTextWidth() and probably other related functions are broken; it is not possible to compute the width of a string containing characters with codes greater than 127. Therefore the upper halves of the ISO Latin-1 fonts currently cannot be used. The bugs are located in the (internal) functions GetCS and GetCS2d; `char' is used in several places where `int' should have been used instead. The line row = (chars[ind] >> 8)-firstRow; in GetCS2d() is particularly interesting; note that `chars' is a character array! One of the bugs can be reproduced with the following demonstration program. It prints "15 0"; this is certainly not right. #include <X11/Xlib.h> main () $ Display *d; XFontStruct *f; if ((d = XOpenDisplay ((char *)0)) == 0) return 1; if ((f = XLoadQueryFont (d, "*courier-bold-r-normal--24*")) == 0) return 1; printf ("%d %d\n", f->per_char[0273].width, XTextWidth (f, "\273", 1)); return 0; Regards, -- Oliver Laumann net@TUB.BITNET net@tub.UUCP