i++; }
}
PRIVATE int display_line ARGS2(	HTLine *,	line,	HText *,	text){    register int i, j;    char buffer[7];    char *data;    size_t utf_extra = 0;#ifdef USE_COLOR_STYLE    int current_style = 0;#endif    char LastDisplayChar = ' ';    /*     *  Set up the multibyte character buffer,     *  and clear the line to which we will be     *  writing.     */    buffer[0] = buffer[1] = buffer[2] = '\0';    clrtoeol();    /*     *  Add offset, making sure that we do not     *  go over the COLS limit on the display.     */    j = (int)line->offset;    if (j > (int)LYcols - 1)	j = (int)LYcols - 1;#ifdef USE_SLANG    SLsmg_forward (j);    i = j;#else#ifdef USE_COLOR_STYLE    if (line->size == 0)	i = j;    else#endif    for (i = 0; i < j; i++)	addch (' ');#endif /* USE_SLANG */    /*     *  Add the data, making sure that we do not     *  go over the COLS limit on the display.     */    data = line->data;    i++;    while ((i < LYcols) && ((buffer[0] = *data) != '\0')) {	data++;#if defined(USE_COLOR_STYLE) || defined(SLSC)#define CStyle line->styles[current_style]	while (current_style < line->numstyles &&	       i >= (int) (CStyle.horizpos + line->offset + 1))	{		LynxChangeStyle (CStyle.style,CStyle.direction,CStyle.previous);		current_style++;	}#endif	switch (buffer[0]) {#ifndef USE_COLOR_STYLE	    case LY_UNDERLINE_START_CHAR:		if (dump_output_immediately && use_underscore) {		    addch('_');		    i++;		} else {		    start_underline();		}		break;	    case LY_UNDERLINE_END_CHAR:		if (dump_output_immediately && use_underscore) {		    addch('_');		    i++;		} else {		    stop_underline();		}		break;	    case LY_BOLD_START_CHAR:		start_bold();		break;	    case LY_BOLD_END_CHAR:		stop_bold ();		break;#endif	    case LY_SOFT_NEWLINE:		if (!dump_output_immediately) {		    addch('+');		    i++;		}		break;	    case LY_SOFT_HYPHEN:		if (*data != '\0' ||		    isspace((unsigned char)LastDisplayChar) ||		    LastDisplayChar == '-') {		    /*		     *  Ignore the soft hyphen if it is not the last		     *  character in the line.  Also ignore it if it		     *  first character following the margin, or if it		     *  is preceded by a white character (we loaded 'M'		     *  into LastDisplayChar if it was a multibyte		     *  character) or hyphen, though it should have		     *  been excluded by HText_appendCharacter() or by		     *  split_line() in those cases. - FM		     */		    break;		} else {		    /*		     *  Make it a hard hyphen and fall through. - FM		     */		    buffer[0] = '-';		    i++;		}	    default:		i++;		if (text->T.output_utf8 && !isascii(buffer[0])) {		    if ((*buffer & 0xe0) == 0xc0) {			utf_extra = 1;		    } else if ((*buffer & 0xf0) == 0xe0) {			utf_extra = 2;		    } else if ((*buffer & 0xf8) == 0xf0) {			utf_extra = 3;		    } else if ((*buffer & 0xfc) == 0xf8) {			utf_extra = 4;		    } else if ((*buffer & 0xfe) == 0xfc) {			utf_extra = 5;		    } else {			 /*			  *  Garbage.			  */			utf_extra = 0;		    }		    if (strlen(data) < utf_extra) {			/*			 *  Shouldn't happen.			 */			utf_extra = 0;		    }		    LastDisplayChar = 'M';		}		if (utf_extra) {		    strncpy(&buffer[1], data, utf_extra);		    buffer[utf_extra+1] = '\0';		    addstr(buffer);		    buffer[1] = '\0';		    data += utf_extra;		    utf_extra = 0;		} else if (HTCJK != NOCJK && !isascii(buffer[0])) {		    /*		     *  For CJK strings, by Masanobu Kimura.		     */		    buffer[1] = *data;		    data++;		    addstr(buffer);		    buffer[1] = '\0';		    /*		     *  For now, load 'M' into LastDisplayChar,		     *  but we should check whether it's white		     *  and if so, use ' '.  I don't know if		     *  there actually are white CJK characters,		     *  and we're loading ' ' for multibyte		     *  spacing characters in this code set,		     *  but this will become an issue when		     *  the development code set's multibyte		     *  character handling is used. - FM		     */		    LastDisplayChar = 'M';		} else {		    addstr(buffer);		    LastDisplayChar = buffer[0];		}	} /* end of switch */    } /* end of while */    /*     *  Add the return.     */    addch('\n');#ifndef USE_COLOR_STYLE    stop_underline();    stop_bold();#else    while (current_style < line->numstyles)    {	LynxChangeStyle (CStyle.style, CStyle.direction, CStyle.previous);	current_style++;    }#undef CStyle#endif    return(0);}