Allow Mosaic to display UTF-8 encoded characters (#18)

* replace XDrawString with XmStringDraw
HTMLformat.c, HTMLtable.c: The Motif 2.x XmStringDraw can display UTF-8 characters.
gui.c, gui-dialog.c: replace XmStringCreateSimple with XmStringCreateLocalized
xresources.h: use ISO 10646-1 fonts

* Support for HTML entities with UTF-8 encoding
HTMLamp.h: more complete list of HTML 4 entities
HTMLparse.c: replace an HTML entity &#nnn; or &name; by the appropriate UTF-8 sequence.
master
Edmond Orignac 2022-04-17 16:05:37 +07:00 committed by GitHub
parent 6b855b30e8
commit af1c9aaaa2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 2490 additions and 260 deletions

@ -0,0 +1,10 @@
!Mosaic*rendertable.fontType: FONT_IS_FONT
!Mosaic*rendertable.fontName: AS_IS
!Mosaic*rendertable.underlineType: NO_LINE
! Two very readable fonts with accented characters
!Mosaic*Font: -bitstream-bitstream charter-medium-r-normal--0-0-0-0-p-0-iso10646-1
! Mosaic*Font: -b&h-lucidatypewriter-medium-r-normal-sans-17-120-100-100-m-100-iso10646-1
! Better font to display Greek or Cyrillic but small (12 points)
!Mosaic*Font: -schumacher-clean-medium-r-normal--12-120-75-75-c-60-iso10646-1
!
Mosaic*Font: -mutt-clearlyu-medium-r-normal--17-120-100-100-p-123-iso10646-1

@ -499,7 +499,7 @@ static XtResource resources[] =
{ WbNtoolbarFont, { WbNtoolbarFont,
WbCToolbarFont, XtRFontStruct, sizeof (XFontStruct *), WbCToolbarFont, XtRFontStruct, sizeof (XFontStruct *),
XtOffset (HTMLWidget, html.toolbar_font), XtOffset (HTMLWidget, html.toolbar_font),
XtRString, "-adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" XtRString, "-adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso10646-1"
}, },
{ WbNfixedFont, { WbNfixedFont,

File diff suppressed because it is too large Load Diff

@ -5253,7 +5253,9 @@ PartialRefresh(hw, eptr, start_pos, end_pos, fg, bg)
int partial, descent; int partial, descent;
unsigned long valuemask; unsigned long valuemask;
XGCValues values; XGCValues values;
XmString ttd;
XmFontList tftd;
XSetFont(XtDisplay(hw), hw->html.drawGC, eptr->font->fid); XSetFont(XtDisplay(hw), hw->html.drawGC, eptr->font->fid);
ascent = eptr->font->max_bounds.ascent; ascent = eptr->font->max_bounds.ascent;
width = -1; width = -1;
@ -5376,13 +5378,24 @@ PartialRefresh(hw, eptr, start_pos, end_pos, fg, bg)
XSetForeground(XtDisplay(hw), hw->html.drawGC, fg); XSetForeground(XtDisplay(hw), hw->html.drawGC, fg);
XSetBackground(XtDisplay(hw), hw->html.drawGC, bg); XSetBackground(XtDisplay(hw), hw->html.drawGC, bg);
XDrawString(XtDisplay(hw), tftd=XmFontListCreate(eptr->font,XmSTRING_DEFAULT_CHARSET);
XtWindow(hw->html.view), ttd=XmStringCreateLocalized(tdata);
hw->html.drawGC,
x,
y + ascent, XmStringDraw(XtDisplay(hw),
(char *)tdata, XtWindow(hw->html.view),
tlen); tftd,
ttd,
hw->html.drawGC,
x,
y,
XmStringWidth(tftd,ttd),
XmALIGNMENT_BEGINNING,
XmSTRING_DIRECTION_L_TO_R,
NULL);
XmStringFree(ttd);
XmFontListFree(tftd);
} }
else { else {
XSetForeground(XtDisplay(hw), hw->html.drawGC, bg); XSetForeground(XtDisplay(hw), hw->html.drawGC, bg);
@ -5412,14 +5425,24 @@ PartialRefresh(hw, eptr, start_pos, end_pos, fg, bg)
(y<0 ? (y<0 ?
(ascent+eptr->font->descent+y) : (ascent+eptr->font->descent+y) :
(ascent+eptr->font->descent))); (ascent+eptr->font->descent)));
tftd=XmFontListCreate(eptr->font,XmSTRING_DEFAULT_CHARSET);
ttd=XmStringCreateLocalized(tdata);
XmStringDraw(XtDisplay(hw),
XtWindow(hw->html.view),
tftd,
ttd,
hw->html.drawGC,
x,
y,
XmStringWidth(tftd,ttd),
XmALIGNMENT_BEGINNING,
XmSTRING_DIRECTION_L_TO_R,
NULL);
XmStringFree(ttd);
XmFontListFree(tftd);
XDrawString(XtDisplay(hw),
XtWindow(hw->html.view),
hw->html.drawGC,
x,
y + ascent,
(char *)tdata,
tlen);
} }

