Char *text, int len)
PAIRED_CHARS(Char *text, Char *text2), Cardinal len)
drawXtermText(	register TScreen *screen,	unsigned flags,	GC gc,	int x,	int y,	int chrset,	Char *text,	int len){#if OPT_DEC_CHRSET	if (CSET_DOUBLE(chrset)) {		Char *temp = (Char *) malloc(2 * len);		int n = 0;		TRACE(("DRAWTEXT%c[%4d,%4d] (%d) %d:%.*s\n",			screen->cursor_state == OFF ? ' ' : '*',			y, x, chrset, len, len, text))		while (len--) {			temp[n++] = *text++;			temp[n++] = ' ';		}		x = drawXtermText(screen, flags, gc, x, y, 0, temp, n);		free(temp);		return x;	}#endif	/*	 * If we're asked to display a proportional font, do this with a fixed	 * pitch.  Yes, it's ugly.  But we cannot distinguish the use of xterm	 * as a dumb terminal vs its use as in fullscreen programs such as vi.	 */	if (screen->fnt_prop) {		int	adj, width;		GC	fillGC = gc;	/* might be cursorGC */		XFontStruct *fs = (flags & (BOLD|BLINK))				? screen->fnt_bold				: screen->fnt_norm;		screen->fnt_prop = False;#define GC_PAIRS(a,b) \	if (gc == a) fillGC = b; \	if (gc == b) fillGC = a		/*		 * Fill the area where we'll write the characters, otherwise		 * we'll get gaps between them.  The cursor is a special case,		 * because the XFillRectangle call only uses the foreground,		 * while we've set the cursor color in the background.  So we		 * need a special GC for that.		 */		if (gc == screen->cursorGC		 || gc == screen->reversecursorGC)			fillGC = screen->fillCursorGC;		GC_PAIRS(NormalGC(screen),      ReverseGC(screen));		GC_PAIRS(NormalBoldGC(screen),  ReverseBoldGC(screen));		XFillRectangle (screen->display, TextWindow(screen), fillGC,			x, y, len * FontWidth(screen), FontHeight(screen));		while (len-- > 0) {			width = XTextWidth(fs, (char *)text, 1);			adj = (FontWidth(screen) - width) / 2;			(void)drawXtermText(screen, flags, gc, x + adj, y, chrset, text++, 1);			x += FontWidth(screen);		}		screen->fnt_prop = True;		return x;	}	TRACE(("drawtext%c[%4d,%4d] (%d) %d:%.*s\n",		screen->cursor_state == OFF ? ' ' : '*',		y, x, chrset, len, len, text))	y += FontAscent(screen);	XDrawImageString(screen->display, TextWindow(screen), gc,		x, y,  (char *)text, len);	if ((flags & (BOLD|BLINK)) && screen->enbolden)		XDrawString(screen->display, TextWindow(screen), gc,			x+1, y,  (char *)text, len);	if ((flags & UNDERLINE) && screen->underline) {		if (FontDescent(screen) > 1)			y++;		XDrawLine(screen->display, TextWindow(screen), gc,			x, y, x + len * FontWidth(screen) - 1, y);	}	return x + len * FontWidth(screen);}