about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>1998-09-21 02:40:02 -0400
committerThomas E. Dickey <dickey@invisible-island.net>1998-09-21 02:40:02 -0400
commit51a6f85e8e96e257cbb43d0daab7abdf36ad2186 (patch)
treeff68a9445df1c46cf554ab3ab8b2501bfc14c90f /src
parent03b222bbbdbc58cbe5a4eb93e500d490800dee9c (diff)
downloadlynx-snapshots-51a6f85e8e96e257cbb43d0daab7abdf36ad2186.tar.gz
snapshot of project "lynx", label v2-8-1dev_29
Diffstat (limited to 'src')
-rw-r--r--src/GridText.c7
-rw-r--r--src/HTFWriter.c3
-rw-r--r--src/LYBookmark.c3
-rw-r--r--src/LYCurses.c2
-rw-r--r--src/LYDownload.c25
-rw-r--r--src/LYGetFile.c31
-rw-r--r--src/LYGlobalDefs.h4
-rw-r--r--src/LYHistory.c4
-rw-r--r--src/LYLocal.c18
-rw-r--r--src/LYMain.c47
-rw-r--r--src/LYMainLoop.c39
-rw-r--r--src/LYOptions.c26
-rw-r--r--src/LYOptions.h6
-rw-r--r--src/LYPrint.c17
-rw-r--r--src/LYReadCFG.c99
-rw-r--r--src/LYReadCFG.h4
-rw-r--r--src/LYShowInfo.c32
-rw-r--r--src/LYUtils.c40
-rw-r--r--src/LYUtils.h10
-rw-r--r--src/chrtrans/cp775_uni.tbl132
-rw-r--r--src/chrtrans/cp850_uni.tbl144
-rw-r--r--src/chrtrans/cp852_uni.tbl388
22 files changed, 371 insertions, 710 deletions
diff --git a/src/GridText.c b/src/GridText.c
index a390b8c1..53bf9c54 100644
--- a/src/GridText.c
+++ b/src/GridText.c
@@ -4165,7 +4165,8 @@ PUBLIC BOOL HText_canScrollDown NOARGS
 {
     HText * text = HTMainText;
 
-    return ((text->top_of_screen + display_lines) < text->Lines+1);
+    return (text != 0)
+     && ((text->top_of_screen + display_lines) < text->Lines+1);
 }
 
 /*		Scroll actions
@@ -4445,7 +4446,7 @@ PUBLIC HTAnchor * HText_referenceSelected ARGS1(
 PUBLIC int HText_getTopOfScreen NOARGS
 {
       HText * text = HTMainText;
-      return text->top_of_screen;
+      return text != 0 ? text->top_of_screen : 0;
 }
 
 PUBLIC int HText_getLines ARGS1(
@@ -5406,7 +5407,7 @@ PUBLIC void HTuncache_current_document NOARGS
 
 PUBLIC int HTisDocumentSource NOARGS
 {
-    return(HTMainText->source);
+    return (HTMainText != 0) ? HTMainText->source : FALSE;
 }
 
 PUBLIC char * HTLoadedDocumentURL NOARGS
diff --git a/src/HTFWriter.c b/src/HTFWriter.c
index 92665d1d..316bfd02 100644
--- a/src/HTFWriter.c
+++ b/src/HTFWriter.c
@@ -22,9 +22,6 @@
 #ifdef VMS
 #include <HTVMSUtils.h>
 #endif /* VMS */
-#ifdef DOSPATH
-#include <HTDOS.h>
-#endif
 
 #include <LYStrings.h>
 #include <LYUtils.h>
diff --git a/src/LYBookmark.c b/src/LYBookmark.c
index 31e27beb..bf6f4b60 100644
--- a/src/LYBookmark.c
+++ b/src/LYBookmark.c
@@ -11,9 +11,6 @@
 #include <LYCurses.h>
 #include <GridText.h>
 
-#ifdef DOSPATH
-#include <HTDOS.h>
-#endif
 #ifdef VMS
 #include <HTVMSUtils.h>
 #include <nam.h>