@ -111,7 +111,45 @@ unsigned char map_table[256]={
#define TOLOWER(x) (map_table[x]) #define TOLOWER(x) (map_table[x])
#endif /* NOT_ASCII */ #endif /* NOT_ASCII */
/* Converts an UCS code < 65536 into a UTF-8 string. Returns the string length */
int ucs2utf8(unsigned int ucs,char code[4])
{
unsigned int x,y,z;
if (ucs<128)
{
code[0]=(char)ucs;
code[1]='\0';
return(1);
}
else if (ucs<2048)
{
x=ucs/64;
y=ucs-64*x;
code[0]=(char)(192+x);
code[1]=(char)(128+y);
code[2]='\0';
return(2);
}
else if (ucs<65536)
{
x=ucs/4096;
y=(ucs-4096*x)/64;
z=ucs-4096*x-64*y;
code[0]=(char)(224+x);
code[1]=(char)(128+y);
code[2]=(char)(128+z);
code[3]='\0';
return(3);
}
else
{
/* Not implemented yet */
code[0]='\0';
return(0);
}
}
/* /*
* Check if two strings are equal, ignoring case. * Check if two strings are equal, ignoring case.
* The strings must be of the same length to be equal. * The strings must be of the same length to be equal.
@ -271,8 +309,8 @@ clean_white_space(txt)
/* /*
* parse an amperstand escape, and return the appropriate character, or * parse an amperstand escape, and return the length of the UTF-8 sequence encoding the character, or
* '\0' on error. * 0 on error. val contains the UTF-8 sequence.
* we should really only use caseless_equal_prefix for unterminated, and use * we should really only use caseless_equal_prefix for unterminated, and use
* caseless_equal otherwise, but since there are so many escapes, and I * caseless_equal otherwise, but since there are so many escapes, and I
* don't want to type everything twice, I always use caseless_equal_prefix * don't want to type everything twice, I always use caseless_equal_prefix
@ -282,14 +320,16 @@ clean_white_space(txt)
* 1: unterminated * 1: unterminated
* 2: terminated with whitespace * 2: terminated with whitespace
*/ */
char int
ExpandEscapes(esc, endp, termination) ExpandEscapes(esc, endp, termination,val)
char *esc; char *esc;
char **endp; char **endp;
int termination; int termination;
char val[4];
{ {
int cnt; int cnt;
char val; unsigned int ucs,lng=0;
int jj;
int unterminated; int unterminated;
unterminated = (termination & 0x01); unterminated = (termination & 0x01);
@ -309,14 +349,26 @@ ExpandEscapes(esc, endp, termination)
} }
tchar = *tptr; tchar = *tptr;
*tptr = '\0'; *tptr = '\0';
val = (char)atoi((esc + 1)); ucs = atoi((esc + 1));
lng=ucs2utf8(ucs, val);
#ifndef DISABLE_TRACE
if (htmlwTrace) {
fprintf(stderr,"&#%ud character: %s\n",ucs,val);
}
#endif
*tptr = tchar; *tptr = tchar;
*endp = tptr; *endp = tptr;
} }
else else
{ {
val = (char)atoi((esc + 1)); ucs=atoi((esc + 1));
lng=ucs2utf8(ucs, val);
*endp = (char *)(esc + strlen(esc)); *endp = (char *)(esc + strlen(esc));
#ifndef DISABLE_TRACE
if (htmlwTrace) {
fprintf(stderr,"&#%ud character: %s\n",ucs,val);
}
#endif
} }
} }
else else
@ -329,7 +381,13 @@ ExpandEscapes(esc, endp, termination)
ampLen = strlen(AmpEscapes[cnt].tag); ampLen = strlen(AmpEscapes[cnt].tag);
if ((escLen == ampLen) && (strncmp(esc, AmpEscapes[cnt].tag, ampLen) == 0)) if ((escLen == ampLen) && (strncmp(esc, AmpEscapes[cnt].tag, ampLen) == 0))
{ {
val = AmpEscapes[cnt].value; ucs = AmpEscapes[cnt].value;
lng=ucs2utf8(ucs, val);
#ifndef DISABLE_TRACE
if (htmlwTrace) {
fprintf(stderr,"&%s; character:%s\n",esc,val);
}
#endif
*endp = (char *)(esc + *endp = (char *)(esc +
strlen(AmpEscapes[cnt].tag)); strlen(AmpEscapes[cnt].tag));
break; break;
@ -343,12 +401,13 @@ ExpandEscapes(esc, endp, termination)
fprintf(stderr, "Error bad & string\n"); fprintf(stderr, "Error bad & string\n");
} }
#endif #endif
val = '\0'; val[0] = '\0';
lng=0;
*endp = (char *)NULL; *endp = (char *)NULL;
} }
} }
return(val); return(lng);
} }
@ -375,7 +434,9 @@ clean_text(txt)
char *text; char *text;
char *tend; char *tend;
char tchar; char tchar;
char val; char val[4];
int lng;
int jj;
if (txt == NULL) if (txt == NULL)
{ {
@ -460,9 +521,9 @@ clean_text(txt)
/* /*
* Replace escape sequence with appropriate character * Replace escape sequence with appropriate character
*/ */
val = ExpandEscapes(text, &tend, lng = ExpandEscapes(text, &tend,
((space_terminated << 1) + unterminated)); ((space_terminated << 1) + unterminated), val);
if (val != '\0') if (lng>0)
{ {
if (unterminated) if (unterminated)
{ {
@ -475,7 +536,11 @@ clean_text(txt)
{ {
ptr--; ptr--;
} }
*ptr2 = val; for (jj=0; jj<=lng-1; jj++)
{
*ptr2 = val[jj];
ptr2++;
}
unterminated = 0; unterminated = 0;
space_terminated = 0; space_terminated = 0;
} }
@ -498,7 +563,7 @@ clean_text(txt)
* Copy forward remaining text until you find the next * Copy forward remaining text until you find the next
* escape sequence * escape sequence
*/ */
ptr2++;
ptr++; ptr++;
while (*ptr != '\0') while (*ptr != '\0')
{ {

@ -1121,10 +1121,22 @@ int yy;
XSetBackground(XtDisplay(hw), hw->html.drawGC, eptr->bg); XSetBackground(XtDisplay(hw), hw->html.drawGC, eptr->bg);
XSetForeground(XtDisplay(hw), hw->html.drawGC, eptr->fg); XSetForeground(XtDisplay(hw), hw->html.drawGC, eptr->fg);
XSetFont(XtDisplay(hw), hw->html.drawGC, field->font->fid); XSetFont(XtDisplay(hw), hw->html.drawGC, field->font->fid);
XDrawString(XtDisplay(hw), XtWindow(hw->html.view), XmString ttd=XmStringCreateLocalized(field->formattedText[yy]);
hw->html.drawGC, placeX, placeY+baseLine, XmFontList tftd=XmFontListCreate(field->font,XmSTRING_DEFAULT_CHARSET);
field->formattedText[yy], XmStringDraw(XtDisplay(hw),
strlen(field->formattedText[yy])); XtWindow(hw->html.view),
tftd,
ttd,
hw->html.drawGC,
placeX,
placeY+baseLine,
XmStringWidth(tftd,ttd),
XmALIGNMENT_BEGINNING,
XmSTRING_DIRECTION_L_TO_R,
NULL);
XmStringFree(ttd);
XmFontListFree(tftd);
placeY += lineHeight; placeY += lineHeight;
} }

@ -450,7 +450,7 @@ CollectSubmitInfo(fptr, name_list, value_list)
= wptr->name; = wptr->name;
#ifdef MOTIF #ifdef MOTIF
XmStringGetLtoR(str_list[j], XmStringGetLtoR(str_list[j],
XmSTRING_DEFAULT_CHARSET, XmFONTLIST_DEFAULT_TAG,
&val); &val);
#else #else
val = str_list[j]; val = str_list[j];
@ -486,7 +486,7 @@ CollectSubmitInfo(fptr, name_list, value_list)
argcnt++; argcnt++;
XtGetValues(child, arg, argcnt); XtGetValues(child, arg, argcnt);
val = NULL; val = NULL;
XmStringGetLtoR(label, XmSTRING_DEFAULT_CHARSET, XmStringGetLtoR(label, XmFONTLIST_DEFAULT_TAG,
&val); &val);
#else #else
XtVaGetValues(wptr->w, XtNlabel, &val, NULL); XtVaGetValues(wptr->w, XtNlabel, &val, NULL);
@ -1337,7 +1337,7 @@ CBResetForm(w, client_data, call_data)
for (i=0; i<vlist_cnt; i++) for (i=0; i<vlist_cnt; i++)
{ {
val_list[i] = val_list[i] =
XmStringCreateSimple(vlist[i]); XmStringCreateLocalized(vlist[i]);
} }
#else #else
XawListUnhighlight(child); XawListUnhighlight(child);
@ -2237,7 +2237,7 @@ MakeWidget(hw, text, x, y, id, fptr)
tptr = ParseMarkTag(text, MT_INPUT, "CHECKED"); tptr = ParseMarkTag(text, MT_INPUT, "CHECKED");
/* We want no text on our toggles */ /* We want no text on our toggles */
label = XmStringCreateSimple(""); label = XmStringCreateLocalized("");
argcnt = 0; argcnt = 0;
XtSetArg(arg[argcnt], XmNlabelString, label); argcnt++; XtSetArg(arg[argcnt], XmNlabelString, label); argcnt++;
@ -2304,7 +2304,7 @@ MakeWidget(hw, text, x, y, id, fptr)
} }
/* We want no text on our toggles */ /* We want no text on our toggles */
label = XmStringCreateSimple(""); label = XmStringCreateLocalized("");
argcnt = 0; argcnt = 0;
XtSetArg(arg[argcnt], XmNlabelString, label); argcnt++; XtSetArg(arg[argcnt], XmNlabelString, label); argcnt++;
@ -2355,7 +2355,7 @@ MakeWidget(hw, text, x, y, id, fptr)
argcnt++;*/ argcnt++;*/
if (value != NULL) if (value != NULL)
{ {
label = XmStringCreateSimple(value); label = XmStringCreateLocalized(value);
XtSetArg(arg[argcnt], XmNlabelString, label); XtSetArg(arg[argcnt], XmNlabelString, label);
argcnt++; argcnt++;
} }
@ -2393,7 +2393,7 @@ MakeWidget(hw, text, x, y, id, fptr)
argcnt++;*/ argcnt++;*/
if (value != NULL) if (value != NULL)
{ {
label = XmStringCreateSimple(value); label = XmStringCreateLocalized(value);
XtSetArg(arg[argcnt], XmNlabelString, label); XtSetArg(arg[argcnt], XmNlabelString, label);
argcnt++; argcnt++;
} }
@ -2425,7 +2425,7 @@ MakeWidget(hw, text, x, y, id, fptr)
argcnt++; */ argcnt++; */
if (value != NULL) if (value != NULL)
{ {
label = XmStringCreateSimple(value); label = XmStringCreateLocalized(value);
XtSetArg(arg[argcnt], XmNlabelString, label); XtSetArg(arg[argcnt], XmNlabelString, label);
argcnt++; argcnt++;
} }
@ -2645,7 +2645,7 @@ MakeWidget(hw, text, x, y, id, fptr)
char bname[30]; char bname[30];
sprintf(bname, "Button%d", (i + 1)); sprintf(bname, "Button%d", (i + 1));
label = XmStringCreateSimple(list[i]); label = XmStringCreateLocalized(list[i]);
argcnt = 0; argcnt = 0;
XtSetArg(arg[argcnt], XmNlabelString, XtSetArg(arg[argcnt], XmNlabelString,
label); label);
@ -2722,7 +2722,7 @@ MakeWidget(hw, text, x, y, id, fptr)
argcnt = 0; argcnt = 0;
xmstr = XmStringCreateSimple (""); xmstr = XmStringCreateLocalized ("");
XtSetArg(arg[argcnt], XmNlabelString, XtSetArg(arg[argcnt], XmNlabelString,
(XtArgVal)xmstr); (XtArgVal)xmstr);
argcnt++; argcnt++;
@ -2763,12 +2763,12 @@ MakeWidget(hw, text, x, y, id, fptr)
for (i=0; i<list_cnt; i++) for (i=0; i<list_cnt; i++)
{ {
string_list[i] = string_list[i] =
XmStringCreateSimple(list[i]); XmStringCreateLocalized(list[i]);
} }
for (i=0; i<vlist_cnt; i++) for (i=0; i<vlist_cnt; i++)
{ {
val_list[i] = val_list[i] =
XmStringCreateSimple(vlist[i]); XmStringCreateLocalized(vlist[i]);
} }
FreeCommaList(list, list_cnt); FreeCommaList(list, list_cnt);

@ -367,7 +367,7 @@ static XmxCallback (save_win_cb)
XtUnmanageChild (win->save_win); XtUnmanageChild (win->save_win);
XmStringGetLtoR (((XmFileSelectionBoxCallbackStruct *)call_data)->value, XmStringGetLtoR (((XmFileSelectionBoxCallbackStruct *)call_data)->value,
XmSTRING_DEFAULT_CHARSET, XmFONTLIST_DEFAULT_TAG,
&fname); &fname);
pathEval (efname, fname); pathEval (efname, fname);
@ -585,7 +585,7 @@ char fileBuf[2048],*fileBoxFileName;
XtVaGetValues(win->save_win, XtVaGetValues(win->save_win,
XmNdirSpec, &fbfn, XmNdirSpec, &fbfn,
NULL); NULL);
if (!XmStringGetLtoR(fbfn,XmSTRING_DEFAULT_CHARSET,&fileBoxFileName)) { if (!XmStringGetLtoR(fbfn,XmFONTLIST_DEFAULT_TAG,&fileBoxFileName)) {
#ifndef DISABLE_TRACE #ifndef DISABLE_TRACE
if (srcTrace) { if (srcTrace) {
fprintf(stderr,"Internal Error In Save As... PLEASE REPORT THIS!\n"); fprintf(stderr,"Internal Error In Save As... PLEASE REPORT THIS!\n");
@ -597,7 +597,7 @@ char fileBuf[2048],*fileBoxFileName;
if (*fileBoxFileName && win && win->current_node && win->current_node->url && *(win->current_node->url)) { if (*fileBoxFileName && win && win->current_node && win->current_node->url && *(win->current_node->url)) {
/*no need to check on NULL from getFileName as we know url exists*/ /*no need to check on NULL from getFileName as we know url exists*/
sprintf(fileBuf,"%s%s",fileBoxFileName,getFileName(win->current_node->url)); sprintf(fileBuf,"%s%s",fileBoxFileName,getFileName(win->current_node->url));
sfn=XmStringCreateLtoR(fileBuf,XmSTRING_DEFAULT_CHARSET); sfn=XmStringCreateLtoR(fileBuf,XmFONTLIST_DEFAULT_TAG);
XtVaSetValues(win->save_win, XtVaSetValues(win->save_win,
XmNdirSpec, sfn, XmNdirSpec, sfn,
NULL); NULL);
@ -676,7 +676,7 @@ static XmxCallback (savebinary_win_cb)
XtUnmanageChild (win->savebinary_win); XtUnmanageChild (win->savebinary_win);
XmStringGetLtoR (((XmFileSelectionBoxCallbackStruct *)call_data)->value, XmStringGetLtoR (((XmFileSelectionBoxCallbackStruct *)call_data)->value,
XmSTRING_DEFAULT_CHARSET, XmFONTLIST_DEFAULT_TAG,
&fname); &fname);
pathEval (efname, fname); pathEval (efname, fname);
@ -729,7 +729,7 @@ char fileBuf[2048],*fileBoxFileName;
XtVaGetValues(win->savebinary_win, XtVaGetValues(win->savebinary_win,
XmNdirSpec, &fbfn, XmNdirSpec, &fbfn,
NULL); NULL);
if (!XmStringGetLtoR(fbfn,XmSTRING_DEFAULT_CHARSET,&fileBoxFileName)) { if (!XmStringGetLtoR(fbfn,XmFONTLIST_DEFAULT_TAG,&fileBoxFileName)) {
#ifndef DISABLE_TRACE #ifndef DISABLE_TRACE
if (srcTrace) { if (srcTrace) {
fprintf(stderr,"Internal Error In Save Binary... PLEASE REPORT THIS!\n"); fprintf(stderr,"Internal Error In Save Binary... PLEASE REPORT THIS!\n");
@ -749,7 +749,7 @@ char fileBuf[2048],*fileBoxFileName;
} }
} }
sprintf(fileBuf,"%s%s",fileBoxFileName,sptr); sprintf(fileBuf,"%s%s",fileBoxFileName,sptr);
sfn=XmStringCreateLtoR(fileBuf,XmSTRING_DEFAULT_CHARSET); sfn=XmStringCreateLtoR(fileBuf,XmFONTLIST_DEFAULT_TAG);
XtVaSetValues(win->savebinary_win, XtVaSetValues(win->savebinary_win,
XmNdirSpec, sfn, XmNdirSpec, sfn,
NULL); NULL);
@ -778,7 +778,7 @@ static XmxCallback (open_local_win_cb)
XtUnmanageChild (win->open_local_win); XtUnmanageChild (win->open_local_win);
XmStringGetLtoR (((XmFileSelectionBoxCallbackStruct *)call_data)->value, XmStringGetLtoR (((XmFileSelectionBoxCallbackStruct *)call_data)->value,
XmSTRING_DEFAULT_CHARSET, XmFONTLIST_DEFAULT_TAG,
&fname); &fname);
pathEval (efname, fname); pathEval (efname, fname);

@ -1218,7 +1218,7 @@ static void pointer_motion_callback (Widget w, char *href)
} else } else
href = " "; href = " ";
xmstr = XmStringCreateSimple (href); xmstr = XmStringCreateLocalized (href);
XtVaSetValues XtVaSetValues
(win->tracker_label, (win->tracker_label,
XmNlabelString, (XtArgVal)xmstr, XmNlabelString, (XtArgVal)xmstr,
@ -1433,7 +1433,7 @@ void mo_gui_notify_progress (char *msg)
if (!msg) if (!msg)
msg = " "; msg = " ";
xmstr = XmStringCreateSimple (msg); xmstr = XmStringCreateLocalized (msg);
XtVaSetValues XtVaSetValues
(win->tracker_label, (win->tracker_label,
XmNlabelString, (XtArgVal)xmstr, XmNlabelString, (XtArgVal)xmstr,
@ -2580,11 +2580,11 @@ Widget mo_fill_toolbar(mo_window *win, Widget top, int w, int h)
&tmpFont, &tmpFont,
NULL); NULL);
if (!tmpFont) { if (!tmpFont) {
fprintf(stderr,"Toolbar Font: Could not load! The X Resource is Mosaic*ToolbarFont\nDefault font is: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1\nExiting Mosaic."); fprintf(stderr,"Toolbar Font: Could not load! The X Resource is Mosaic*ToolbarFont\nDefault font is: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso10646-1\nExiting Mosaic.");
exit(1); exit(1);
} }
tmpFontList = XmFontListCreate(tmpFont,XmSTRING_DEFAULT_CHARSET); tmpFontList = XmFontListCreate(tmpFont,XmFONTLIST_DEFAULT_TAG);
} }
/* Which tools to show */ /* Which tools to show */

@ -51,7 +51,7 @@
* Comments and questions are welcome and can be sent to * * Comments and questions are welcome and can be sent to *
* mosaic-x@ncsa.uiuc.edu. * * mosaic-x@ncsa.uiuc.edu. *
****************************************************************************/ ****************************************************************************/
#define FONTNAME "-adobe-courier-medium-r-normal-*-17-*-*-*-*-*-iso8859-1" #define FONTNAME "-adobe-courier-medium-r-normal-*-17-*-*-*-*-*-iso10646-1"
#define TRANS_HTTP 0 #define TRANS_HTTP 0
#define TRANS_CCI 1 #define TRANS_CCI 1

@ -588,32 +588,32 @@ static XrmOptionDescRec options[] = {
}; };
static String color_resources[] = { static String color_resources[] = {
"*XmLabel*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmLabel*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmScale*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmScale*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmBulletinBoard*labelFontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmBulletinBoard*labelFontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*optionmenu.XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*optionmenu.XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmPushButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmPushButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmPushButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmPushButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmToggleButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmToggleButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmToggleButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmToggleButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*optionmenu*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*optionmenu*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmIconGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmIconGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmBulletinBoard*buttonFontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmBulletinBoard*buttonFontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*menubar*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*menubar*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmPushButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmPushButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmLabelGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmLabelGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmPushButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmPushButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmToggleButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmToggleButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmToggleButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmToggleButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*pulldownmenu*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*pulldownmenu*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmList*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmList*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmText.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso8859-1", "*XmText.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso10646-1",
"*XmTextField.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso8859-1", "*XmTextField.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso10646-1",
"*optionmenu*marginHeight: 0", "*optionmenu*marginHeight: 0",
"*optionmenu*marginTop: 5", "*optionmenu*marginTop: 5",
@ -655,23 +655,23 @@ static String color_resources[] = {
/* "*geometry: +400+200", */ /* "*geometry: +400+200", */
/* "*keyboardFocusPolicy: pointer",*/ /* "*keyboardFocusPolicy: pointer",*/
"*TitleFont: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso8859-1", "*TitleFont: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso10646-1",
"*Font: -adobe-times-medium-r-normal-*-17-*-*-*-*-*-iso8859-1", "*Font: -adobe-times-medium-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*ItalicFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso8859-1", "*ItalicFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso10646-1",
"*BoldFont: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso8859-1", "*BoldFont: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*FixedFont: -adobe-courier-medium-r-normal-*-17-*-*-*-*-*-iso8859-1", "*FixedFont: -adobe-courier-medium-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*Header1Font: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso8859-1", "*Header1Font: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso10646-1",
"*Header2Font: -adobe-times-bold-r-normal-*-18-*-*-*-*-*-iso8859-1", "*Header2Font: -adobe-times-bold-r-normal-*-18-*-*-*-*-*-iso10646-1",
"*Header3Font: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso8859-1", "*Header3Font: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*Header4Font: -adobe-times-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*Header4Font: -adobe-times-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*Header5Font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1", "*Header5Font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso10646-1",
"*Header6Font: -adobe-times-bold-r-normal-*-10-*-*-*-*-*-iso8859-1", "*Header6Font: -adobe-times-bold-r-normal-*-10-*-*-*-*-*-iso10646-1",
"*AddressFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso8859-1", "*AddressFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso10646-1",
"*PlainFont: -adobe-courier-medium-r-normal-*-14-*-*-*-*-*-iso8859-1", "*PlainFont: -adobe-courier-medium-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*ListingFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-iso8859-1", "*ListingFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-iso10646-1",
"*SupSubFont: -adobe-times-medium-r-normal-*-10-*-*-*-*-*-iso8859-1", "*SupSubFont: -adobe-times-medium-r-normal-*-10-*-*-*-*-*-iso10646-1",
"*MeterFont: -adobe-courier-bold-r-normal-*-14-*-*-*-*-*-*-*", "*MeterFont: -adobe-courier-bold-r-normal-*-14-*-*-*-*-*-*-*",
"*ToolbarFont: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1", "*ToolbarFont: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso10646-1",
"*AnchorUnderlines: 1", "*AnchorUnderlines: 1",
"*VisitedAnchorUnderlines: 1", "*VisitedAnchorUnderlines: 1",
"*DashedVisitedAnchorUnderlines: True", "*DashedVisitedAnchorUnderlines: True",
@ -746,32 +746,32 @@ static String color_resources[] = {
}; };
static String mono_resources[] = { static String mono_resources[] = {
"*XmLabel*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmLabel*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmScale*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmScale*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmBulletinBoard*labelFontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*XmBulletinBoard*labelFontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*optionmenu.XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*optionmenu.XmLabelGadget*fontList: -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*XmPushButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmPushButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmPushButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmPushButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmToggleButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmToggleButton*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmToggleButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmToggleButtonGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*optionmenu*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*optionmenu*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmIconGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmIconGadget*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmBulletinBoard*buttonFontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmBulletinBoard*buttonFontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*menubar*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*menubar*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmPushButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmPushButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmLabelGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmLabelGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmPushButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmPushButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmCascadeButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmCascadeButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmToggleButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmToggleButton*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmMenuShell*XmToggleButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*XmMenuShell*XmToggleButtonGadget*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*pulldownmenu*fontList: -*-helvetica-bold-o-normal-*-14-*-iso8859-1", "*pulldownmenu*fontList: -*-helvetica-bold-o-normal-*-14-*-iso10646-1",
"*XmList*fontList: -*-helvetica-medium-r-normal-*-14-*-iso8859-1", "*XmList*fontList: -*-helvetica-medium-r-normal-*-14-*-iso10646-1",
"*XmText.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso8859-1", "*XmText.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso10646-1",
"*XmTextField.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso8859-1", "*XmTextField.fontList: -*-lucidatypewriter-medium-r-normal-*-14-*-iso10646-1",
"*optionmenu*marginHeight: 0", "*optionmenu*marginHeight: 0",
"*optionmenu*marginTop: 5", "*optionmenu*marginTop: 5",
@ -813,23 +813,23 @@ static String mono_resources[] = {
/* "*geometry: +400+200", */ /* "*geometry: +400+200", */
/* "*keyboardFocusPolicy: pointer", */ /* "*keyboardFocusPolicy: pointer", */
"*TitleFont: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso8859-1", "*TitleFont: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso10646-1",
"*Font: -adobe-times-medium-r-normal-*-17-*-*-*-*-*-iso8859-1", "*Font: -adobe-times-medium-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*ItalicFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso8859-1", "*ItalicFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso10646-1",
"*BoldFont: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso8859-1", "*BoldFont: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*FixedFont: -adobe-courier-medium-r-normal-*-17-*-*-*-*-*-iso8859-1", "*FixedFont: -adobe-courier-medium-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*Header1Font: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso8859-1", "*Header1Font: -adobe-times-bold-r-normal-*-24-*-*-*-*-*-iso10646-1",
"*Header2Font: -adobe-times-bold-r-normal-*-18-*-*-*-*-*-iso8859-1", "*Header2Font: -adobe-times-bold-r-normal-*-18-*-*-*-*-*-iso10646-1",
"*Header3Font: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso8859-1", "*Header3Font: -adobe-times-bold-r-normal-*-17-*-*-*-*-*-iso10646-1",
"*Header4Font: -adobe-times-bold-r-normal-*-14-*-*-*-*-*-iso8859-1", "*Header4Font: -adobe-times-bold-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*Header5Font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1", "*Header5Font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso10646-1",
"*Header6Font: -adobe-times-bold-r-normal-*-10-*-*-*-*-*-iso8859-1", "*Header6Font: -adobe-times-bold-r-normal-*-10-*-*-*-*-*-iso10646-1",
"*AddressFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso8859-1", "*AddressFont: -adobe-times-medium-i-normal-*-17-*-*-*-*-*-iso10646-1",
"*PlainFont: -adobe-courier-medium-r-normal-*-14-*-*-*-*-*-iso8859-1", "*PlainFont: -adobe-courier-medium-r-normal-*-14-*-*-*-*-*-iso10646-1",
"*ListingFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-iso8859-1", "*ListingFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-iso10646-1",
"*SupSubFont: -adobe-courier-medium-r-normal-*-10-*-*-*-*-*-iso8859-1", "*SupSubFont: -adobe-courier-medium-r-normal-*-10-*-*-*-*-*-iso10646-1",
"*MeterFont: -adobe-courier-bold-r-normal-*-14-*-*-*-*-*-*-*", "*MeterFont: -adobe-courier-bold-r-normal-*-14-*-*-*-*-*-*-*",
"*ToolbarFont: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1", "*ToolbarFont: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso10646-1",
"*Foreground: black", "*Foreground: black",
"*Background: white", "*Background: white",