diff --git a/src/LYCurses.c b/src/LYCurses.c
index b6d149fa..1f066b62 100644
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -207,7 +207,7 @@ PUBLIC void VMSbox ARGS3(
 */
 PUBLIC void LYbox ARGS2(
 	WINDOW *,	win,
-	BOOLEAN,	formfield)
+	BOOLEAN,	formfield GCC_UNUSED)
 {
     /*
      *	If the terminal is in UTF-8 mode, it probably cannot understand
diff --git a/src/LYDownload.c b/src/LYDownload.c
index 5c4473be..a0b9a86f 100644
--- a/src/LYDownload.c
+++ b/src/LYDownload.c
@@ -237,15 +237,7 @@ check_recall:
 	    *(cp++) = '\0';
 	    strcpy(command, buffer);
 	    LYTrimPathSep(command);
-#ifdef DOSPATH
-	    strcat(command, HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
-	    strcat(command, HTVMS_wwwName((char *)Home_Dir()));
-#else
-	    strcat(command, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
+	    strcat(command, wwwName(Home_Dir()));
 	    strcat(command, cp);
 	    strcpy(buffer, command);
 	}
@@ -588,6 +580,7 @@ PUBLIC int LYdownload_options ARGS2(
 	char *, 	data_file)
 {
     static char tempfile[LY_MAXPATH];
+    char *downloaded_url = NULL;
     char *sug_filename = NULL;
     FILE *fp0;
     lynx_html_item_type *cur_download;
@@ -596,6 +589,7 @@ PUBLIC int LYdownload_options ARGS2(
     /*
      *	Get a suggested filename.
      */
+    StrAllocCopy(downloaded_url, *newfile);
     StrAllocCopy(sug_filename, *newfile);
     change_sug_filename(sug_filename);
 
@@ -616,10 +610,12 @@ PUBLIC int LYdownload_options ARGS2(
 
     fprintf(fp0, "<pre>\n");
     fprintf(fp0, "\
-   <em>You download the link:</em> %s\n\
-     <em>Suggested file name:</em> %s%s\n",
-	data_file, (lynx_save_space ? lynx_save_space : ""), sug_filename);
-    fprintf(fp0, "\nStandard download options:\n");
+  <em>Downloaded link:</em> %s\n\
+  <em>Suggested file name:</em> %s%s\n",
+       downloaded_url, (lynx_save_space ? lynx_save_space : ""), sug_filename);
+
+    fprintf(fp0, "\n%s options:\n",
+	(user_mode == NOVICE_MODE) ? "Standard download" : "Download");
 
     if(!no_disk_save && !child_lynx) {
 #ifdef DIRED_SUPPORT
@@ -635,7 +631,8 @@ PUBLIC int LYdownload_options ARGS2(
 	fprintf(fp0,"   <em>Save to disk disabled.</em>\n");
     }
 
-    fprintf(fp0, "\nLocal additions:\n");
+    if (user_mode == NOVICE_MODE)
+	fprintf(fp0, "\nLocal additions:\n");
 
     if (downloaders != NULL) {
 	for (count = 0, cur_download = downloaders; cur_download != NULL;
diff --git a/src/LYGetFile.c b/src/LYGetFile.c
index 319deacf..9875372c 100644
--- a/src/LYGetFile.c
+++ b/src/LYGetFile.c
@@ -27,9 +27,6 @@
 #ifdef VMS
 #include <HTVMSUtils.h>
 #endif /* VMS */
-#ifdef DOSPATH
-#include <HTDOS.h>
-#endif
 #ifdef DIRED_SUPPORT
 #include <LYLocal.h>
 #endif /* DIRED_SUPPORT */
@@ -245,10 +242,9 @@ Try_Redirected_URL:
 		} else if (url_type == LYNXPRINT_URL_TYPE) {
 		    return(printfile(doc));
 
-#ifdef EXP_FORMS_OPTIONS
 		} else if (url_type == LYNXOPTIONS_URL_TYPE) {
+		    /* forms-based options menu */
 		    return(postoptions(doc));
-#endif /* EXP_FORMS_OPTIONS */
 
 		} else if (url_type == NEWSPOST_URL_TYPE ||
 			   url_type == NEWSREPLY_URL_TYPE ||
@@ -369,15 +365,7 @@ Try_Redirected_URL:
 			if ((cp = strchr(doc->address, '~'))) {
 			    strncpy(addressbuf, doc->address, cp-doc->address);
 			    addressbuf[cp - doc->address] = '\0';
-#ifdef DOSPATH
-			    p = HTDOS_wwwName((char *)Home_Dir());
-#else
-#ifdef VMS
-			    p = HTVMS_wwwName((char *)Home_Dir());
-#else
-			    p = (char *)Home_Dir();
-#endif /* VMS */
-#endif /* DOSPATH */
+			    p = wwwName(Home_Dir());
 			    strcat(addressbuf, p);
 			    strcat(addressbuf, cp+1);
 			    p = addressbuf;
@@ -618,17 +606,8 @@ Try_Redirected_URL:
 			    *cp1 = '\0';
 			    cp1 += 2;
 			    StrAllocCopy(temp, doc->address);
-#ifdef DOSPATH
-			    StrAllocCat(temp, "/");
-			    StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
-			    StrAllocCat(temp,
-					HTVMS_wwwName((char *)Home_Dir()));
-#else
-			    StrAllocCat(temp, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
+			    LYAddHtmlSep(&temp);
+			    StrAllocCat(temp, wwwName(Home_Dir()));
 			    if ((cp2 = strchr(cp1, '/')) != NULL) {
 				LYTrimRelFromAbsPath(cp2);
 				StrAllocCat(temp, cp2);
@@ -712,9 +691,7 @@ Try_Redirected_URL:
 				url_type == LYNXDIRED_URL_TYPE ||
 #endif /* DIRED_SUPPORT */
 				url_type == LYNXPRINT_URL_TYPE ||
-#ifdef EXP_FORMS_OPTIONS
 				url_type == LYNXOPTIONS_URL_TYPE ||
-#endif
 				url_type == LYNXHIST_URL_TYPE ||
 				url_type == LYNXCOOKIE_URL_TYPE ||
 				(LYValidate &&
diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h
index d4840f91..3dc93a14 100644
--- a/src/LYGlobalDefs.h
+++ b/src/LYGlobalDefs.h
@@ -24,6 +24,7 @@
 #define DOWNLOAD_OPTIONS_HELP	"Lynx_users_guide.html#RemoteSource"
 #define HISTORY_PAGE_HELP	"keystrokes/history_help.html"
 #define LIST_PAGE_HELP		"keystrokes/follow_help.html"
+#define LYNXCFG_HELP		"lynx.cfg"
 #define OPTIONS_HELP		"keystrokes/option_help.html"
 #define PRINT_OPTIONS_HELP	"keystrokes/print_help.html"
 #define UPLOAD_OPTIONS_HELP	"Lynx_users_guide.html#DirEd"
@@ -110,6 +111,9 @@ extern int LYShowColor;		/* Show color or monochrome?	    */
 extern int LYChosenShowColor;	/* extended color/monochrome choice */
 extern int LYrcShowColor;	/* ... as read or last written	    */
 
+#ifndef EXP_FORMS_OPTIONS
+extern BOOLEAN LYUseFormsOptions; /* use Forms-based options menu */
+#endif
 extern BOOLEAN LYShowCursor;	/* Show the cursor or hide it?	    */
 extern BOOLEAN verbose_img;	/* display filenames of images?     */
 extern BOOLEAN LYUseDefShoCur;	/* Command line -show_cursor toggle */
diff --git a/src/LYHistory.c b/src/LYHistory.c
index f09099e3..fe077e48 100644
--- a/src/LYHistory.c
+++ b/src/LYHistory.c
@@ -7,9 +7,7 @@
 #include <LYHistory.h>
 #include <LYPrint.h>
 #include <LYDownload.h>
-#ifdef EXP_FORMS_OPTIONS
 #include <LYOptions.h>
-#endif
 #include <LYKeymap.h>
 #include <LYList.h>
 #include <LYShowInfo.h>
@@ -70,9 +68,7 @@ PUBLIC void LYAddVisitedLink ARGS1(
 	!strcmp((doc->title ? doc->title : ""), HISTORY_PAGE_TITLE) ||
 	!strcmp((doc->title ? doc->title : ""), PRINT_OPTIONS_TITLE) ||
 	!strcmp((doc->title ? doc->title : ""), DOWNLOAD_OPTIONS_TITLE) ||
-#ifdef EXP_FORMS_OPTIONS
 	!strcmp((doc->title ? doc->title : ""), OPTIONS_TITLE) ||
-#endif
 #ifdef DIRED_SUPPORT
 	!strcmp((doc->title ? doc->title : ""), DIRED_MENU_TITLE) ||
 	!strcmp((doc->title ? doc->title : ""), UPLOAD_OPTIONS_TITLE) ||
diff --git a/src/LYLocal.c b/src/LYLocal.c
index 0037d5c9..4490e16c 100644
--- a/src/LYLocal.c
+++ b/src/LYLocal.c
@@ -238,7 +238,7 @@ struct dired_menu {
 
 PRIVATE BOOLEAN ok_stat ARGS2(char *, name, struct stat*, sb)
 {
-    char tmpbuf[512];
+    char tmpbuf[LY_MAXPATH+80];
 
     if (stat(name, sb) < 0) {
 	sprintf(tmpbuf, "Unable to get status of '%s'.", name);
@@ -251,7 +251,7 @@ PRIVATE BOOLEAN ok_stat ARGS2(char *, name, struct stat*, sb)
 #ifdef HAVE_LSTAT
 PRIVATE BOOLEAN ok_lstat ARGS2(char *, name, struct stat*, sb)
 {
-    char tmpbuf[512];
+    char tmpbuf[LY_MAXPATH+80];
 
     if (lstat(name, sb) < 0) {
 	sprintf(tmpbuf, "Unable to get status of '%s'.", name);
@@ -1053,6 +1053,7 @@ PRIVATE BOOLEAN permit_location ARGS3(
     static char tempfile[LY_MAXPATH] = "\0";
     char *cp;
     char tmpbuf[LINESIZE];
+    char tmpdst[LY_MAXPATH];
     struct stat dir_info;
 
     if (srcpath) {
@@ -1098,7 +1099,7 @@ PRIVATE BOOLEAN permit_location ARGS3(
 	}
 
 	LYstrncpy(LYValidPermitFile,
-		  srcpath,
+		  local_src,
 		  (sizeof(LYValidPermitFile) - 1));
 
 	fprintf(fp0, "<Html><Head>\n<Title>%s</Title>\n</Head>\n<Body>\n",
@@ -1203,7 +1204,12 @@ form to permit %s %s.\n</Ol>\n</Form>\n",
 	*cp++ = '\0';	/* Null terminate file name and
 			   start working on the masks. */
 
-	HTUnEscape(destpath);	/* Will now operate only on filename part. */
+	if ((destpath = HTfullURL_toFile(destpath)) == 0)
+		return(0);
+
+	strcpy(tmpdst, destpath);	/* operate only on filename */
+	free(destpath);
+	destpath = tmpdst;
 
 	/*
 	 *  Make sure that the file string is the one from
@@ -1942,11 +1948,15 @@ PRIVATE char * render_item ARGS6(
 		    break;
 		case 'p':
 		    cp = path;
+		    if (!LYIsHtmlSep(*cp))
+			*BP_INC = '/';
 		    while (*cp)
 			*BP_INC = *cp++;
 		    break;
 		case 'd':
 		    cp = dir;
+		    if (!LYIsHtmlSep(*cp))
+			*BP_INC = '/';
 		    while (*cp)
 			*BP_INC = *cp++;
 		    break;
diff --git a/src/LYMain.c b/src/LYMain.c
index 6ab74c50..83d0ac22 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -29,9 +29,6 @@
 #include <LYJump.h>
 #include <LYMainLoop.h>
 #include <LYBookmark.h>
-#ifdef DOSPATH
-#include <HTDOS.h>
-#endif
 #include <LYCookie.h>
 
 #ifdef __DJGPP__
@@ -143,6 +140,9 @@ PUBLIC int port_syntax = 1;
 PUBLIC int LYShowColor = SHOW_COLOR_UNKNOWN; /* to show or not to show */
 PUBLIC int LYChosenShowColor = SHOW_COLOR_UNKNOWN; /* whether to show and save */
 PUBLIC int LYrcShowColor = SHOW_COLOR_UNKNOWN;	/* ... as last read or written */
+#ifndef EXP_FORMS_OPTIONS
+PUBLIC BOOLEAN LYUseFormsOptions = FALSE; /* use forms-based options menu */
+#endif
 PUBLIC BOOLEAN LYShowCursor = SHOW_CURSOR; /* to show or not to show */
 PUBLIC BOOLEAN verbose_img = VERBOSE_IMAGES;  /* show filenames or not */
 PUBLIC BOOLEAN LYUseDefShoCur = TRUE;	/* Command line -show_cursor toggle */
@@ -690,15 +690,7 @@ PUBLIC int main ARGS2(
 	*(cp++) = '\0';
 	StrAllocCopy(temp, lynx_temp_space);
 	LYTrimPathSep(temp);
-#ifdef DOSPATH
-	StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
-	StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir()));
-#else
-	StrAllocCat(temp, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
+	StrAllocCat(temp, wwwName(Home_Dir()));
 	StrAllocCat(temp, cp);
 	StrAllocCopy(lynx_temp_space, temp);
 	FREE(temp);
@@ -1237,7 +1229,7 @@ PUBLIC int main ARGS2(
     /*
      *	Process the configuration file.
      */
-    read_cfg(lynx_cfg_file, "main program", 1);
+    read_cfg(lynx_cfg_file, "main program", 1, (FILE *)0);
 
     HTSwitchDTD(New_DTD);
 
@@ -1260,15 +1252,7 @@ PUBLIC int main ARGS2(
 	    *(cp++) = '\0';
 	    StrAllocCopy(temp, lynx_save_space);
 	    LYTrimPathSep(temp);
-#ifdef DOSPATH
-	    StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
-	    StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir()));
-#else
-	    StrAllocCat(temp, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
+	    StrAllocCat(temp, wwwName(Home_Dir()));
 	    StrAllocCat(temp, cp);
 	    StrAllocCopy(lynx_save_space, temp);
 	    FREE(temp);
@@ -1505,16 +1489,7 @@ PUBLIC int main ARGS2(
 	    *(cp++) = '\0';
 	    StrAllocCopy(temp, cp);
 	    LYTrimPathSep(temp);
-#ifdef DOSPATH
-	    StrAllocCopy(LYCookieFile, HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
-	    StrAllocCopy(LYCookieFile, HTVMS_wwwName((char *)Home_Dir()));
-#else
-	    StrAllocCopy(LYCookieFile, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
-
+	    StrAllocCopy(LYCookieFile, wwwName(Home_Dir()));
 	    StrAllocCat(LYCookieFile, temp);
 	    FREE(temp);
 	}
@@ -1660,7 +1635,7 @@ PUBLIC int main ARGS2(
     StrAllocCopy(helpfilepath, helpfile);
     if ((cp = LYPathLeaf(helpfilepath)) != helpfilepath)
         *cp = '\0';
-    LYAddPathSep(&helpfilepath);
+    LYAddHtmlSep(&helpfilepath);
 
     /*
      *	Make sure our bookmark default strings
@@ -2665,6 +2640,12 @@ keys (may be incompatible with some curses packages)"
       "from",		TOGGLE_ARG,		&LYNoFromHeader,
       "toggle transmissions of From headers"
    ),
+#ifndef EXP_FORMS_OPTIONS
+   PARSE_SET(
+      "forms_options",	TOGGLE_ARG,		&LYUseFormsOptions,
+      "toggles forcing of forms-based options menu style"
+   ),
+#endif
    PARSE_SET(
       "ftp",		UNSET_ARG,		&ftp_ok,
       "disable ftp access"
diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c
index 23d2de7a..e3955e42 100644
--- a/src/LYMainLoop.c
+++ b/src/LYMainLoop.c
@@ -37,9 +37,6 @@
 #include <LYCharUtils.h>
 #include <LYCookie.h>
 #include <LYMainLoop.h>
-#ifdef DOSPATH
-#include <HTDOS.h>
-#endif
 
 #ifdef USE_EXTERNALS
 #include <LYExtern.h>
@@ -230,9 +227,6 @@ int mainloop NOARGS
     char *temp = NULL;
     BOOLEAN ForcePush = FALSE;
     BOOLEAN override_LYresubmit_posts = FALSE;
-#ifdef EXP_FORMS_OPTIONS
-    BOOLEAN was_in_options = FALSE;
-#endif
     unsigned int len;
     int i;
 
@@ -682,12 +676,6 @@ try_again:
 			trace_mode_flag = FALSE;
 			fprintf(tfp, "Turning TRACE back on.\n\n");
 		    }
-#ifdef EXP_FORMS_OPTIONS
-		    if (newdoc.address) {
-			was_in_options =
-			    (!strncmp(newdoc.address, "LYNXOPTIONS:", 12));
-		    }
-#endif /* EXP_FORMS_OPTIONS */
 		    FREE(newdoc.address); /* to pop last doc */
 		    FREE(newdoc.bookmark);
 		    LYJumpFileURL = FALSE;
@@ -856,15 +844,7 @@ try_again:
 				  BOOKMARK_TITLE))) &&
 			(temp = HTParse(newdoc.address, "",
 				     PARSE_PATH+PARSE_PUNCTUATION)) != NULL) {
-#ifdef DOSPATH
-			cp = HTDOS_wwwName((char *)Home_Dir());
-#else
-#ifdef VMS
-			cp = HTVMS_wwwName((char *)Home_Dir());
-#else
-			cp = (char *)Home_Dir();
-#endif /* VMS */
-#endif /* DOSPATH */
+			cp = wwwName(Home_Dir());
 			len = strlen(cp);
 #ifdef VMS
 			if (!strncasecomp(temp, cp, len) &&
@@ -919,17 +899,8 @@ try_again:
 				    StrAllocCopy(newdoc.address, temp);
 				    HTuncache_current_document();
 				    FREE(curdoc.address);
-#ifdef DOSPATH
-				    StrAllocCat(newdoc.address,
-					    HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
 				    StrAllocCat(newdoc.address,
-					    HTVMS_wwwName((char *)Home_Dir()));
-#else
-				    StrAllocCat(newdoc.address, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
+					    wwwName(Home_Dir()));
 				    StrAllocCat(newdoc.address, "/");
 				    StrAllocCat(newdoc.address,
 					(strncmp(BookmarkPage, "./", 2) ?
@@ -3742,6 +3713,7 @@ check_goto_URL:
 	    c = dir_list_style;
 #endif /* DIRED_SUPPORT */
 #ifndef EXP_FORMS_OPTIONS
+if (!LYUseFormsOptions) {
 
 	    LYoptions(); /* do the old-style options stuff */
 
@@ -3841,7 +3813,9 @@ check_goto_URL:
 	    StrAllocCopy(CurrentNegoCharset, (pref_charset ?
 					      pref_charset : ""));
 	    refresh_screen = TRUE; /* to repaint screen */
-#else /* EXP_FORMS_OPTIONS */
+	    break;
+} /* end if !LYUseFormsOptions */
+#endif /* !EXP_FORMS_OPTIONS */
 	    /*
 	     * FIXME: Blatantly stolen from LYK_PRINT below.
 	     * how much is really valid here?  I don't know the
@@ -3873,7 +3847,6 @@ check_goto_URL:
 		 */
 		HTuncache_current_document();
 	    }
-#endif /* EXP_FORMS_OPTIONS */
 	    break;
 
 	case LYK_INDEX_SEARCH: /* search for a user string */
diff --git a/src/LYOptions.c b/src/LYOptions.c
index 8d22ad30..905aa333 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -19,6 +19,7 @@
 #include <LYBookmark.h>
 #include <GridText.h>
 #include <LYGetFile.h>
+#include <LYReadCFG.h>
 
 #include <LYLeaks.h>
 
@@ -3067,7 +3068,7 @@ restore_popup_statusline:
     }
 }
 
-#else /* EXP_FORMS_OPTIONS */
+#endif /* !EXP_FORMS_OPTIONS */
 
 /*
  * I'm paranoid about mistyping strings.  Also, this way they get combined
@@ -3362,19 +3363,17 @@ PUBLIC int postoptions ARGS1(
     BOOLEAN raw_mode_changed = FALSE;
     BOOLEAN assume_char_set_changed = FALSE;
     BOOLEAN need_reload = FALSE;
-    char *link_info = NULL;
     int CurrentShowColor = LYShowColor;
 
     /*-------------------------------------------------
      * kludge a link from mbm_menu, the URL was:
-     * fprintf(fp0,"<a href=\"LYNXOPTIONS://MBM_MENU\">go mbm menu</a>\n");
+     * "<a href=\"LYNXOPTIONS://MBM_MENU\">Goto multi-bookmark menu</a>\n"
      *--------------------------------------------------*/
 
-    StrAllocCopy(link_info, newdoc->address);
-    if (strstr(link_info, "LYNXOPTIONS://MBM_MENU")) {
-	edit_bookmarks();
+    if (strstr(newdoc->address, "LYNXOPTIONS://MBM_MENU")) {
 	FREE(newdoc->post_data);
 	FREE(data);
+	edit_bookmarks();
 	return(NULLFILE);
     }
 
@@ -3598,7 +3597,15 @@ PUBLIC int postoptions ARGS1(
 	if (!strcmp(data[i].tag, user_agent_string) && (!no_useragent)) {
 	    FREE(LYUserAgent);
 	    /* ignore Copyright warning ? */
-	    StrAllocCopy(LYUserAgent, data[i].value);
+	    StrAllocCopy(LYUserAgent,
+	    	*(data[i].value)
+	    	? data[i].value
+		: LYUserAgentDefault);
+	    if (LYUserAgent && *LYUserAgent &&
+		!strstr(LYUserAgent, "Lynx") &&
+		!strstr(LYUserAgent, "lynx")) {
+		HTAlert(UA_COPYRIGHT_WARNING);
+	    }
 	}
     } /* end of loop */
 
@@ -4018,6 +4025,10 @@ PUBLIC int gen_options ARGS1(
 		     NOTEMPTY(LYUserAgent), text_len, "");
     }
 
+    fprintf(fp0,
+	    "<a href=\"%s\">lynx.cfg information (read-only)</a>\n",
+	    lynx_cfg_infopage());
+
     fprintf(fp0,"\n</pre>\n");
 
     /* Submit/Reset */
@@ -4035,4 +4046,3 @@ PUBLIC int gen_options ARGS1(
     LYCloseTempFP(fp0);
     return(0);
 }
-#endif /* EXP_FORMS_OPTIONS */
diff --git a/src/LYOptions.h b/src/LYOptions.h
index c11c6150..ccbc5b1d 100644
--- a/src/LYOptions.h
+++ b/src/LYOptions.h
@@ -7,10 +7,10 @@ extern BOOLEAN term_options;
 
 extern void edit_bookmarks NOPARAMS;
 
-#ifdef EXP_FORMS_OPTIONS
 extern int postoptions PARAMS((document *newdoc));
 extern int gen_options PARAMS((char **newfile));
-#else
+
+#ifndef EXP_FORMS_OPTIONS
 extern void LYoptions NOPARAMS;
 
 /*
@@ -73,6 +73,6 @@ extern void LYoptions NOPARAMS;
 #define B_VERBOSE_IMAGES 50
 #define C_VERBOSE_IMAGES (B_VERBOSE_IMAGES + 21)
 
-#endif /* EXP_FORMS_OPTIONS */
+#endif /* !EXP_FORMS_OPTIONS */
 
 #endif /* LYOPTIONS_H */
diff --git a/src/LYPrint.c b/src/LYPrint.c
index 55bf1b52..94e447a0 100644
--- a/src/LYPrint.c
+++ b/src/LYPrint.c
@@ -372,15 +372,7 @@ PUBLIC int printfile ARGS1(
 		    *(cp++) = '\0';
 		    strcpy(buffer, filename);
 		    LYTrimPathSep(buffer);
-#ifdef DOSPATH
-		    strcat(buffer, HTDOS_wwwName((char *)Home_Dir()));
-#else
-#ifdef VMS
-		    strcat(buffer, HTVMS_wwwName((char *)Home_Dir()));
-#else
-		    strcat(buffer, Home_Dir());
-#endif /* VMS */
-#endif /* DOSPATH */
+		    strcat(buffer, wwwName(Home_Dir()));
 		    strcat(buffer, cp);
 		    strcpy(filename, buffer);
 		}
@@ -1283,7 +1275,8 @@ PUBLIC int print_options ARGS3(
     if (no_print || no_disk_save || child_lynx || no_mail)
 	fprintf(fp0, "   <em>Some print functions have been disabled!</em>\n");
 
-    fprintf(fp0, "\nStandard print options:\n");
+    fprintf(fp0, "\n%s options:\n",
+	(user_mode == NOVICE_MODE) ? "Standard print" : "Print");
 
     if (child_lynx == FALSE && no_disk_save == FALSE && no_print == FALSE)
 	fprintf(fp0,
@@ -1305,7 +1298,9 @@ PUBLIC int print_options ARGS3(
 		lines_in_file);
 #endif
 
-    fprintf(fp0, "\nLocal additions:\n");
+    if (user_mode == NOVICE_MODE)
+	fprintf(fp0, "\nLocal additions:\n");
+
     for (count = 0, cur_printer = printers; cur_printer != NULL;
 	cur_printer = cur_printer->next, count++)
     if (no_print == FALSE || cur_printer->always_enabled) {
diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c
index bf422aa6..53ccd4b3 100644
--- a/src/LYReadCFG.c
+++ b/src/LYReadCFG.c
@@ -16,6 +16,7 @@
 #include <LYBookmark.h>
 #include <LYCookie.h>
 #include <LYReadCFG.h>
+#include <HTAlert.h>
 
 #ifdef DIRED_SUPPORT
 #include <LYLocal.h>
@@ -473,14 +474,16 @@ typedef struct
 {
    CONST char *name;
    int type;
+#define CONF_UNSPECIFIED	0
 #define CONF_BOOL		1      /* BOOLEAN type */
 #define CONF_FUN		2
 #define CONF_INT		3
 #define CONF_STR		4
 #define CONF_ENV		5      /* from environment variable */
-#define CONF_INCLUDE		6      /* include file-- handle special */
-#define CONF_ADD_ITEM		7
-#define CONF_ADD_TRUSTED	8
+#define CONF_ENV2		6      /* from environment VARIABLE */
+#define CONF_INCLUDE		7      /* include file-- handle special */
+#define CONF_ADD_ITEM		8
+#define CONF_ADD_TRUSTED	9
 
    ParseData;
 }
@@ -829,6 +832,9 @@ static Config_Type Config_Table [] =
      PARSE_ENV("finger_proxy", CONF_ENV, 0 ),
      PARSE_SET("force_8bit_toupper", CONF_BOOL, UCForce8bitTOUPPER),
      PARSE_SET("force_ssl_cookies_secure", CONF_BOOL, LYForceSSLCookiesSecure),
+#ifndef EXP_FORMS_OPTIONS
+     PARSE_SET("forms_options", CONF_BOOL, LYUseFormsOptions),
+#endif
      PARSE_ENV("ftp_proxy", CONF_ENV, 0 ),
      PARSE_STR("global_extension_map", CONF_STR, global_extension_map),
      PARSE_STR("global_mailcap", CONF_STR, global_type_map),
@@ -880,7 +886,7 @@ static Config_Type Config_Table [] =
      PARSE_ENV("newspost_proxy", CONF_ENV, 0),
      PARSE_ENV("newsreply_proxy", CONF_ENV, 0),
      PARSE_ENV("nntp_proxy", CONF_ENV, 0),
-     PARSE_ENV("nntpserver", CONF_ENV, 0),
+     PARSE_ENV("nntpserver", CONF_ENV2, 0), /* actually NNTPSERVER */
      PARSE_SET("no_dot_files", CONF_BOOL, no_dotfiles),
      PARSE_SET("no_file_referer", CONF_BOOL, no_filereferer),
 #ifndef VMS
@@ -974,10 +980,11 @@ PUBLIC void free_lynx_cfg NOARGS
 /*
  * Process the configuration file (lynx.cfg).
  */
-PUBLIC void read_cfg ARGS3(
+PUBLIC void read_cfg ARGS4(
 	char *, cfg_filename,
 	char *, parent_filename,
-	int,	nesting_level)
+	int,	nesting_level,
+	FILE *,	fp0)
 {
     FILE *fp;
     char buffer[MAX_LINE_BUFFER_LEN];
@@ -1082,7 +1089,9 @@ PUBLIC void read_cfg ARGS3(
 #else
 	q = (ConfigUnion *)(&(tbl->value));
 #endif
-	switch (tbl->type) {
+	switch ((fp0 != 0 && tbl->type != CONF_INCLUDE)
+		? CONF_UNSPECIFIED
+		: tbl->type) {
 	case CONF_BOOL:
 	    if (q->set_value != 0)
 		*(q->set_value) = is_true (value);
@@ -1111,12 +1120,19 @@ PUBLIC void read_cfg ARGS3(
 	    break;
 
 	case CONF_ENV:
-	    if (getenv (tbl->name) == 0) {
+	case CONF_ENV2:
+
+	    if (tbl->type == CONF_ENV)
+	    	LYLowerCase(name);
+	    else
+	    	LYUpperCase(name);
+		
+	    if (getenv (name) == 0) {
 #ifdef VMS
 		Define_VMSLogical(tbl->name, value);
 #else
 		char tmpbuf[MAX_LINE_BUFFER_LEN];
-		sprintf (tmpbuf, "%s=%s", tbl->name, value);
+		sprintf (tmpbuf, "%s=%s", name, value);
 		if ((q->str_value = (char **)calloc(1, sizeof(char **))) != 0) {
 			StrAllocCopy(*(q->str_value), tmpbuf);
 			putenv (*(q->str_value));
@@ -1127,18 +1143,29 @@ PUBLIC void read_cfg ARGS3(
 
 	case CONF_INCLUDE:
 	    /* include another file */
-	    read_cfg (value, cfg_filename, nesting_level + 1);
+	    if (fp0 != 0) {
+		fprintf(fp0, "%s:%s\n\n", name, value);
+		fprintf(fp0, "    #&lt;begin  %s&gt;\n", value);
+	    }
+	    read_cfg (value, cfg_filename, nesting_level + 1, fp0);
+	    if (fp0 != 0)
+		fprintf(fp0, "    #&lt;end of %s&gt;\n\n", value);
 	    break;
 
 	case CONF_ADD_ITEM:
 	    if (q->add_value != 0)
 		add_item_to_list (value, q->add_value);
 	    break;
+
 #if defined(EXEC_LINKS) || defined(LYNXCGI_LINKS)
 	case CONF_ADD_TRUSTED:
 	    add_trusted (value, q->def_value);
 	    break;
 #endif
+	default:
+	    if (fp0 != 0)
+		fprintf(fp0, "%s:%s\n", name, value);
+	    break;
 	}
     }
 
@@ -1174,6 +1201,56 @@ PUBLIC void read_cfg ARGS3(
     }
 
     if (LYCookieRejectDomains != NULL) {
-        cookie_add_rejectlist(LYCookieRejectDomains);
+	cookie_add_rejectlist(LYCookieRejectDomains);
     }
 }
+
+/*
+ * lynx.cfg infopage, returns local url.
+ */
+PUBLIC char *lynx_cfg_infopage NOARGS
+{
+    static char *local_url;
+    char tempfile[LY_MAXPATH];
+    char *temp = 0;
+    FILE *fp0;
+
+    if (local_url == 0) {
+	if ((fp0 = LYOpenTemp(tempfile, HTML_SUFFIX, "w")) == NULL) {
+	    HTAlert(CANNOT_OPEN_TEMP);
+	    return(0);
+	}
+	LYLocalFileToURL(&local_url, tempfile);
+
+	LYforce_no_cache = TRUE;  /* don't cache this doc */
+
+#ifdef HAVE_CONFIG_H
+	StrAllocCopy(temp, LYNX_CFG_FILE);
+#else
+	StrAllocCopy(temp, helpfilepath);
+	StrAllocCat(temp, LYNXCFG_HELP);  /* DJGPP/Win32/VMS should care of */
+#endif /* HAVE_CONFIG_H */
+
+	BeginInternalPage (fp0, LYNXCFG_TITLE, NULL);
+	fprintf(fp0, "<pre>\n");
+	fprintf(fp0, "<em>This is read from your lynx.cfg file,\n");
+
+	fprintf(fp0, "please \"read\" distribution's <a href=\"%s\">lynx.cfg",
+		     temp);
+	fprintf(fp0, "</a> for more comments.</em>\n\n");
+
+	fprintf(fp0, "    #<em>Your primary configuration %s</em>\n",
+		     lynx_cfg_file);
+	/*
+	 *  Process the configuration file.
+	 */
+	read_cfg(lynx_cfg_file, "main program", 1, fp0);
+
+	FREE(temp);
+	fprintf(fp0, "</pre>\n");
+	EndInternalPage(fp0);
+	LYCloseTempFP(fp0);
+    }
+
+    return(local_url);
+}
diff --git a/src/LYReadCFG.h b/src/LYReadCFG.h
index 6b60165d..acbbd276 100644
--- a/src/LYReadCFG.h
+++ b/src/LYReadCFG.h
@@ -43,8 +43,10 @@ extern int default_bg;
 extern int check_color PARAMS((char * color, int the_default));
 #endif
 
-extern void read_cfg PARAMS((char *cfg_filename, char *parent_filename, int nesting_level));
+extern void read_cfg PARAMS((char *cfg_filename, char *parent_filename, int nesting_level, FILE *fp0));
 extern void free_lynx_cfg NOPARAMS;
 extern BOOLEAN have_read_cfg;
 
+extern char *lynx_cfg_infopage NOPARAMS;
+
 #endif /* LYREADCFG_H */
diff --git a/src/LYShowInfo.c b/src/LYShowInfo.c
index e9bbfcb6..fa00ccc3 100644
--- a/src/LYShowInfo.c
+++ b/src/LYShowInfo.c
@@ -28,21 +28,30 @@
 
 #define PutDefs(table, n) fprintf(fp0, "%-35s %s\n", table[n].name, table[n].value)
 
+/*
+ *  Compile-time definitions info, returns local url
+ */
 PRIVATE char *lynx_compile_opts NOARGS
 {
-    static char tempfile[256];
+    char tempfile[LY_MAXPATH];
 #include <cfg_defs.h>
     unsigned n;
+    static char *info_url;
     FILE *fp0;
 
-    if (strlen(tempfile) == 0) {
+    if (info_url == 0) {
 	if ((fp0 = LYOpenTemp (tempfile, HTML_SUFFIX, "w")) == 0) {
 	    HTAlert(CANNOT_OPEN_TEMP);
-	    tempfile[0] = '\0';
 	    return(0);
 	}
+	LYLocalFileToURL(&info_url, tempfile);
+
 	BeginInternalPage (fp0, CONFIG_DEF_TITLE, NULL);
 	fprintf(fp0, "<pre>\n");
+
+	fprintf(fp0, "See also <a href=\"%s\">your lynx.cfg</a> for run-time options\n\n",
+		     lynx_cfg_infopage());
+
 	fprintf(fp0, "\n<em>config.cache</em>\n");
 	for (n = 0; n < TABLESIZE(config_cache); n++) {
 	    PutDefs(config_cache, n);
@@ -55,7 +64,7 @@ PRIVATE char *lynx_compile_opts NOARGS
 	EndInternalPage(fp0);
 	LYCloseTempFP(fp0);
     }
-    return tempfile;
+    return info_url;
 }
 #else
 #undef HAVE_CFG_DEFS_H
@@ -72,7 +81,7 @@ PUBLIC int showinfo ARGS4(
 	document *,	newdoc,
 	char *, 	owner_address)
 {
-    static char tempfile[256];
+    static char tempfile[LY_MAXPATH];
     static char *info_url;
     int url_type;
     FILE *fp0;
@@ -80,7 +89,7 @@ PUBLIC int showinfo ARGS4(
     CONST char *cp;
 
 #ifdef DIRED_SUPPORT
-    char temp[300];
+    char temp[LY_MAXPATH];
     struct stat dir_info;
     struct passwd *pw;
     struct group *grp;
@@ -116,19 +125,18 @@ PUBLIC int showinfo ARGS4(
     fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
 		 SHOWINFO_TITLE);
 
-    LYLocalFileToURL(&info_url, lynx_compile_opts());
     fprintf(fp0, "<h1>%s %s (%.*s) (<a href=\"%s\">%s</a>)",
 		 LYNX_NAME, LYNX_VERSION,
 		 LYNX_DATE_LEN,
 		 (LYNX_RELEASE ? LYNX_RELEASE_DATE : &LYNX_DATE[LYNX_DATE_OFF]),
-		 (LYNX_RELEASE ? LYNX_WWW_HOME   : LYNX_WWW_DIST),
-		 (LYNX_RELEASE ? "latest release" : "development version") );
+		 (LYNX_RELEASE ? LYNX_WWW_HOME     : LYNX_WWW_DIST),
+		 (LYNX_RELEASE ? "latest release"  : "development version") );
 #ifdef HAVE_CFG_DEFS_H
     fprintf(fp0, " - <a href=\"%s\">compile time settings</a></h1>\n",
-		 info_url);
+		 lynx_compile_opts());
 #else
-    fprintf(fp0, "</h1>\n"
-		 ); /* do not forget to close </h1> */
+    fprintf(fp0, " - <a href=\"%s\">your lynx.cfg</a></h1>\n",
+		 lynx_cfg_infopage());
 #endif
 
 #ifdef DIRED_SUPPORT
diff --git a/src/LYUtils.c b/src/LYUtils.c
index 428d9281..9f1ae177 100644
--- a/src/LYUtils.c
+++ b/src/LYUtils.c
@@ -3902,12 +3902,8 @@ have_VMS_URL:
 	     */
 #if defined (DOSPATH) || defined (__EMX__)
 	    if (old_string[1] != ':' && old_string[1] != '|') {
-#ifdef DOSPATH
-		StrAllocCopy(temp, HTDOS_wwwName(curdir));
-#else
-		StrAllocCopy(temp, curdir);
-#endif
-		LYAddPathSep(&temp);
+		StrAllocCopy(temp, wwwName(curdir));
+		LYAddHtmlSep(&temp);
 		LYstrncpy(curdir, temp, (DIRNAMESIZE - 1));
 		StrAllocCat(temp, old_string);
 	    } else {
@@ -5814,6 +5810,28 @@ PUBLIC void LYCleanupTemp NOARGS
 }
 
 /*
+ *  Convert local pathname to www name
+ *  (do not bother about file://localhost prefix at this point).
+ */
+PUBLIC  char * wwwName ARGS1(
+	CONST char *,	pathname)
+{
+    char *cp = NULL;
+
+#ifdef DOSPATH
+    cp = HTDOS_wwwName((char *)pathname);
+#else
+#ifdef VMS
+    cp = HTVMS_wwwName((char *)pathname);
+#else
+    cp = (char *)pathname;
+#endif /* VMS */
+#endif /* DOSPATH */
+
+    return cp;
+}
+
+/*
  * Convert a local filename to a URL
  */
 PUBLIC void LYLocalFileToURL ARGS2(
@@ -5824,15 +5842,7 @@ PUBLIC void LYLocalFileToURL ARGS2(
 
     StrAllocCopy(*target, "file://localhost");
 
-#if defined(DOSPATH) || defined(__EMX__)
-    leaf = HTDOS_wwwName(source);
-#else
-#ifdef VMS
-    leaf = HTVMS_wwwName(source);
-#else
-    leaf = (char *)source;
-#endif /* VMS */
-#endif /* DOSPATH */
+    leaf = wwwName(source);
 
     if (!LYIsHtmlSep(*leaf))
 	LYAddHtmlSep(target);
diff --git a/src/LYUtils.h b/src/LYUtils.h
index e70673ea..46d5d93c 100644
--- a/src/LYUtils.h
+++ b/src/LYUtils.h
@@ -36,13 +36,14 @@ extern char *LYSysShell NOPARAMS;
 extern char *LYgetXDisplay NOPARAMS;
 extern char *quote_pathname PARAMS((char *pathname));
 extern char *strip_trailing_slash PARAMS((char * my_dirname));
+extern char *wwwName PARAMS((CONST char *pathname));
 extern int HTCheckForInterrupt NOPARAMS;
 extern int LYCheckForProxyURL PARAMS((char *filename));
+extern int LYOpenInternalPage PARAMS((FILE **fp0, char **newfile));
 extern int LYSystem PARAMS((char *command));
 extern int is_url PARAMS((char *filename));
 extern int number2arrows PARAMS((int number));
 extern time_t LYmktime PARAMS((char *string, BOOL absolute));
-extern int LYOpenInternalPage PARAMS((FILE **fp0, char **newfile));
 extern void BeginInternalPage PARAMS((FILE *fp0, char *Title, char *HelpURL));
 extern void EndInternalPage PARAMS((FILE *fp0));
 extern void HTAddSugFilename PARAMS((char *fname));
@@ -142,13 +143,10 @@ extern BOOLEAN mustshow;
 #define LYNXIMGMAP_URL_TYPE	33
 #define LYNXCOOKIE_URL_TYPE	34
 #define LYNXDIRED_URL_TYPE	35
+#define LYNXOPTIONS_URL_TYPE	36
 
-#define PROXY_URL_TYPE		36
+#define PROXY_URL_TYPE		37
 
-/*
- * FIXME: Where should this really go?
- */
-#define LYNXOPTIONS_URL_TYPE	37
 #define UNKNOWN_URL_TYPE	38
 
 /*
diff --git a/src/chrtrans/cp775_uni.tbl b/src/chrtrans/cp775_uni.tbl
index 8e56c3f4..4d63208b 100644
--- a/src/chrtrans/cp775_uni.tbl
+++ b/src/chrtrans/cp775_uni.tbl
@@ -20,134 +20,10 @@ OBaltic Rim (cp775)
 #
 #    The entries are in cp775_DOSBaltRim order
 #
-#0x00	U+0000	#NULL
-#0x01	U+0001	#START OF HEADING
-#0x02	U+0002	#START OF TEXT
-#0x03	U+0003	#END OF TEXT
-#0x04	U+0004	#END OF TRANSMISSION
-#0x05	U+0005	#ENQUIRY
-#0x06	U+0006	#ACKNOWLEDGE
-#0x07	U+0007	#BELL
-#0x08	U+0008	#BACKSPACE
-#0x09	U+0009	#HORIZONTAL TABULATION
-#0x0a	U+000a	#LINE FEED
-#0x0b	U+000b	#VERTICAL TABULATION
-#0x0c	U+000c	#FORM FEED
-#0x0d	U+000d	#CARRIAGE RETURN
-#0x0e	U+000e	#SHIFT OUT
-#0x0f	U+000f	#SHIFT IN
-#0x10	U+0010	#DATA LINK ESCAPE
-#0x11	U+0011	#DEVICE CONTROL ONE
-#0x12	U+0012	#DEVICE CONTROL TWO
-#0x13	U+0013	#DEVICE CONTROL THREE
-#0x14	U+0014	#DEVICE CONTROL FOUR
-#0x15	U+0015	#NEGATIVE ACKNOWLEDGE
-#0x16	U+0016	#SYNCHRONOUS IDLE
-#0x17	U+0017	#END OF TRANSMISSION BLOCK
-#0x18	U+0018	#CANCEL
-#0x19	U+0019	#END OF MEDIUM
-#0x1a	U+001a	#SUBSTITUTE
-#0x1b	U+001b	#ESCAPE
-#0x1c	U+001c	#FILE SEPARATOR
-#0x1d	U+001d	#GROUP SEPARATOR
-#0x1e	U+001e	#RECORD SEPARATOR
-#0x1f	U+001f	#UNIT SEPARATOR
-0x20	U+0020	#SPACE
-0x21	U+0021	#EXCLAMATION MARK
-0x22	U+0022	#QUOTATION MARK
-0x23	U+0023	#NUMBER SIGN
-0x24	U+0024	#DOLLAR SIGN
-0x25	U+0025	#PERCENT SIGN
-0x26	U+0026	#AMPERSAND
-0x27	U+0027	#APOSTROPHE
-0x28	U+0028	#LEFT PARENTHESIS
-0x29	U+0029	#RIGHT PARENTHESIS
-0x2a	U+002a	#ASTERISK
-0x2b	U+002b	#PLUS SIGN
-0x2c	U+002c	#COMMA
-0x2d	U+002d	#HYPHEN-MINUS
-0x2e	U+002e	#FULL STOP
-0x2f	U+002f	#SOLIDUS
-0x30	U+0030	#DIGIT ZERO
-0x31	U+0031	#DIGIT ONE
-0x32	U+0032	#DIGIT TWO
-0x33	U+0033	#DIGIT THREE
-0x34	U+0034	#DIGIT FOUR
-0x35	U+0035	#DIGIT FIVE
-0x36	U+0036	#DIGIT SIX
-0x37	U+0037	#DIGIT SEVEN
-0x38	U+0038	#DIGIT EIGHT
-0x39	U+0039	#DIGIT NINE
-0x3a	U+003a	#COLON
-0x3b	U+003b	#SEMICOLON
-0x3c	U+003c	#LESS-THAN SIGN
-0x3d	U+003d	#EQUALS SIGN
-0x3e	U+003e	#GREATER-THAN SIGN
-0x3f	U+003f	#QUESTION MARK
-0x40	U+0040	#COMMERCIAL AT
-0x41	U+0041	#LATIN CAPITAL LETTER A
-0x42	U+0042	#LATIN CAPITAL LETTER B
-0x43	U+0043	#LATIN CAPITAL LETTER C
-0x44	U+0044	#LATIN CAPITAL LETTER D
-0x45	U+0045	#LATIN CAPITAL LETTER E
-0x46	U+0046	#LATIN CAPITAL LETTER F
-0x47	U+0047	#LATIN CAPITAL LETTER G
-0x48	U+0048	#LATIN CAPITAL LETTER H
-0x49	U+0049	#LATIN CAPITAL LETTER I
-0x4a	U+004a	#LATIN CAPITAL LETTER J
-0x4b	U+004b	#LATIN CAPITAL LETTER K
-0x4c	U+004c	#LATIN CAPITAL LETTER L
-0x4d	U+004d	#LATIN CAPITAL LETTER M
-0x4e	U+004e	#LATIN CAPITAL LETTER N
-0x4f	U+004f	#LATIN CAPITAL LETTER O
-0x50	U+0050	#LATIN CAPITAL LETTER P
-0x51	U+0051	#LATIN CAPITAL LETTER Q
-0x52	U+0052	#LATIN CAPITAL LETTER R
-0x53	U+0053	#LATIN CAPITAL LETTER S
-0x54	U+0054	#LATIN CAPITAL LETTER T
-0x55	U+0055	#LATIN CAPITAL LETTER U
-0x56	U+0056	#LATIN CAPITAL LETTER V
-0x57	U+0057	#LATIN CAPITAL LETTER W
-0x58	U+0058	#LATIN CAPITAL LETTER X
-0x59	U+0059	#LATIN CAPITAL LETTER Y
-0x5a	U+005a	#LATIN CAPITAL LETTER Z
-0x5b	U+005b	#LEFT SQUARE BRACKET
-0x5c	U+005c	#REVERSE SOLIDUS
-0x5d	U+005d	#RIGHT SQUARE BRACKET
-0x5e	U+005e	#CIRCUMFLEX ACCENT
-0x5f	U+005f	#LOW LINE
-0x60	U+0060	#GRAVE ACCENT
-0x61	U+0061	#LATIN SMALL LETTER A
-0x62	U+0062	#LATIN SMALL LETTER B
-0x63	U+0063	#LATIN SMALL LETTER C
-0x64	U+0064	#LATIN SMALL LETTER D
-0x65	U+0065	#LATIN SMALL LETTER E
-0x66	U+0066	#LATIN SMALL LETTER F
-0x67	U+0067	#LATIN SMALL LETTER G
-0x68	U+0068	#LATIN SMALL LETTER H
-0x69	U+0069	#LATIN SMALL LETTER I
-0x6a	U+006a	#LATIN SMALL LETTER J
-0x6b	U+006b	#LATIN SMALL LETTER K
-0x6c	U+006c	#LATIN SMALL LETTER L
-0x6d	U+006d	#LATIN SMALL LETTER M
-0x6e	U+006e	#LATIN SMALL LETTER N
-0x6f	U+006f	#LATIN SMALL LETTER O
-0x70	U+0070	#LATIN SMALL LETTER P
-0x71	U+0071	#LATIN SMALL LETTER Q
-0x72	U+0072	#LATIN SMALL LETTER R
-0x73	U+0073	#LATIN SMALL LETTER S
-0x74	U+0074	#LATIN SMALL LETTER T
-0x75	U+0075	#LATIN SMALL LETTER U
-0x76	U+0076	#LATIN SMALL LETTER V
-0x77	U+0077	#LATIN SMALL LETTER W
-0x78	U+0078	#LATIN SMALL LETTER X
-0x79	U+0079	#LATIN SMALL LETTER Y
-0x7a	U+007a	#LATIN SMALL LETTER Z
-0x7b	U+007b	#LEFT CURLY BRACKET
-0x7c	U+007c	#VERTICAL LINE
-0x7d	U+007d	#RIGHT CURLY BRACKET
-0x7e	U+007e	#TILDE
-#0x7f	U+007f	#DELETE
+##################
+
+0x20-0x7e       idem
+#
 0x80	U+0106	#LATIN CAPITAL LETTER C WITH ACUTE
 0x81	U+00fc	#LATIN SMALL LETTER U WITH DIAERESIS
 0x82	U+00e9	#LATIN SMALL LETTER E WITH ACUTE
diff --git a/src/chrtrans/cp850_uni.tbl b/src/chrtrans/cp850_uni.tbl
index 816cc2db..af4dbff5 100644
--- a/src/chrtrans/cp850_uni.tbl
+++ b/src/chrtrans/cp850_uni.tbl
@@ -12,149 +12,25 @@ OWestern (cp850)
 
 #
 #    Name:     cp850_DOSLatin1 to Unicode table
-#    Unicode version: 1.1
-#    Table version: 1.1
+#    Unicode version: 2.0
+#    Table version: 2.00
 #    Table format:  Format A
-#    Date:          03/31/95
-#    Authors:       Michel Suignard <michelsu@microsoft.com>
-#                   Lori Hoerth <lorih@microsoft.com>
+#    Date:          04/24/96
+#    Authors:       Lori Brownell <loribr@microsoft.com>
+#                   K.D. Chang    <a-kchang@microsoft.com>
 #    General notes: none
 #
 #    Format: Three tab-separated columns
 #        Column #1 is the cp850_DOSLatin1 code (in hex)
-#        Column #2 is the Unicode (in hex as U+XXXX)
+#        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
 #    The entries are in cp850_DOSLatin1 order
 #
-#0x00	U+0000	#NULL
-#0x01	U+0001	#START OF HEADING
-#0x02	U+0002	#START OF TEXT
-#0x03	U+0003	#END OF TEXT
-#0x04	U+0004	#END OF TRANSMISSION
-#0x05	U+0005	#ENQUIRY
-#0x06	U+0006	#ACKNOWLEDGE
-#0x07	U+0007	#BELL
-#0x08	U+0008	#BACKSPACE
-#0x09	U+0009	#HORIZONTAL TABULATION
-#0x0a	U+000a	#LINE FEED
-#0x0b	U+000b	#VERTICAL TABULATION
-#0x0c	U+000c	#FORM FEED
-#0x0d	U+000d	#CARRIAGE RETURN
-#0x0e	U+000e	#SHIFT OUT
-#0x0f	U+000f	#SHIFT IN
-#0x10	U+0010	#DATA LINK ESCAPE
-#0x11	U+0011	#DEVICE CONTROL ONE
-#0x12	U+0012	#DEVICE CONTROL TWO
-#0x13	U+0013	#DEVICE CONTROL THREE
-#0x14	U+0014	#DEVICE CONTROL FOUR
-#0x15	U+0015	#NEGATIVE ACKNOWLEDGE
-#0x16	U+0016	#SYNCHRONOUS IDLE
-#0x17	U+0017	#END OF TRANSMISSION BLOCK
-#0x18	U+0018	#CANCEL
-#0x19	U+0019	#END OF MEDIUM
-#0x1a	U+001a	#SUBSTITUTE
-#0x1b	U+001b	#ESCAPE
-#0x1c	U+001c	#FILE SEPARATOR
-#0x1d	U+001d	#GROUP SEPARATOR
-#0x1e	U+001e	#RECORD SEPARATOR
-#0x1f	U+001f	#UNIT SEPARATOR
-0x20	U+0020	#SPACE
-0x21	U+0021	#EXCLAMATION MARK
-0x22	U+0022	#QUOTATION MARK
-0x23	U+0023	#NUMBER SIGN
-0x24	U+0024	#DOLLAR SIGN
-0x25	U+0025	#PERCENT SIGN
-0x26	U+0026	#AMPERSAND
-0x27	U+0027	#APOSTROPHE
-0x28	U+0028	#LEFT PARENTHESIS
-0x29	U+0029	#RIGHT PARENTHESIS
-0x2a	U+002a	#ASTERISK
-0x2b	U+002b	#PLUS SIGN
-0x2c	U+002c	#COMMA
-0x2d	U+002d	#HYPHEN-MINUS
-0x2e	U+002e	#FULL STOP
-0x2f	U+002f	#SOLIDUS
-0x30	U+0030	#DIGIT ZERO
-0x31	U+0031	#DIGIT ONE
-0x32	U+0032	#DIGIT TWO
-0x33	U+0033	#DIGIT THREE
-0x34	U+0034	#DIGIT FOUR
-0x35	U+0035	#DIGIT FIVE
-0x36	U+0036	#DIGIT SIX
-0x37	U+0037	#DIGIT SEVEN
-0x38	U+0038	#DIGIT EIGHT
-0x39	U+0039	#DIGIT NINE
-0x3a	U+003a	#COLON
-0x3b	U+003b	#SEMICOLON
-0x3c	U+003c	#LESS-THAN SIGN
-0x3d	U+003d	#EQUALS SIGN
-0x3e	U+003e	#GREATER-THAN SIGN
-0x3f	U+003f	#QUESTION MARK
-0x40	U+0040	#COMMERCIAL AT
-0x41	U+0041	#LATIN CAPITAL LETTER A
-0x42	U+0042	#LATIN CAPITAL LETTER B
-0x43	U+0043	#LATIN CAPITAL LETTER C
-0x44	U+0044	#LATIN CAPITAL LETTER D
-0x45	U+0045	#LATIN CAPITAL LETTER E
-0x46	U+0046	#LATIN CAPITAL LETTER F
-0x47	U+0047	#LATIN CAPITAL LETTER G
-0x48	U+0048	#LATIN CAPITAL LETTER H
-0x49	U+0049	#LATIN CAPITAL LETTER I
-0x4a	U+004a	#LATIN CAPITAL LETTER J
-0x4b	U+004b	#LATIN CAPITAL LETTER K
-0x4c	U+004c	#LATIN CAPITAL LETTER L
-0x4d	U+004d	#LATIN CAPITAL LETTER M
-0x4e	U+004e	#LATIN CAPITAL LETTER N
-0x4f	U+004f	#LATIN CAPITAL LETTER O
-0x50	U+0050	#LATIN CAPITAL LETTER P
-0x51	U+0051	#LATIN CAPITAL LETTER Q
-0x52	U+0052	#LATIN CAPITAL LETTER R
-0x53	U+0053	#LATIN CAPITAL LETTER S
-0x54	U+0054	#LATIN CAPITAL LETTER T
-0x55	U+0055	#LATIN CAPITAL LETTER U
-0x56	U+0056	#LATIN CAPITAL LETTER V
-0x57	U+0057	#LATIN CAPITAL LETTER W
-0x58	U+0058	#LATIN CAPITAL LETTER X
-0x59	U+0059	#LATIN CAPITAL LETTER Y
-0x5a	U+005a	#LATIN CAPITAL LETTER Z
-0x5b	U+005b	#LEFT SQUARE BRACKET
-0x5c	U+005c	#REVERSE SOLIDUS
-0x5d	U+005d	#RIGHT SQUARE BRACKET
-0x5e	U+005e	#CIRCUMFLEX ACCENT
-0x5f	U+005f	#LOW LINE
-0x60	U+0060	#GRAVE ACCENT
-0x61	U+0061	#LATIN SMALL LETTER A
-0x62	U+0062	#LATIN SMALL LETTER B
-0x63	U+0063	#LATIN SMALL LETTER C
-0x64	U+0064	#LATIN SMALL LETTER D
-0x65	U+0065	#LATIN SMALL LETTER E
-0x66	U+0066	#LATIN SMALL LETTER F
-0x67	U+0067	#LATIN SMALL LETTER G
-0x68	U+0068	#LATIN SMALL LETTER H
-0x69	U+0069	#LATIN SMALL LETTER I
-0x6a	U+006a	#LATIN SMALL LETTER J
-0x6b	U+006b	#LATIN SMALL LETTER K
-0x6c	U+006c	#LATIN SMALL LETTER L
-0x6d	U+006d	#LATIN SMALL LETTER M
-0x6e	U+006e	#LATIN SMALL LETTER N
-0x6f	U+006f	#LATIN SMALL LETTER O
-0x70	U+0070	#LATIN SMALL LETTER P
-0x71	U+0071	#LATIN SMALL LETTER Q
-0x72	U+0072	#LATIN SMALL LETTER R
-0x73	U+0073	#LATIN SMALL LETTER S
-0x74	U+0074	#LATIN SMALL LETTER T
-0x75	U+0075	#LATIN SMALL LETTER U
-0x76	U+0076	#LATIN SMALL LETTER V
-0x77	U+0077	#LATIN SMALL LETTER W
-0x78	U+0078	#LATIN SMALL LETTER X
-0x79	U+0079	#LATIN SMALL LETTER Y
-0x7a	U+007a	#LATIN SMALL LETTER Z
-0x7b	U+007b	#LEFT CURLY BRACKET
-0x7c	U+007c	#VERTICAL LINE
-0x7d	U+007d	#RIGHT CURLY BRACKET
-0x7e	U+007e	#TILDE
-0x7f	U+007f	#DELETE
+##################
+
+0x20-0x7e       idem
+#
 0x80	U+00c7	#LATIN CAPITAL LETTER C WITH CEDILLA
 0x81	U+00fc	#LATIN SMALL LETTER U WITH DIAERESIS
 0x82	U+00e9	#LATIN SMALL LETTER E WITH ACUTE
diff --git a/src/chrtrans/cp852_uni.tbl b/src/chrtrans/cp852_uni.tbl
index 79047ace..946b4996 100644
--- a/src/chrtrans/cp852_uni.tbl
+++ b/src/chrtrans/cp852_uni.tbl
@@ -21,260 +21,136 @@ OEastern European (cp852)
 #
 #    The entries are in cp852_DOSLatin2 order
 #
-#0x00    U+0000  #NULL
-#0x01    U+0001  #START OF HEADING
-#0x02    U+0002  #START OF TEXT
-#0x03    U+0003  #END OF TEXT
-#0x04    U+0004  #END OF TRANSMISSION
-#0x05    U+0005  #ENQUIRY
-#0x06    U+0006  #ACKNOWLEDGE
-#0x07    U+0007  #BELL
-#0x08    U+0008  #BACKSPACE
-#0x09    U+0009  #HORIZONTAL TABULATION
-#0x0a    U+000a  #LINE FEED
-#0x0b    U+000b  #VERTICAL TABULATION
-#0x0c    U+000c  #FORM FEED
-#0x0d    U+000d  #CARRIAGE RETURN
-#0x0e    U+000e  #SHIFT OUT
-#0x0f    U+000f  #SHIFT IN
-#0x10    U+0010  #DATA LINK ESCAPE
-#0x11    U+0011  #DEVICE CONTROL ONE
-#0x12    U+0012  #DEVICE CONTROL TWO
-#0x13    U+0013  #DEVICE CONTROL THREE
-#0x14    U+0014  #DEVICE CONTROL FOUR
-#0x15    U+0015  #NEGATIVE ACKNOWLEDGE
-#0x16    U+0016  #SYNCHRONOUS IDLE
-#0x17    U+0017  #END OF TRANSMISSION BLOCK
-#0x18    U+0018  #CANCEL
-#0x19    U+0019  #END OF MEDIUM
-#0x1a    U+001a  #SUBSTITUTE
-#0x1b    U+001b  #ESCAPE
-#0x1c    U+001c  #FILE SEPARATOR
-#0x1d    U+001d  #GROUP SEPARATOR
-#0x1e    U+001e  #RECORD SEPARATOR
-#0x1f    U+001f  #UNIT SEPARATOR
-0x20    U+0020  #SPACE
-0x21    U+0021  #EXCLAMATION MARK
-0x22    U+0022  #QUOTATION MARK
-0x23    U+0023  #NUMBER SIGN
-0x24    U+0024  #DOLLAR SIGN
-0x25    U+0025  #PERCENT SIGN
-0x26    U+0026  #AMPERSAND
-0x27    U+0027  #APOSTROPHE
-0x28    U+0028  #LEFT PARENTHESIS
-0x29    U+0029  #RIGHT PARENTHESIS
-0x2a    U+002a  #ASTERISK
-0x2b    U+002b  #PLUS SIGN
-0x2c    U+002c  #COMMA
-0x2d    U+002d  #HYPHEN-MINUS
-0x2e    U+002e  #FULL STOP
-0x2f    U+002f  #SOLIDUS
-0x30    U+0030  #DIGIT ZERO
-0x31    U+0031  #DIGIT ONE
-0x32    U+0032  #DIGIT TWO
-0x33    U+0033  #DIGIT THREE
-0x34    U+0034  #DIGIT FOUR
-0x35    U+0035  #DIGIT FIVE
-0x36    U+0036  #DIGIT SIX
-0x37    U+0037  #DIGIT SEVEN
-0x38    U+0038  #DIGIT EIGHT
-0x39    U+0039  #DIGIT NINE
-0x3a    U+003a  #COLON
-0x3b    U+003b  #SEMICOLON
-0x3c    U+003c  #LESS-THAN SIGN
-0x3d    U+003d  #EQUALS SIGN
-0x3e    U+003e  #GREATER-THAN SIGN
-0x3f    U+003f  #QUESTION MARK
-0x40    U+0040  #COMMERCIAL AT
-0x41    U+0041  #LATIN CAPITAL LETTER A
-0x42    U+0042  #LATIN CAPITAL LETTER B
-0x43    U+0043  #LATIN CAPITAL LETTER C
-0x44    U+0044  #LATIN CAPITAL LETTER D
-0x45    U+0045  #LATIN CAPITAL LETTER E
-0x46    U+0046  #LATIN CAPITAL LETTER F
-0x47    U+0047  #LATIN CAPITAL LETTER G
-0x48    U+0048  #LATIN CAPITAL LETTER H
-0x49    U+0049  #LATIN CAPITAL LETTER I
-0x4a    U+004a  #LATIN CAPITAL LETTER J
-0x4b    U+004b  #LATIN CAPITAL LETTER K
-0x4c    U+004c  #LATIN CAPITAL LETTER L
-0x4d    U+004d  #LATIN CAPITAL LETTER M
-0x4e    U+004e  #LATIN CAPITAL LETTER N
-0x4f    U+004f  #LATIN CAPITAL LETTER O
-0x50    U+0050  #LATIN CAPITAL LETTER P
-0x51    U+0051  #LATIN CAPITAL LETTER Q
-0x52    U+0052  #LATIN CAPITAL LETTER R
-0x53    U+0053  #LATIN CAPITAL LETTER S
-0x54    U+0054  #LATIN CAPITAL LETTER T
-0x55    U+0055  #LATIN CAPITAL LETTER U
-0x56    U+0056  #LATIN CAPITAL LETTER V
-0x57    U+0057  #LATIN CAPITAL LETTER W
-0x58    U+0058  #LATIN CAPITAL LETTER X
-0x59    U+0059  #LATIN CAPITAL LETTER Y
-0x5a    U+005a  #LATIN CAPITAL LETTER Z
-0x5b    U+005b  #LEFT SQUARE BRACKET
-0x5c    U+005c  #REVERSE SOLIDUS
-0x5d    U+005d  #RIGHT SQUARE BRACKET
-0x5e    U+005e  #CIRCUMFLEX ACCENT
-0x5f    U+005f  #LOW LINE
-0x60    U+0060  #GRAVE ACCENT
-0x61    U+0061  #LATIN SMALL LETTER A
-0x62    U+0062  #LATIN SMALL LETTER B
-0x63    U+0063  #LATIN SMALL LETTER C
-0x64    U+0064  #LATIN SMALL LETTER D
-0x65    U+0065  #LATIN SMALL LETTER E
-0x66    U+0066  #LATIN SMALL LETTER F
-0x67    U+0067  #LATIN SMALL LETTER G
-0x68    U+0068  #LATIN SMALL LETTER H
-0x69    U+0069  #LATIN SMALL LETTER I
-0x6a    U+006a  #LATIN SMALL LETTER J
-0x6b    U+006b  #LATIN SMALL LETTER K
-0x6c    U+006c  #LATIN SMALL LETTER L
-0x6d    U+006d  #LATIN SMALL LETTER M
-0x6e    U+006e  #LATIN SMALL LETTER N
-0x6f    U+006f  #LATIN SMALL LETTER O
-0x70    U+0070  #LATIN SMALL LETTER P
-0x71    U+0071  #LATIN SMALL LETTER Q
-0x72    U+0072  #LATIN SMALL LETTER R
-0x73    U+0073  #LATIN SMALL LETTER S
-0x74    U+0074  #LATIN SMALL LETTER T
-0x75    U+0075  #LATIN SMALL LETTER U
-0x76    U+0076  #LATIN SMALL LETTER V
-0x77    U+0077  #LATIN SMALL LETTER W
-0x78    U+0078  #LATIN SMALL LETTER X
-0x79    U+0079  #LATIN SMALL LETTER Y
-0x7a    U+007a  #LATIN SMALL LETTER Z
-0x7b    U+007b  #LEFT CURLY BRACKET
-0x7c    U+007c  #VERTICAL LINE
-0x7d    U+007d  #RIGHT CURLY BRACKET
-0x7e    U+007e  #TILDE
-#0x7f    U+007f  #DELETE
-0x80    U+00c7  #LATIN CAPITAL LETTER C WITH CEDILLA
-0x81    U+00fc  #LATIN SMALL LETTER U WITH DIAERESIS
-0x82    U+00e9  #LATIN SMALL LETTER E WITH ACUTE
-0x83    U+00e2  #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x84    U+00e4  #LATIN SMALL LETTER A WITH DIAERESIS
-0x85    U+016f  #LATIN SMALL LETTER U WITH RING ABOVE
-0x86    U+0107  #LATIN SMALL LETTER C WITH ACUTE
-0x87    U+00e7  #LATIN SMALL LETTER C WITH CEDILLA
-0x88    U+0142  #LATIN SMALL LETTER L WITH STROKE
-0x89    U+00eb  #LATIN SMALL LETTER E WITH DIAERESIS
-0x8a    U+0150  #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0x8b    U+0151  #LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0x8c    U+00ee  #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x8d    U+0179  #LATIN CAPITAL LETTER Z WITH ACUTE
-0x8e    U+00c4  #LATIN CAPITAL LETTER A WITH DIAERESIS
-0x8f    U+0106  #LATIN CAPITAL LETTER C WITH ACUTE
-0x90    U+00c9  #LATIN CAPITAL LETTER E WITH ACUTE
-0x91    U+0139  #LATIN CAPITAL LETTER L WITH ACUTE
-0x92    U+013a  #LATIN SMALL LETTER L WITH ACUTE
-0x93    U+00f4  #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0x94    U+00f6  #LATIN SMALL LETTER O WITH DIAERESIS
-0x95    U+013d  #LATIN CAPITAL LETTER L WITH CARON
-0x96    U+013e  #LATIN SMALL LETTER L WITH CARON
-0x97    U+015a  #LATIN CAPITAL LETTER S WITH ACUTE
-0x98    U+015b  #LATIN SMALL LETTER S WITH ACUTE
-0x99    U+00d6  #LATIN CAPITAL LETTER O WITH DIAERESIS
-0x9a    U+00dc  #LATIN CAPITAL LETTER U WITH DIAERESIS
-0x9b    U+0164  #LATIN CAPITAL LETTER T WITH CARON
-0x9c    U+0165  #LATIN SMALL LETTER T WITH CARON
-0x9d    U+0141  #LATIN CAPITAL LETTER L WITH STROKE
-0x9e    U+00d7  #MULTIPLICATION SIGN
-0x9f    U+010d  #LATIN SMALL LETTER C WITH CARON
-0xa0    U+00e1  #LATIN SMALL LETTER A WITH ACUTE
-0xa1    U+00ed  #LATIN SMALL LETTER I WITH ACUTE
-0xa2    U+00f3  #LATIN SMALL LETTER O WITH ACUTE
-0xa3    U+00fa  #LATIN SMALL LETTER U WITH ACUTE
-0xa4    U+0104  #LATIN CAPITAL LETTER A WITH OGONEK
-0xa5    U+0105  #LATIN SMALL LETTER A WITH OGONEK
-0xa6    U+017d  #LATIN CAPITAL LETTER Z WITH CARON
-0xa7    U+017e  #LATIN SMALL LETTER Z WITH CARON
-0xa8    U+0118  #LATIN CAPITAL LETTER E WITH OGONEK
-0xa9    U+0119  #LATIN SMALL LETTER E WITH OGONEK
-0xaa    U+00ac  #NOT SIGN
-0xab    U+017a  #LATIN SMALL LETTER Z WITH ACUTE
-0xac    U+010c  #LATIN CAPITAL LETTER C WITH CARON
-0xad    U+015f  #LATIN SMALL LETTER S WITH CEDILLA
-0xae    U+00ab  #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xaf    U+00bb  #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xb0    U+2591  #LIGHT SHADE
-0xb1    U+2592  #MEDIUM SHADE
-0xb2    U+2593  #DARK SHADE
-0xb3    U+2502  #BOX DRAWINGS LIGHT VERTICAL
-0xb4    U+2524  #BOX DRAWINGS LIGHT VERTICAL AND LEFT
-0xb5    U+00c1  #LATIN CAPITAL LETTER A WITH ACUTE
-0xb6    U+00c2  #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xb7    U+011a  #LATIN CAPITAL LETTER E WITH CARON
-0xb8    U+015e  #LATIN CAPITAL LETTER S WITH CEDILLA
-0xb9    U+2563  #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-0xba    U+2551  #BOX DRAWINGS DOUBLE VERTICAL
-0xbb    U+2557  #BOX DRAWINGS DOUBLE DOWN AND LEFT
-0xbc    U+255d  #BOX DRAWINGS DOUBLE UP AND LEFT
-0xbd    U+017b  #LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xbe    U+017c  #LATIN SMALL LETTER Z WITH DOT ABOVE
-0xbf    U+2510  #BOX DRAWINGS LIGHT DOWN AND LEFT
-0xc0    U+2514  #BOX DRAWINGS LIGHT UP AND RIGHT
-0xc1    U+2534  #BOX DRAWINGS LIGHT UP AND HORIZONTAL
-0xc2    U+252c  #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-0xc3    U+251c  #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-0xc4    U+2500  #BOX DRAWINGS LIGHT HORIZONTAL
-0xc5    U+253c  #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-0xc6    U+0102  #LATIN CAPITAL LETTER A WITH BREVE
-0xc7    U+0103  #LATIN SMALL LETTER A WITH BREVE
-0xc8    U+255a  #BOX DRAWINGS DOUBLE UP AND RIGHT
-0xc9    U+2554  #BOX DRAWINGS DOUBLE DOWN AND RIGHT
-0xca    U+2569  #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-0xcb    U+2566  #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-0xcc    U+2560  #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-0xcd    U+2550  #BOX DRAWINGS DOUBLE HORIZONTAL
-0xce    U+256c  #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-0xcf    U+00a4  #CURRENCY SIGN
-0xd0    U+0111  #LATIN SMALL LETTER D WITH STROKE
-0xd1    U+0110  #LATIN CAPITAL LETTER D WITH STROKE
-0xd2    U+010e  #LATIN CAPITAL LETTER D WITH CARON
-0xd3    U+00cb  #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xd4    U+010f  #LATIN SMALL LETTER D WITH CARON
-0xd5    U+0147  #LATIN CAPITAL LETTER N WITH CARON
-0xd6    U+00cd  #LATIN CAPITAL LETTER I WITH ACUTE
-0xd7    U+00ce  #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xd8    U+011b  #LATIN SMALL LETTER E WITH CARON
-0xd9    U+2518  #BOX DRAWINGS LIGHT UP AND LEFT
-0xda    U+250c  #BOX DRAWINGS LIGHT DOWN AND RIGHT
-0xdb    U+2588  #FULL BLOCK
-0xdc    U+2584  #LOWER HALF BLOCK
-0xdd    U+0162  #LATIN CAPITAL LETTER T WITH CEDILLA
-0xde    U+016e  #LATIN CAPITAL LETTER U WITH RING ABOVE
-0xdf    U+2580  #UPPER HALF BLOCK
-0xe0    U+00d3  #LATIN CAPITAL LETTER O WITH ACUTE
-0xe1    U+00df  #LATIN SMALL LETTER SHARP S
-0xe2    U+00d4  #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xe3    U+0143  #LATIN CAPITAL LETTER N WITH ACUTE
-0xe4    U+0144  #LATIN SMALL LETTER N WITH ACUTE
-0xe5    U+0148  #LATIN SMALL LETTER N WITH CARON
-0xe6    U+0160  #LATIN CAPITAL LETTER S WITH CARON
-0xe7    U+0161  #LATIN SMALL LETTER S WITH CARON
-0xe8    U+0154  #LATIN CAPITAL LETTER R WITH ACUTE
-0xe9    U+00da  #LATIN CAPITAL LETTER U WITH ACUTE
-0xea    U+0155  #LATIN SMALL LETTER R WITH ACUTE
-0xeb    U+0170  #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xec    U+00fd  #LATIN SMALL LETTER Y WITH ACUTE
-0xed    U+00dd  #LATIN CAPITAL LETTER Y WITH ACUTE
-0xee    U+0163  #LATIN SMALL LETTER T WITH CEDILLA
-0xef    U+00b4  #ACUTE ACCENT
-0xf0    U+00ad  #SOFT HYPHEN
-0xf1    U+02dd  #DOUBLE ACUTE ACCENT
-0xf2    U+02db  #OGONEK
-0xf3    U+02c7  #CARON
-0xf4    U+02d8  #BREVE
-0xf5    U+00a7  #SECTION SIGN
-0xf6    U+00f7  #DIVISION SIGN
-0xf7    U+00b8  #CEDILLA
-0xf8    U+00b0  #DEGREE SIGN
-0xf9    U+00a8  #DIAERESIS
-0xfa    U+02d9  #DOT ABOVE
-0xfb    U+0171  #LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xfc    U+0158  #LATIN CAPITAL LETTER R WITH CARON
-0xfd    U+0159  #LATIN SMALL LETTER R WITH CARON
-0xfe    U+25a0  #BLACK SQUARE
-0xff    U+00a0  #NO-BREAK SPACE
+##################
+
+0x20-0x7e       idem
+#
+0x80	U+00c7	#LATIN CAPITAL LETTER C WITH CEDILLA
+0x81	U+00fc	#LATIN SMALL LETTER U WITH DIAERESIS
+0x82	U+00e9	#LATIN SMALL LETTER E WITH ACUTE
+0x83	U+00e2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x84	U+00e4	#LATIN SMALL LETTER A WITH DIAERESIS
+0x85	U+016f	#LATIN SMALL LETTER U WITH RING ABOVE
+0x86	U+0107	#LATIN SMALL LETTER C WITH ACUTE
+0x87	U+00e7	#LATIN SMALL LETTER C WITH CEDILLA
+0x88	U+0142	#LATIN SMALL LETTER L WITH STROKE
+0x89	U+00eb	#LATIN SMALL LETTER E WITH DIAERESIS
+0x8a	U+0150	#LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0x8b	U+0151	#LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0x8c	U+00ee	#LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x8d	U+0179	#LATIN CAPITAL LETTER Z WITH ACUTE
+0x8e	U+00c4	#LATIN CAPITAL LETTER A WITH DIAERESIS
+0x8f	U+0106	#LATIN CAPITAL LETTER C WITH ACUTE
+0x90	U+00c9	#LATIN CAPITAL LETTER E WITH ACUTE
+0x91	U+0139	#LATIN CAPITAL LETTER L WITH ACUTE
+0x92	U+013a	#LATIN SMALL LETTER L WITH ACUTE
+0x93	U+00f4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x94	U+00f6	#LATIN SMALL LETTER O WITH DIAERESIS
+0x95	U+013d	#LATIN CAPITAL LETTER L WITH CARON
+0x96	U+013e	#LATIN SMALL LETTER L WITH CARON
+0x97	U+015a	#LATIN CAPITAL LETTER S WITH ACUTE
+0x98	U+015b	#LATIN SMALL LETTER S WITH ACUTE
+0x99	U+00d6	#LATIN CAPITAL LETTER O WITH DIAERESIS
+0x9a	U+00dc	#LATIN CAPITAL LETTER U WITH DIAERESIS
+0x9b	U+0164	#LATIN CAPITAL LETTER T WITH CARON
+0x9c	U+0165	#LATIN SMALL LETTER T WITH CARON
+0x9d	U+0141	#LATIN CAPITAL LETTER L WITH STROKE
+0x9e	U+00d7	#MULTIPLICATION SIGN
+0x9f	U+010d	#LATIN SMALL LETTER C WITH CARON
+0xa0	U+00e1	#LATIN SMALL LETTER A WITH ACUTE
+0xa1	U+00ed	#LATIN SMALL LETTER I WITH ACUTE
+0xa2	U+00f3	#LATIN SMALL LETTER O WITH ACUTE
+0xa3	U+00fa	#LATIN SMALL LETTER U WITH ACUTE
+0xa4	U+0104	#LATIN CAPITAL LETTER A WITH OGONEK
+0xa5	U+0105	#LATIN SMALL LETTER A WITH OGONEK
+0xa6	U+017d	#LATIN CAPITAL LETTER Z WITH CARON
+0xa7	U+017e	#LATIN SMALL LETTER Z WITH CARON
+0xa8	U+0118	#LATIN CAPITAL LETTER E WITH OGONEK
+0xa9	U+0119	#LATIN SMALL LETTER E WITH OGONEK
+0xaa	U+00ac	#NOT SIGN
+0xab	U+017a	#LATIN SMALL LETTER Z WITH ACUTE
+0xac	U+010c	#LATIN CAPITAL LETTER C WITH CARON
+0xad	U+015f	#LATIN SMALL LETTER S WITH CEDILLA
+0xae	U+00ab	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xaf	U+00bb	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xb0	U+2591	#LIGHT SHADE
+0xb1	U+2592	#MEDIUM SHADE
+0xb2	U+2593	#DARK SHADE
+0xb3	U+2502	#BOX DRAWINGS LIGHT VERTICAL
+0xb4	U+2524	#BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5	U+00c1	#LATIN CAPITAL LETTER A WITH ACUTE
+0xb6	U+00c2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xb7	U+011a	#LATIN CAPITAL LETTER E WITH CARON
+0xb8	U+015e	#LATIN CAPITAL LETTER S WITH CEDILLA
+0xb9	U+2563	#BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba	U+2551	#BOX DRAWINGS DOUBLE VERTICAL
+0xbb	U+2557	#BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc	U+255d	#BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd	U+017b	#LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0xbe	U+017c	#LATIN SMALL LETTER Z WITH DOT ABOVE
+0xbf	U+2510	#BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0	U+2514	#BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1	U+2534	#BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2	U+252c	#BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3	U+251c	#BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4	U+2500	#BOX DRAWINGS LIGHT HORIZONTAL
+0xc5	U+253c	#BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6	U+0102	#LATIN CAPITAL LETTER A WITH BREVE
+0xc7	U+0103	#LATIN SMALL LETTER A WITH BREVE
+0xc8	U+255a	#BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9	U+2554	#BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca	U+2569	#BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb	U+2566	#BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc	U+2560	#BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd	U+2550	#BOX DRAWINGS DOUBLE HORIZONTAL
+0xce	U+256c	#BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf	U+00a4	#CURRENCY SIGN
+0xd0	U+0111	#LATIN SMALL LETTER D WITH STROKE
+0xd1	U+0110	#LATIN CAPITAL LETTER D WITH STROKE
+0xd2	U+010e	#LATIN CAPITAL LETTER D WITH CARON
+0xd3	U+00cb	#LATIN CAPITAL LETTER E WITH DIAERESIS
+0xd4	U+010f	#LATIN SMALL LETTER D WITH CARON
+0xd5	U+0147	#LATIN CAPITAL LETTER N WITH CARON
+0xd6	U+00cd	#LATIN CAPITAL LETTER I WITH ACUTE
+0xd7	U+00ce	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xd8	U+011b	#LATIN SMALL LETTER E WITH CARON
+0xd9	U+2518	#BOX DRAWINGS LIGHT UP AND LEFT
+0xda	U+250c	#BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb	U+2588	#FULL BLOCK
+0xdc	U+2584	#LOWER HALF BLOCK
+0xdd	U+0162	#LATIN CAPITAL LETTER T WITH CEDILLA
+0xde	U+016e	#LATIN CAPITAL LETTER U WITH RING ABOVE
+0xdf	U+2580	#UPPER HALF BLOCK
+0xe0	U+00d3	#LATIN CAPITAL LETTER O WITH ACUTE
+0xe1	U+00df	#LATIN SMALL LETTER SHARP S
+0xe2	U+00d4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xe3	U+0143	#LATIN CAPITAL LETTER N WITH ACUTE
+0xe4	U+0144	#LATIN SMALL LETTER N WITH ACUTE
+0xe5	U+0148	#LATIN SMALL LETTER N WITH CARON
+0xe6	U+0160	#LATIN CAPITAL LETTER S WITH CARON
+0xe7	U+0161	#LATIN SMALL LETTER S WITH CARON
+0xe8	U+0154	#LATIN CAPITAL LETTER R WITH ACUTE
+0xe9	U+00da	#LATIN CAPITAL LETTER U WITH ACUTE
+0xea	U+0155	#LATIN SMALL LETTER R WITH ACUTE
+0xeb	U+0170	#LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0xec	U+00fd	#LATIN SMALL LETTER Y WITH ACUTE
+0xed	U+00dd	#LATIN CAPITAL LETTER Y WITH ACUTE
+0xee	U+0163	#LATIN SMALL LETTER T WITH CEDILLA
+0xef	U+00b4	#ACUTE ACCENT
+0xf0	U+00ad	#SOFT HYPHEN
+0xf1	U+02dd	#DOUBLE ACUTE ACCENT
+0xf2	U+02db	#OGONEK
+0xf3	U+02c7	#CARON
+0xf4	U+02d8	#BREVE
+0xf5	U+00a7	#SECTION SIGN
+0xf6	U+00f7	#DIVISION SIGN
+0xf7	U+00b8	#CEDILLA
+0xf8	U+00b0	#DEGREE SIGN
+0xf9	U+00a8	#DIAERESIS
+0xfa	U+02d9	#DOT ABOVE
+0xfb	U+0171	#LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0xfc	U+0158	#LATIN CAPITAL LETTER R WITH CARON
+0xfd	U+0159	#LATIN SMALL LETTER R WITH CARON
+0xfe	U+25a0	#BLACK SQUARE
+0xff	U+00a0	#NO-BREAK SPACE