about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>1998-08-21 13:30:00 -0400
committerThomas E. Dickey <dickey@invisible-island.net>1998-08-21 13:30:00 -0400
commit3c7cb4bbcd56c17e1abba05f20d001a2484d9919 (patch)
tree30f608a2a7c6355ee69d6b061ed3fd458010ad75 /src
parent0eae931d4f0fd1194dfcd978c3d94079b710923f (diff)
downloadlynx-snapshots-3c7cb4bbcd56c17e1abba05f20d001a2484d9919.tar.gz
snapshot of project "lynx", label v2-8-1dev_22
Diffstat (limited to 'src')
-rw-r--r--src/GridText.c30
-rw-r--r--src/HTML.c64
-rw-r--r--src/LYCharSets.c69
-rw-r--r--src/LYCharUtils.c10
-rw-r--r--src/LYCookie.c134
-rw-r--r--src/LYHistory.c10
-rw-r--r--src/LYMain.c8
-rw-r--r--src/LYMainLoop.c31
-rw-r--r--src/LYOptions.c2
-rw-r--r--src/LYStrings.c3
-rw-r--r--src/LYStructs.h7
-rw-r--r--src/LYUtils.c7
-rw-r--r--src/LYrcFile.c11
-rw-r--r--src/chrtrans/cp1250_uni.tbl401
-rw-r--r--src/chrtrans/cp1251_uni.tbl274
-rw-r--r--src/chrtrans/cp1252_uni.tbl407
-rw-r--r--src/chrtrans/cp1253_uni.tbl18
-rw-r--r--src/chrtrans/cp1255_uni.tbl144
-rw-r--r--src/chrtrans/cp1256_uni.tbl174
-rw-r--r--src/chrtrans/cp1257_uni.tbl333
-rw-r--r--src/chrtrans/def7_uni.tbl23
-rw-r--r--src/makefile.dos2
-rw-r--r--src/makefile.in3
23 files changed, 914 insertions, 1251 deletions
diff --git a/src/GridText.c b/src/GridText.c
index a678ad48..b818730b 100644
--- a/src/GridText.c
+++ b/src/GridText.c
@@ -4644,14 +4644,13 @@ PUBLIC void print_wwwfile_to_fd ARGS2(
 	 */
 	for (i = 0; line->data[i] != '\0'; i++) {
 	    if (!IsSpecialAttrChar(line->data[i])) {
-		fputc(line->data[i],fp);
+		fputc(line->data[i], fp);
 	    } else if (line->data[i] == LY_SOFT_HYPHEN &&
 		line->data[i + 1] == '\0') { /* last char on line */
 		if (dump_output_immediately &&
 		    LYRawMode &&
 		    LYlowest_eightbit[current_char_set] <= 173 &&
-		    (current_char_set == 0 ||
-		     LYCharSet_UC[current_char_set].enc == UCT_ENC_8859 ||
+		    (LYCharSet_UC[current_char_set].enc == UCT_ENC_8859 ||
 		     LYCharSet_UC[current_char_set].like8859 &
 				  UCT_R_8859SPECL)) {
 		    fputc(0xad, fp); /* the iso8859 byte for SHY */
@@ -4726,19 +4725,18 @@ PUBLIC void print_crawl_to_fd ARGS3(
 	for (i = 0; line->data[i] != '\0'; i++) {
 	    if (!IsSpecialAttrChar(line->data[i])) {
 		fputc(line->data[i], fp);
-	     } else if (line->data[i] == LY_SOFT_HYPHEN &&
-		 line->data[i + 1] == '\0') { /* last char on line */
-		 if (dump_output_immediately &&
-		     LYRawMode &&
-		     LYlowest_eightbit[current_char_set] <= 173 &&
-		     (current_char_set == 0 ||
-		      LYCharSet_UC[current_char_set].enc == UCT_ENC_8859 ||
-		      LYCharSet_UC[current_char_set].like8859 &
-				   UCT_R_8859SPECL)) {
-		     fputc(0xad, fp); /* the iso8859 byte for SHY */
-		 } else {
-		     fputc('-', fp);
-		 }
+	    } else if (line->data[i] == LY_SOFT_HYPHEN &&
+		line->data[i + 1] == '\0') { /* last char on line */
+		if (dump_output_immediately &&
+		    LYRawMode &&
+		    LYlowest_eightbit[current_char_set] <= 173 &&
+		    (LYCharSet_UC[current_char_set].enc == UCT_ENC_8859 ||
+		     LYCharSet_UC[current_char_set].like8859 &
+				  UCT_R_8859SPECL)) {
+		    fputc(0xad, fp); /* the iso8859 byte for SHY */
+		} else {
+		    fputc('-', fp);
+		}
 	     }
 	}
 
diff --git a/src/HTML.c b/src/HTML.c
index 5ecbbada..66504e53 100644
--- a/src/HTML.c
+++ b/src/HTML.c
@@ -110,10 +110,11 @@ PRIVATE void change_paragraph_style PARAMS((HTStructured * me,
 /*
  * If we have verbose_img set, display labels for images.
  */
-#define VERBOSE_IMG(value,string) \
-      ((verbose_img) ? (newtitle = MakeNewTitle(value)): string)
+#define VERBOSE_IMG(value,src_type,string) \
+      ((verbose_img) ? (newtitle = MakeNewTitle(value,src_type)): string)
 
-PRIVATE char * MakeNewTitle PARAMS((CONST char ** value));
+PRIVATE char * MakeNewTitle PARAMS((CONST char ** value, int src_type));
+PRIVATE char * MakeNewImageValue PARAMS((CONST char ** value));
 
 /*	Set an internal flag that the next call to a stack-affecting method
 **	is only internal and the stack manipulation should be skipped. - kw
@@ -1532,8 +1533,15 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_BR:
 	UPDATE_STYLE;
 	CHECK_ID(HTML_GEN_ID);
+	  /* Add a \r (new line) if one of these three scenarios are true: 
+	   *   1. We are not collapsing BR's, or 
+	   *   2. (we are collapsing and) This line has text on it, or 
+	   *   3. (we are collapsing and) The previous line has text on it. 
+	   * Otherwise, don't do anything. -DH 980814 
+	   */ 
 	if ((LYCollapseBRs == FALSE) ||
-	    HText_LastLineSize(me->text, FALSE)) {
+	    HText_LastLineSize(me->text, FALSE) || 
+	    HText_PreviousLineSize(me->text, FALSE)) { 
 	    HText_setLastChar(me->text, ' ');  /* absorb white space */
 	    HText_appendCharacter(me->text, '\r');
 	}
@@ -2718,7 +2726,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    } else if (me->inA == TRUE && dest) {
 			StrAllocCopy(alt_string, (title ?
 						  title :
-						  VERBOSE_IMG(value, "[LINK]")));
+						  VERBOSE_IMG(value, HTML_IMG_SRC, "[LINK]")));
 
 		    } else {
 			StrAllocCopy(alt_string,
@@ -2726,7 +2734,7 @@ PRIVATE void HTML_start_element ARGS6(
 						  ((present &&
 						    present[HTML_IMG_ISOBJECT]) ?
 						    "(OBJECT)" :
-						    VERBOSE_IMG(value, "[INLINE]"))));
+						    VERBOSE_IMG(value, HTML_IMG_SRC, "[INLINE]"))));
 		    }
 		}
 	    }
@@ -2743,7 +2751,7 @@ PRIVATE void HTML_start_element ARGS6(
 	} else if (me->inA == TRUE && dest) {
 	    StrAllocCopy(alt_string, (title ?
 				      title :
-				      VERBOSE_IMG(value, "[LINK]")));
+				      VERBOSE_IMG(value, HTML_IMG_SRC, "[LINK]")));
 
 	} else {
 	    if (pseudo_inline_alts || clickable_images)
@@ -2751,7 +2759,7 @@ PRIVATE void HTML_start_element ARGS6(
 			  ((present &&
 			    present[HTML_IMG_ISOBJECT]) ?
 					     "(OBJECT)" :
-					     VERBOSE_IMG(value, "[INLINE]"))));
+					     VERBOSE_IMG(value, HTML_IMG_SRC, "[INLINE]"))));
 	    else
 		StrAllocCopy(alt_string, (title ?
 					  title : ""));
@@ -2880,7 +2888,7 @@ PRIVATE void HTML_start_element ARGS6(
 			       present[HTML_IMG_ISOBJECT]) ?
 		   ((map_href || dest_ismap) ?
 				   "(IMAGE)" : "(OBJECT)") :
-				   VERBOSE_IMG(value, "[IMAGE]")));
+				   VERBOSE_IMG(value, HTML_IMG_SRC, "[IMAGE]")));
 		if (id_string && !map_href) {
 		    if ((ID_A = HTAnchor_findChildAndLink(
 				  me->node_anchor,	/* Parent */
@@ -2935,7 +2943,7 @@ PRIVATE void HTML_start_element ARGS6(
 			     ((present &&
 			       present[HTML_IMG_ISOBJECT]) ?
 						 "(IMAGE)" :
-						 VERBOSE_IMG(value, "[IMAGE]")));
+						 VERBOSE_IMG(value, HTML_IMG_SRC, "[IMAGE]")));
 	    } else {
 		HTML_put_character(me, ' ');  /* space char may be ignored */
 		me->in_word = NO;
@@ -4203,6 +4211,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    int chars;
 	    BOOL UseALTasVALUE = FALSE;
 	    BOOL HaveSRClink = FALSE;
+	    char* ImageSrc = NULL;
 	    BOOL IsSubmitOrReset = FALSE;
 
 	    /* init */
@@ -4359,7 +4368,12 @@ PRIVATE void HTML_start_element ARGS6(
 		 */
 		UseALTasVALUE = TRUE;
 	    }
-	    if (clickable_images == TRUE &&
+	    if (verbose_img && !clickable_images &&
+		present && present[HTML_INPUT_SRC] &&
+		value[HTML_INPUT_SRC] && *value[HTML_INPUT_SRC] &&
+		I.type && !strcasecomp(I.type, "image")) {
+		ImageSrc = MakeNewImageValue(value);
+	    } else if (clickable_images == TRUE &&
 		present && present[HTML_INPUT_SRC] &&
 		value[HTML_INPUT_SRC] && *value[HTML_INPUT_SRC] &&
 		I.type && !strcasecomp(I.type, "image")) {
@@ -4405,7 +4419,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    HText_beginAnchor(me->text, me->inUnderline, me->CurrentA);
 		    if (me->inBoldH == FALSE)
 			HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
-		    HTML_put_string(me, VERBOSE_IMG(value, "[IMAGE]"));
+		    HTML_put_string(me, VERBOSE_IMG(value,HTML_INPUT_SRC,"[IMAGE]"));
 		    if (me->inBoldH == FALSE)
 			HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		    HText_endAnchor(me->text, 0);
@@ -4486,6 +4500,11 @@ PRIVATE void HTML_start_element ARGS6(
 		 */
 		StrAllocCopy(I_value, "Submit");
 		I.value = I_value;
+	    } else if ( ImageSrc ) {
+		/* [IMAGE]-Submit with verbose images and not clickable images.
+		 * Use ImageSrc if no other alt or value is supplied. --LE
+		 */
+		I.value = ImageSrc;
 	    }
 	    if (present && present[HTML_INPUT_CHECKED])
 		I.checked = YES;
@@ -7415,18 +7434,33 @@ PUBLIC int HTLoadError ARGS3(
 }
 
 
-PRIVATE char * MakeNewTitle ARGS1(CONST char **, value)
+PRIVATE char * MakeNewTitle ARGS2(CONST char **, value, int, src_type)
 {
     char *ptr;
     char *newtitle = NULL;
 
     StrAllocCopy(newtitle, "[");
-    ptr = strrchr(value[HTML_IMG_SRC], '/');
+    ptr = strrchr(value[src_type], '/');
     if (!ptr) {
-	StrAllocCat(newtitle, value[HTML_IMG_SRC]);
+	StrAllocCat(newtitle, value[src_type]);
     } else {
 	StrAllocCat(newtitle, ptr + 1);
     }
     StrAllocCat(newtitle, "]");
     return newtitle;
 }
+PRIVATE char * MakeNewImageValue ARGS1(CONST char **, value)
+{
+    char *ptr;
+    char *newtitle = NULL;
+
+    StrAllocCopy(newtitle, "[");
+    ptr = strrchr(value[HTML_INPUT_SRC], '/');
+    if (!ptr) {
+	StrAllocCat(newtitle, value[HTML_INPUT_SRC]);
+    } else {
+	StrAllocCat(newtitle, ptr + 1);
+    }
+    StrAllocCat(newtitle, "]-Submit");
+    return newtitle;
+}
diff --git a/src/LYCharSets.c b/src/LYCharSets.c
index 13a76f5a..7fe7e749 100644
--- a/src/LYCharSets.c
+++ b/src/LYCharSets.c
@@ -845,7 +845,6 @@ PUBLIC UCode_t HTMLGetEntityUCValue ARGS1(
     UCode_t value = 0;
     size_t i, high, low;
     int diff = 0;
-/*  CONST char ** entities = HTML_dtd.entity_names;  */
     CONST UC_entity_info * unicode_entities = HTML_dtd.unicode_entity_info;
 
     /*
@@ -854,72 +853,6 @@ PUBLIC UCode_t HTMLGetEntityUCValue ARGS1(
     if (!(name && *name))
 	return(value);
 
-
-#ifdef NOTDEFINED
-/*
-**  unicode_entities[] now handles all names from entities[], so disable latter.
-**  Let us keep this some sort of comment until we remove
-**  all calls to old-style entities[] from the code. - LP
-*/
-
-    /*
-     *	Handle names that have control characters
-     *	or strings in ISO_Latin1[]. - FM
-     */
-    if (!strcmp(name, "nbsp")) {
-	return(160);
-    }
-    if (!strcmp(name, "shy")) {
-	return(173);
-    }
-    if (!strcmp(name, "ensp")) {
-	return(8194);
-    }
-    if (!strcmp(name, "emsp")) {
-	return(8195);
-    }
-    if (!strcmp(name, "thinsp")) {
-	return(8201);
-    }
-    if (!strcmp(name, "ndash") ||
-	!strcmp(name, "endash")) {
-	return(8211);
-    }
-    if (!strcmp(name, "mdash") ||
-	!strcmp(name, "emdash")) {
-	return(8212);
-    }
-    if (!strcmp(name, "trade")) {
-	return(8482);
-    }
-
-    /*
-     *	Now try ISO_Latin1[]. - FM
-     */
-    for (low = 0, high = HTML_dtd.number_of_entities;
-	 high > low;
-	 diff < 0 ? (low = i+1) : (high = i)) {
-	/*
-	**  Binary search.
-	*/
-	i = (low + (high-low)/2);
-	diff = strcmp(entities[i], name);
-	if (diff == 0) {
-	    if (strlen(ISO_Latin1[i]) == 1) {
-		value = (unsigned char)(ISO_Latin1[i][0]);
-	    }
-	    break;
-	}
-    }
-    if (value > 0) {
-	return(value);
-    }
-
-    /*
-     *	Not yet found...    - FM
-     */
-#endif /* NOTDEFINED */
-
     /*
      *	Try UC_entity_info unicode_entities[].
      */
@@ -947,7 +880,7 @@ PUBLIC UCode_t HTMLGetEntityUCValue ARGS1(
 PUBLIC void HTMLUseCharacterSet ARGS1(int,i)
 {
     p_entity_values = LYCharSets[i];
-    HTMLSetCharacterHandling(i);  /* deals with assume_char_set and LYRawMode */
+    HTMLSetCharacterHandling(i);     /* set LYRawMode and CJK attributes */
     HTMLSetHaveCJKCharacterSet(i);
     HTMLSetDisplayCharsetMatchLocale(i);
     return;
diff --git a/src/LYCharUtils.c b/src/LYCharUtils.c
index f77f27a7..cb9337e0 100644
--- a/src/LYCharUtils.c
+++ b/src/LYCharUtils.c
@@ -1995,7 +1995,7 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 		} else {
 		    code = lcode;
 		    if ((code == 1) ||
-		       (code > 129 && code < 156)) {
+		       (code > 127 && code < 156)) {
 			/*
 			** Assume these are Microsoft code points, inflicted on
 			** us by FrontPage.  - FM
@@ -2011,6 +2011,12 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 			    */
 			    code = 0x263a;
 			    break;
+			case 128:
+			    /*
+			    **	EURO currency sign
+			    */
+			    code = 0x20ac;
+			    break;
 			case 130:
 			    /*
 			    **	SINGLE LOW-9 QUOTATION MARK (sbquo)
@@ -3538,7 +3544,7 @@ PUBLIC int LYLegitimizeHREF ARGS4(
 		    fprintf(tfp,
 			 "                  Stripping lead dots.\n");
 		} else if (!me->inBadHREF) {
-		    HTAlert(BAD_PARTIAL_REFERENCE);
+		    HTUserMsg(BAD_PARTIAL_REFERENCE);
 		    me->inBadHREF = TRUE;
 		}
 	    }
diff --git a/src/LYCookie.c b/src/LYCookie.c
index 6ca036cd..cd458908 100644
--- a/src/LYCookie.c
+++ b/src/LYCookie.c
@@ -356,7 +356,7 @@ PRIVATE void store_cookie ARGS3(
 				1));
 
 	    if (msg == 0)
-	    	outofmem(__FILE__, "store_cookie");
+		outofmem(__FILE__, "store_cookie");
 	    sprintf(msg,
 		    INVALID_COOKIE_DOMAIN_CONFIRMATION,
 		    co->domain,
@@ -414,14 +414,14 @@ PRIVATE void store_cookie ARGS3(
 	     * something like Netlink, where there are lots of websites
 	     * under www.netlink.co.uk, this isn't sensible.  However,
 	     * taking this sort of decision down to cookie level also
-	     * isn't sensible.  Perhaps something based on the domain
+	     * isn't sensible.	Perhaps something based on the domain
 	     * and the path in conjunction makes more sense?  - RP
 	     */
 	    if (co->flags & COOKIE_FLAG_PERSISTENT)
-	        de->bv = FROM_FILE;
+		de->bv = FROM_FILE;
 	    else
 #endif
-	        de->bv = QUERY_USER;
+		de->bv = QUERY_USER;
 	    cookie_list = de->cookie_list = HTList_new();
 	    StrAllocCopy(de->domain, co->domain);
 	    HTList_addObject(domain_list, de);
@@ -1138,7 +1138,7 @@ PRIVATE void LYProcessSetCookies ARGS6(
 				(cur_cookie->value ?
 				 cur_cookie->value : "[no value]"));
 		    CTRACE(tfp,
-			"                     due to excessive length!\n");
+			   "                     due to excessive length!\n");
 		    freeCookie(cur_cookie);
 		    cur_cookie = NULL;
 		}
@@ -2428,17 +2428,25 @@ Delete_all_cookies_in_domain:
     return(HT_LOADED);
 }
 
+
 /* cookie_add_acceptlist
- *   is passed a comma delimited string of domains (with leading '.')
- *   to add to the "always accept" list for cookies.
+ *   is passed a string of domains (with leading '.', and comma
+ *   delimited) to add to the "always accept" list for cookies. -BJP
  */
 
 PUBLIC void cookie_add_acceptlist ARGS1(
-	char *,		acceptdomains)
+	char *, 	acceptstr)
 {
     domain_entry *de = NULL;
-    char **domain1 = 0;
-    char **origstr = 0;
+    domain_entry *de2 = NULL;
+    HTList *hl;
+    char **str = (char **)calloc(1, sizeof(acceptstr));
+    char *strsmall = (char *)calloc(1, sizeof(acceptstr));
+    int isexisting = FALSE;
+
+    /* is this the first cookie we're handling? if so, initialize the
+     * domain_list.
+     */
 
     if (domain_list == NULL) {
 	atexit(LYCookieJar_free);
@@ -2446,46 +2454,66 @@ PUBLIC void cookie_add_acceptlist ARGS1(
 	total_cookies = 0;
     }
 
-    *origstr = (char *)acceptdomains;
+    *str = acceptstr;
+
+    for(; (strsmall = LYstrsep(str, ","));) {
+	if(strsmall == NULL)
+	    break;
+
+	/* check the list of existing cookies to see if this is a
+	 * re-setting of an already existing cookie -- if so, just
+	 * change the behavior, if not, create a new domain entry
+	 */
+
+	for (hl = domain_list; hl != NULL; hl = hl->next) {
+	    de2 = (domain_entry *)hl->object;
+	    if ((de2 != NULL && de2->domain != NULL) &&
+		!strcmp(strsmall, de2->domain)) {
+			isexisting = TRUE;
+			break;
+	    } else {
+		isexisting = FALSE;
+	    }
+	}
 
-    for(; (*domain1 = LYstrsep(origstr, ",")) != NULL;) {
-	if(**domain1 != '\0') {
+	if(!isexisting) {
 	    de = (domain_entry *)calloc(1, sizeof(domain_entry));
 
 	    if (de == NULL)
-		    outofmem(__FILE__, "cookie_accept_domains");
+		    outofmem(__FILE__, "cookie_accept_domain");
 
 	    de->bv = ACCEPT_ALWAYS;
 
-	    StrAllocCopy(de->domain, *domain1);
+	    StrAllocCopy(de->domain, strsmall);
 	    HTList_addObject(domain_list, de);
+	} else {
+	    de2->bv = ACCEPT_ALWAYS;
 	}
     }
 
-    /* then one last one, cos that's how LYstrsep() works */
-
-    de = (domain_entry *)calloc(1, sizeof(domain_entry));
-
-    if (de == NULL)
-	    outofmem(__FILE__, "cookie_accept_domains");
-
-    de->bv = ACCEPT_ALWAYS;
-
-    StrAllocCopy(de->domain, *origstr);
-    HTList_addObject(domain_list, de);
+    FREE(str);
+    FREE(strsmall);
 }
 
+
 /* cookie_add_rejectlist
- *   is passed a comma delimited string of domains (with leading '.')
- *   to add to the "always reject" list for cookies.
+ *   is passed a string of domains (with leading '.', and comma
+ *   delimited) to add to the "always reject" list for cookies. -BJP
  */
 
 PUBLIC void cookie_add_rejectlist ARGS1(
-	char *,		rejectdomains)
+	char *, 	rejectstr)
 {
     domain_entry *de = NULL;
-    char **domain1 = 0;
-    char **origstr = 0;
+    domain_entry *de2 = NULL;
+    HTList *hl;
+    char **str = (char **)calloc(1, sizeof(rejectstr));
+    char *strsmall = (char *)calloc(1, sizeof(rejectstr));
+    int isexisting = FALSE;
+
+    /* is this the first cookie we're handling? if so, initialize the
+     * domain_list.
+     */
 
     if (domain_list == NULL) {
 	atexit(LYCookieJar_free);
@@ -2493,33 +2521,45 @@ PUBLIC void cookie_add_rejectlist ARGS1(
 	total_cookies = 0;
     }
 
-    *origstr = rejectdomains;
+    *str = rejectstr;
 
-    for(; (*domain1 = LYstrsep(origstr, ",")) != NULL;) {
-	if(**domain1 != '\0') {
+    for(; (strsmall = LYstrsep(str, ","));) {
+	if(strsmall == NULL)
+	    break;
+
+	/* check the list of existing cookies to see if this is a
+	 * re-setting of an already existing cookie -- if so, just
+	 * change the behavior, if not, create a new domain entry
+	 */
+
+	for (hl = domain_list; hl != NULL; hl = hl->next) {
+	    de2 = (domain_entry *)hl->object;
+	    if ((de2 != NULL && de2->domain != NULL) &&
+		!strcmp(strsmall, de2->domain)) {
+			isexisting = TRUE;
+			break;
+	    } else {
+		isexisting = FALSE;
+	    }
+	}
+
+	if(!isexisting) {
 	    de = (domain_entry *)calloc(1, sizeof(domain_entry));
 
 	    if (de == NULL)
-		    outofmem(__FILE__, "cookie_reject_domains");
+		    outofmem(__FILE__, "cookie_reject_domain");
 
 	    de->bv = REJECT_ALWAYS;
 
-	    StrAllocCopy(de->domain, *domain1);
+	    StrAllocCopy(de->domain, strsmall);
 	    HTList_addObject(domain_list, de);
+	} else {
+	    de2->bv = REJECT_ALWAYS;
 	}
     }
 
-    /* then one last one, cos that's how LYstrsep() works */
-
-    de = (domain_entry *)calloc(1, sizeof(domain_entry));
-
-    if (de == NULL)
-	    outofmem(__FILE__, "cookie_reject_domains");
-
-    de->bv = REJECT_ALWAYS;
-
-    StrAllocCopy(de->domain, *origstr);
-    HTList_addObject(domain_list, de);
+    FREE(str);
+    FREE(strsmall);
 }
 
 #ifdef GLOBALDEF_IS_MACRO
diff --git a/src/LYHistory.c b/src/LYHistory.c
index f273d999..a3501a75 100644
--- a/src/LYHistory.c
+++ b/src/LYHistory.c
@@ -71,7 +71,7 @@ PUBLIC void LYAddVisitedLink ARGS1(
 	!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) ||
+	!strcmp((doc->title ? doc->title : ""), OPTIONS_TITLE) ||
 #endif
 #ifdef DIRED_SUPPORT
 	!strcmp((doc->title ? doc->title : ""), DIRED_MENU_TITLE) ||
@@ -178,7 +178,7 @@ PUBLIC void LYpush ARGS2(
 	    /* But it is nice to have the last position remembered!
 	       - kw */
 	    history[nhist-1].link = doc->link;
-	    history[nhist-1].page = doc->line;
+	    history[nhist-1].line = doc->line;
 	    return;
 	}
     }
@@ -216,7 +216,7 @@ PUBLIC void LYpush ARGS2(
      */
     if (nhist < MAXHIST)  {
 	history[nhist].link = doc->link;
-	history[nhist].page = doc->line;
+	history[nhist].line = doc->line;
 	history[nhist].title = NULL;
 	StrAllocCopy(history[nhist].title, doc->title);
 	history[nhist].address = NULL;
@@ -336,7 +336,7 @@ PUBLIC void LYpop ARGS1(
     if (nhist > 0) {
 	nhist--;
 	doc->link = history[nhist].link;
-	doc->line = history[nhist].page;
+	doc->line = history[nhist].line;
 	FREE(doc->title);
 	doc->title = history[nhist].title;	 /* will be freed later */
 	FREE(doc->address);
@@ -366,7 +366,7 @@ PUBLIC void LYpop_num ARGS2(
 {
     if (number >= 0 && nhist > number) {
 	doc->link = history[number].link;
-	doc->line = history[number].page;
+	doc->line = history[number].line;
 	StrAllocCopy(doc->title, history[number].title);
 	StrAllocCopy(doc->address, history[number].address);
 	StrAllocCopy(doc->post_data, history[number].post_data);
diff --git a/src/LYMain.c b/src/LYMain.c
index cb5b1310..78a8a10a 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -1053,6 +1053,10 @@ PUBLIC int main ARGS2(
     StrAllocCat(LYTraceLogPath, "/Lynx.trace");
 #endif /* VMS */
     if (TRACE && LYUseTraceLog) {
+#if defined(__DJGPP__) || defined(_WINDOWS)
+	_fmode = O_TEXT;
+#endif /* __DJGPP__  or _WINDOWS */
+
 	/*
 	 *  If we can't open it for writing, give up.
 	 *  Otherwise, on VMS close it, delete it and any
@@ -1062,6 +1066,10 @@ PUBLIC int main ARGS2(
 	if ((LYTraceLogFP = LYNewTxtFile(LYTraceLogPath)) == NULL) {
 	    WWW_TraceFlag = FALSE;
 	    fprintf(stderr, "%s\n", TRACELOG_OPEN_FAILED);
+
+#if defined(__DJGPP__) || defined(_WINDOWS)
+		_fmode = O_BINARY;
+#endif /* __DJGPP__ or _WINDOWS */
 	    exit(-1);
 	}
 #ifdef VMS
diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c
index a310b5a4..243bf25d 100644
--- a/src/LYMainLoop.c
+++ b/src/LYMainLoop.c
@@ -510,18 +510,17 @@ try_again:
 		display_partial = display_partial_flag; /* restore */
 		Newline_partial = newdoc.line; /* initialize */
 		NumOfLines_partial = 0;        /* initialize */
-		/*
-		 *  Disable display_partial if requested URL has #fragment.
-		 *  Otherwise user got the new document from the first page and
-		 *  be moved to #fragment later after download completed, but
-		 *  only if user did not mess screen up by scrolling before...
-		 *  So fall down to old behavior here.
-		 */
-		if (display_partial && LYCursesON &&
-		    (strchr(newdoc.address, '#')==NULL))
-			display_partial = TRUE;
-		else
+		if (display_partial) {
+		    /*
+		     * Disable display_partial if requested URL has #fragment. 
+		     * Otherwise user got the new document from the first page
+		     * and be moved to #fragment later after download
+		     * completed, but only if user did not mess screen up by
+		     * scrolling before...  So fall down to old behavior here.
+		     */
+		    if (!LYCursesON || (strchr(newdoc.address, '#')))
 			display_partial = FALSE;
+		}
 #endif /* DISP_PARTIAL */
 
 #ifndef DONT_TRACK_INTERNAL_LINKS
@@ -2069,7 +2068,7 @@ new_cmd:  /*
 		reloading = TRUE;
 	    break;
 
-	case LYK_HISTORICAL:
+	case LYK_HISTORICAL:	/* toggle 'historical' comments parsing */
 	    /*
 	     *	Check if this is a reply from a POST, and if so,
 	     *	seek confirmation of reload if the safe element
@@ -2098,7 +2097,7 @@ new_cmd:  /*
 	    }
 	    break;
 
-	case LYK_MINIMAL:
+	case LYK_MINIMAL:	/* toggle 'minimal' comments parsing */
 	    if (!historical_comments) {
 		/*
 		 *  Check if this is a reply from a POST, and if so,
@@ -4970,6 +4969,9 @@ check_add_bookmark_to_self:
 			HTInfoMsg(CANCELLED);
 			break;
 		    }
+		    /*
+		     *  OK, we download from history page, restore URL from stack.
+		     */
 		    StrAllocCopy(newdoc.address, history[number].address);
 		    StrAllocCopy(newdoc.title, links[curdoc.link].hightext);
 		    StrAllocCopy(newdoc.bookmark, history[number].bookmark);
@@ -4984,6 +4986,7 @@ check_add_bookmark_to_self:
 		    newdoc.isHEAD = history[number].isHEAD;
 		    newdoc.safe = history[number].safe;
 		    newdoc.internal_link = FALSE;
+		    newdoc.line = curdoc.line;  /* need for display_partial ! */
 		    newdoc.link = 0;
 		    HTOutputFormat = HTAtom_for("www/download");
 		    LYUserSpecifiedURL = TRUE;
@@ -5043,7 +5046,7 @@ check_add_bookmark_to_self:
 			newdoc.safe = FALSE;
 		    }
 		    newdoc.internal_link = FALSE;
-		   newdoc.line = curdoc.line;  /* used for display_partial ! */
+		    newdoc.line = curdoc.line;  /* need for display_partial ! */
 		    newdoc.link = 0;
 		    HTOutputFormat = HTAtom_for("www/download");
 		    /*
diff --git a/src/LYOptions.c b/src/LYOptions.c
index 38622372..abde33dc 100644
--- a/src/LYOptions.c
+++ b/src/LYOptions.c
@@ -3115,12 +3115,14 @@ static OptValues bool_values[] = {
 	{ TRUE,              "ON",                "ON"          },
 	{ 0, 0, 0 }};
 
+#ifdef DIRED_SUPPORT 
 static OptValues dired_values[] = {
 	{ 0,                 "Directories first", "dired_dir"   },
 	{ FILES_FIRST,       "Files first",       "dired_files" },
 	{ MIXED_STYLE,       "Mixed style",       "dired_mixed" },
 	{ 0, 0, 0 }};
 static char * dired_sort_string = "dired_sort";
+#endif /* DIRED_SUPPORT */ 
 
 static OptValues ftp_sort_values[] = {
 	{ FILE_BY_NAME,      "By Name",           "ftp_by_name" },
diff --git a/src/LYStrings.c b/src/LYStrings.c
index 4a251812..7ee93c99 100644
--- a/src/LYStrings.c
+++ b/src/LYStrings.c
@@ -2050,11 +2050,10 @@ PUBLIC int UPPER8 ARGS2(int,ch1, int,ch2)
 	/* BTW, if we remove the check for >127 above	   */
 	/* we get even more "relaxed" insensitive match... */
 
-	CONST char *disp_charset = LYCharSet_UC[current_char_set].MIMEname;
 	int charset_in, charset_out, uck1, uck2;
 	char replace_buf1 [10], replace_buf2 [10];
 
-	charset_in  = UCGetLYhndl_byMIME(disp_charset);
+	charset_in  = current_char_set;  /* display character set */
 	charset_out = UCGetLYhndl_byMIME("us-ascii");
 
 	uck1 = UCTransCharStr(replace_buf1, sizeof(replace_buf1), ch1,
diff --git a/src/LYStructs.h b/src/LYStructs.h
index 051db432..ff58cd87 100644
--- a/src/LYStructs.h
+++ b/src/LYStructs.h
@@ -1,4 +1,3 @@
-
 #ifndef LYSTRUCTS_H
 #define LYSTRUCTS_H
 
@@ -32,9 +31,9 @@ typedef struct _document {
    char * address;
    char * post_data;
    char * post_content_type;
+   char * bookmark;
    BOOL   safe;
    BOOL   isHEAD;
-   char * bookmark;
    int    link;
    int    line;
    BOOL   internal_link;	/* whether doc was reached via an internal
@@ -53,11 +52,11 @@ typedef struct _histstruct {
     char * address;
     char * post_data;
     char * post_content_type;
-    BOOL   safe;
     char * bookmark;
+    BOOL   safe;
     BOOL   isHEAD;
     int    link;
-    int    page;
+    int    line;
     BOOL   internal_link;	/* whether doc was reached via an internal
 				 (fragment) link. - kw */
     int    intern_seq_start;	/* indicates which element on the history
diff --git a/src/LYUtils.c b/src/LYUtils.c
index bcbd3cf7..c4deaac9 100644
--- a/src/LYUtils.c
+++ b/src/LYUtils.c
@@ -2097,7 +2097,8 @@ PUBLIC int HTCheckForInterrupt NOARGS
     if (TOUPPER(c) == 'Z' || c == 7 || c == 3)
 	return((int)TRUE);
 #ifdef DISP_PARTIAL
-    else if (display_partial)
+    else if (display_partial && (NumOfLines_partial > 2))
+    /* OK, we got several lines from new document and want to scroll... */
     {
 	switch (keymap[c+1])
 	{
@@ -2132,13 +2133,15 @@ PUBLIC int HTCheckForInterrupt NOARGS
 	case LYK_END:
 	    if (HText_canScrollDown())
 		Newline_partial = HText_getNumOfLines() - display_lines + 1;
-		/* set "current" value */
+		/* calculate for "current" bottom value */
 	    break;
 	case LYK_REFRESH :
 	    break ;
 	default :
 	    return ((int)FALSE) ;
 	}
+	if (Newline_partial < 1)
+	    Newline_partial = 1;
 	NumOfLines_partial = HText_getNumOfLines();
 	HText_pageDisplay(Newline_partial, "");
     }
diff --git a/src/LYrcFile.c b/src/LYrcFile.c
index 54dafdcd..3f3e57ba 100644
--- a/src/LYrcFile.c
+++ b/src/LYrcFile.c
@@ -6,6 +6,7 @@
 #include <LYGlobalDefs.h>
 #include <LYCharSets.h>
 #include <LYBookmark.h>
+#include <LYCookie.h>
 
 #include <LYLeaks.h>
 
@@ -440,7 +441,6 @@ PUBLIC void read_rc NOPARAMS
 		LYAcceptAllCookies = FALSE;
 	    }
 
-#ifdef THIS_DOESNT_WORK_YET_DONT_USE_IT
 
 	/*
 	 * Accept all cookies from certain domains?
@@ -451,9 +451,7 @@ PUBLIC void read_rc NOPARAMS
 		cp = cp2 + 1;
 	    while (isspace(*cp))
 		cp++; /* get rid of spaces */
-	    if (LYstrstr(cp,NULL) != NULL) {
-/*		   cookie_add_acceptlist(cp); */
-	    }
+            cookie_add_acceptlist(cp);
 
 
 	/*
@@ -465,11 +463,8 @@ PUBLIC void read_rc NOPARAMS
 		cp = cp2 + 1;
 	    while (isspace(*cp))
 		cp++; /* get rid of spaces */
-	    if (LYstrstr(cp,NULL) != NULL) {
-/*		   cookie_add_rejectlist(cp); */
-	    }
+	    cookie_add_rejectlist(cp);
 
-#endif
 
 	/*
 	 *  User mode.
diff --git a/src/chrtrans/cp1250_uni.tbl b/src/chrtrans/cp1250_uni.tbl
index 41e8581d..a6852cfa 100644
--- a/src/chrtrans/cp1250_uni.tbl
+++ b/src/chrtrans/cp1250_uni.tbl
@@ -5,277 +5,152 @@ Mwindows-1250
 OWinLatin2 (cp1250)
 
 #
-#    Name:     cp1250_WinLatin2 to Unicode table
+#    Name:     cp1250 to Unicode table
 #    Unicode version: 2.0
 #    Table version: 2.00
 #    Table format:  Format A
-#    Date:          04/24/96
-#    Authors:       Lori Brownell <loribr@microsoft.com>
-#                   K.D. Chang    <a-kchang@microsoft.com>
+#    Date:          04/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1250_WinLatin2 code (in hex)
+#        Column #1 is the cp1250 code (in hex)
 #        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1250_WinLatin2 order
+#    The entries are in cp1250 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            #UNDEFINED
-#0x81            #UNDEFINED
-0x82    U+201A  #SINGLE LOW-9 QUOTATION MARK
-#0x83            #UNDEFINED
-0x84    U+201E  #DOUBLE LOW-9 QUOTATION MARK
-0x85    U+2026  #HORIZONTAL ELLIPSIS
-0x86    U+2020  #DAGGER
-0x87    U+2021  #DOUBLE DAGGER
-#0x88            #UNDEFINED
-0x89    U+2030  #PER MILLE SIGN
-0x8A    U+0160  #LATIN CAPITAL LETTER S WITH CARON
-0x8B    U+2039  #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C    U+015A  #LATIN CAPITAL LETTER S WITH ACUTE
-0x8D    U+0164  #LATIN CAPITAL LETTER T WITH CARON
-0x8E    U+017D  #LATIN CAPITAL LETTER Z WITH CARON
-0x8F    U+0179  #LATIN CAPITAL LETTER Z WITH ACUTE
-#0x90            #UNDEFINED
-0x91    U+2018  #LEFT SINGLE QUOTATION MARK
-0x92    U+2019  #RIGHT SINGLE QUOTATION MARK
-0x93    U+201C  #LEFT DOUBLE QUOTATION MARK
-0x94    U+201D  #RIGHT DOUBLE QUOTATION MARK
-0x95    U+2022  #BULLET
-0x96    U+2013  #EN DASH
-0x97    U+2014  #EM DASH
-#0x98            #UNDEFINED
-0x99    U+2122  #TRADE MARK SIGN
-0x9A    U+0161  #LATIN SMALL LETTER S WITH CARON
-0x9B    U+203A  #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C    U+015B  #LATIN SMALL LETTER S WITH ACUTE
-0x9D    U+0165  #LATIN SMALL LETTER T WITH CARON
-0x9E    U+017E  #LATIN SMALL LETTER Z WITH CARON
-0x9F    U+017A  #LATIN SMALL LETTER Z WITH ACUTE
-0xA0    U+00A0  #NO-BREAK SPACE
-0xA1    U+02C7  #CARON
-0xA2    U+02D8  #BREVE
-0xA3    U+0141  #LATIN CAPITAL LETTER L WITH STROKE
-0xA4    U+00A4  #CURRENCY SIGN
-0xA5    U+0104  #LATIN CAPITAL LETTER A WITH OGONEK
-0xA6    U+00A6  #BROKEN BAR
-0xA7    U+00A7  #SECTION SIGN
-0xA8    U+00A8  #DIAERESIS
-0xA9    U+00A9  #COPYRIGHT SIGN
-0xAA    U+015E  #LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB    U+00AB  #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-#0xAC            #UNDEFINED
-0xAD    U+00AD  #SOFT HYPHEN
-0xAE    U+00AE  #REGISTERED SIGN
-0xAF    U+017B  #LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0    U+00B0  #DEGREE SIGN
-0xB1    U+00B1  #PLUS-MINUS SIGN
-0xB2    U+02DB  #OGONEK
-0xB3    U+0142  #LATIN SMALL LETTER L WITH STROKE
-0xB4    U+00B4  #ACUTE ACCENT
-0xB5    U+00B5  #MICRO SIGN
-0xB6    U+00B6  #PILCROW SIGN
-0xB7    U+00B7  #MIDDLE DOT
-0xB8    U+00B8  #CEDILLA
-0xB9    U+0105  #LATIN SMALL LETTER A WITH OGONEK
-0xBA    U+015F  #LATIN SMALL LETTER S WITH CEDILLA
-0xBB    U+00BB  #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC    U+013D  #LATIN CAPITAL LETTER L WITH CARON
-0xBD    U+02DD  #DOUBLE ACUTE ACCENT
-0xBE    U+013E  #LATIN SMALL LETTER L WITH CARON
-0xBF    U+017C  #LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0    U+0154  #LATIN CAPITAL LETTER R WITH ACUTE
-0xC1    U+00C1  #LATIN CAPITAL LETTER A WITH ACUTE
-0xC2    U+00C2  #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3    U+0102  #LATIN CAPITAL LETTER A WITH BREVE
-0xC4    U+00C4  #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5    U+0139  #LATIN CAPITAL LETTER L WITH ACUTE
-0xC6    U+0106  #LATIN CAPITAL LETTER C WITH ACUTE
-0xC7    U+00C7  #LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8    U+010C  #LATIN CAPITAL LETTER C WITH CARON
-0xC9    U+00C9  #LATIN CAPITAL LETTER E WITH ACUTE
-0xCA    U+0118  #LATIN CAPITAL LETTER E WITH OGONEK
-0xCB    U+00CB  #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC    U+011A  #LATIN CAPITAL LETTER E WITH CARON
-0xCD    U+00CD  #LATIN CAPITAL LETTER I WITH ACUTE
-0xCE    U+00CE  #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF    U+010E  #LATIN CAPITAL LETTER D WITH CARON
-0xD0    U+0110  #LATIN CAPITAL LETTER D WITH STROKE
-0xD1    U+0143  #LATIN CAPITAL LETTER N WITH ACUTE
-0xD2    U+0147  #LATIN CAPITAL LETTER N WITH CARON
-0xD3    U+00D3  #LATIN CAPITAL LETTER O WITH ACUTE
-0xD4    U+00D4  #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5    U+0150  #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6    U+00D6  #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7    U+00D7  #MULTIPLICATION SIGN
-0xD8    U+0158  #LATIN CAPITAL LETTER R WITH CARON
-0xD9    U+016E  #LATIN CAPITAL LETTER U WITH RING ABOVE
-0xDA    U+00DA  #LATIN CAPITAL LETTER U WITH ACUTE
-0xDB    U+0170  #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xDC    U+00DC  #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD    U+00DD  #LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE    U+0162  #LATIN CAPITAL LETTER T WITH CEDILLA
-0xDF    U+00DF  #LATIN SMALL LETTER SHARP S
-0xE0    U+0155  #LATIN SMALL LETTER R WITH ACUTE
-0xE1    U+00E1  #LATIN SMALL LETTER A WITH ACUTE
-0xE2    U+00E2  #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3    U+0103  #LATIN SMALL LETTER A WITH BREVE
-0xE4    U+00E4  #LATIN SMALL LETTER A WITH DIAERESIS
-0xE5    U+013A  #LATIN SMALL LETTER L WITH ACUTE
-0xE6    U+0107  #LATIN SMALL LETTER C WITH ACUTE
-0xE7    U+00E7  #LATIN SMALL LETTER C WITH CEDILLA
-0xE8    U+010D  #LATIN SMALL LETTER C WITH CARON
-0xE9    U+00E9  #LATIN SMALL LETTER E WITH ACUTE
-0xEA    U+0119  #LATIN SMALL LETTER E WITH OGONEK
-0xEB    U+00EB  #LATIN SMALL LETTER E WITH DIAERESIS
-0xEC    U+011B  #LATIN SMALL LETTER E WITH CARON
-0xED    U+00ED  #LATIN SMALL LETTER I WITH ACUTE
-0xEE    U+00EE  #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF    U+010F  #LATIN SMALL LETTER D WITH CARON
-0xF0    U+0111  #LATIN SMALL LETTER D WITH STROKE
-0xF1    U+0144  #LATIN SMALL LETTER N WITH ACUTE
-0xF2    U+0148  #LATIN SMALL LETTER N WITH CARON
-0xF3    U+00F3  #LATIN SMALL LETTER O WITH ACUTE
-0xF4    U+00F4  #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5    U+0151  #LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6    U+00F6  #LATIN SMALL LETTER O WITH DIAERESIS
-0xF7    U+00F7  #DIVISION SIGN
-0xF8    U+0159  #LATIN SMALL LETTER R WITH CARON
-0xF9    U+016F  #LATIN SMALL LETTER U WITH RING ABOVE
-0xFA    U+00FA  #LATIN SMALL LETTER U WITH ACUTE
-0xFB    U+0171  #LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xFC    U+00FC  #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD    U+00FD  #LATIN SMALL LETTER Y WITH ACUTE
-0xFE    U+0163  #LATIN SMALL LETTER T WITH CEDILLA
-0xFF    U+02D9  #DOT ABOVE
-
+##################
 
+0x20-0x7e       idem
+#
+0x80	U+20AC	#EURO SIGN
+#0x81	      	#UNDEFINED
+0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
+#0x83	      	#UNDEFINED
+0x84	U+201E	#DOUBLE LOW-9 QUOTATION MARK
+0x85	U+2026	#HORIZONTAL ELLIPSIS
+0x86	U+2020	#DAGGER
+0x87	U+2021	#DOUBLE DAGGER
+#0x88	      	#UNDEFINED
+0x89	U+2030	#PER MILLE SIGN
+0x8A	U+0160	#LATIN CAPITAL LETTER S WITH CARON
+0x8B	U+2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0x8C	U+015A	#LATIN CAPITAL LETTER S WITH ACUTE
+0x8D	U+0164	#LATIN CAPITAL LETTER T WITH CARON
+0x8E	U+017D	#LATIN CAPITAL LETTER Z WITH CARON
+0x8F	U+0179	#LATIN CAPITAL LETTER Z WITH ACUTE
+#0x90	      	#UNDEFINED
+0x91	U+2018	#LEFT SINGLE QUOTATION MARK
+0x92	U+2019	#RIGHT SINGLE QUOTATION MARK
+0x93	U+201C	#LEFT DOUBLE QUOTATION MARK
+0x94	U+201D	#RIGHT DOUBLE QUOTATION MARK
+0x95	U+2022	#BULLET
+0x96	U+2013	#EN DASH
+0x97	U+2014	#EM DASH
+#0x98	      	#UNDEFINED
+0x99	U+2122	#TRADE MARK SIGN
+0x9A	U+0161	#LATIN SMALL LETTER S WITH CARON
+0x9B	U+203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0x9C	U+015B	#LATIN SMALL LETTER S WITH ACUTE
+0x9D	U+0165	#LATIN SMALL LETTER T WITH CARON
+0x9E	U+017E	#LATIN SMALL LETTER Z WITH CARON
+0x9F	U+017A	#LATIN SMALL LETTER Z WITH ACUTE
+0xA0	U+00A0	#NO-BREAK SPACE
+0xA1	U+02C7	#CARON
+0xA2	U+02D8	#BREVE
+0xA3	U+0141	#LATIN CAPITAL LETTER L WITH STROKE
+0xA4	U+00A4	#CURRENCY SIGN
+0xA5	U+0104	#LATIN CAPITAL LETTER A WITH OGONEK
+0xA6	U+00A6	#BROKEN BAR
+0xA7	U+00A7	#SECTION SIGN
+0xA8	U+00A8	#DIAERESIS
+0xA9	U+00A9	#COPYRIGHT SIGN
+0xAA	U+015E	#LATIN CAPITAL LETTER S WITH CEDILLA
+0xAB	U+00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC	U+00AC	#NOT SIGN
+0xAD	U+00AD	#SOFT HYPHEN
+0xAE	U+00AE	#REGISTERED SIGN
+0xAF	U+017B	#LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0xB0	U+00B0	#DEGREE SIGN
+0xB1	U+00B1	#PLUS-MINUS SIGN
+0xB2	U+02DB	#OGONEK
+0xB3	U+0142	#LATIN SMALL LETTER L WITH STROKE
+0xB4	U+00B4	#ACUTE ACCENT
+0xB5	U+00B5	#MICRO SIGN
+0xB6	U+00B6	#PILCROW SIGN
+0xB7	U+00B7	#MIDDLE DOT
+0xB8	U+00B8	#CEDILLA
+0xB9	U+0105	#LATIN SMALL LETTER A WITH OGONEK
+0xBA	U+015F	#LATIN SMALL LETTER S WITH CEDILLA
+0xBB	U+00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC	U+013D	#LATIN CAPITAL LETTER L WITH CARON
+0xBD	U+02DD	#DOUBLE ACUTE ACCENT
+0xBE	U+013E	#LATIN SMALL LETTER L WITH CARON
+0xBF	U+017C	#LATIN SMALL LETTER Z WITH DOT ABOVE
+0xC0	U+0154	#LATIN CAPITAL LETTER R WITH ACUTE
+0xC1	U+00C1	#LATIN CAPITAL LETTER A WITH ACUTE
+0xC2	U+00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xC3	U+0102	#LATIN CAPITAL LETTER A WITH BREVE
+0xC4	U+00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5	U+0139	#LATIN CAPITAL LETTER L WITH ACUTE
+0xC6	U+0106	#LATIN CAPITAL LETTER C WITH ACUTE
+0xC7	U+00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
+0xC8	U+010C	#LATIN CAPITAL LETTER C WITH CARON
+0xC9	U+00C9	#LATIN CAPITAL LETTER E WITH ACUTE
+0xCA	U+0118	#LATIN CAPITAL LETTER E WITH OGONEK
+0xCB	U+00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
+0xCC	U+011A	#LATIN CAPITAL LETTER E WITH CARON
+0xCD	U+00CD	#LATIN CAPITAL LETTER I WITH ACUTE
+0xCE	U+00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xCF	U+010E	#LATIN CAPITAL LETTER D WITH CARON
+0xD0	U+0110	#LATIN CAPITAL LETTER D WITH STROKE
+0xD1	U+0143	#LATIN CAPITAL LETTER N WITH ACUTE
+0xD2	U+0147	#LATIN CAPITAL LETTER N WITH CARON
+0xD3	U+00D3	#LATIN CAPITAL LETTER O WITH ACUTE
+0xD4	U+00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xD5	U+0150	#LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0xD6	U+00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
+0xD7	U+00D7	#MULTIPLICATION SIGN
+0xD8	U+0158	#LATIN CAPITAL LETTER R WITH CARON
+0xD9	U+016E	#LATIN CAPITAL LETTER U WITH RING ABOVE
+0xDA	U+00DA	#LATIN CAPITAL LETTER U WITH ACUTE
+0xDB	U+0170	#LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0xDC	U+00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD	U+00DD	#LATIN CAPITAL LETTER Y WITH ACUTE
+0xDE	U+0162	#LATIN CAPITAL LETTER T WITH CEDILLA
+0xDF	U+00DF	#LATIN SMALL LETTER SHARP S
+0xE0	U+0155	#LATIN SMALL LETTER R WITH ACUTE
+0xE1	U+00E1	#LATIN SMALL LETTER A WITH ACUTE
+0xE2	U+00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
+0xE3	U+0103	#LATIN SMALL LETTER A WITH BREVE
+0xE4	U+00E4	#LATIN SMALL LETTER A WITH DIAERESIS
+0xE5	U+013A	#LATIN SMALL LETTER L WITH ACUTE
+0xE6	U+0107	#LATIN SMALL LETTER C WITH ACUTE
+0xE7	U+00E7	#LATIN SMALL LETTER C WITH CEDILLA
+0xE8	U+010D	#LATIN SMALL LETTER C WITH CARON
+0xE9	U+00E9	#LATIN SMALL LETTER E WITH ACUTE
+0xEA	U+0119	#LATIN SMALL LETTER E WITH OGONEK
+0xEB	U+00EB	#LATIN SMALL LETTER E WITH DIAERESIS
+0xEC	U+011B	#LATIN SMALL LETTER E WITH CARON
+0xED	U+00ED	#LATIN SMALL LETTER I WITH ACUTE
+0xEE	U+00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF	U+010F	#LATIN SMALL LETTER D WITH CARON
+0xF0	U+0111	#LATIN SMALL LETTER D WITH STROKE
+0xF1	U+0144	#LATIN SMALL LETTER N WITH ACUTE
+0xF2	U+0148	#LATIN SMALL LETTER N WITH CARON
+0xF3	U+00F3	#LATIN SMALL LETTER O WITH ACUTE
+0xF4	U+00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5	U+0151	#LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0xF6	U+00F6	#LATIN SMALL LETTER O WITH DIAERESIS
+0xF7	U+00F7	#DIVISION SIGN
+0xF8	U+0159	#LATIN SMALL LETTER R WITH CARON
+0xF9	U+016F	#LATIN SMALL LETTER U WITH RING ABOVE
+0xFA	U+00FA	#LATIN SMALL LETTER U WITH ACUTE
+0xFB	U+0171	#LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0xFC	U+00FC	#LATIN SMALL LETTER U WITH DIAERESIS
+0xFD	U+00FD	#LATIN SMALL LETTER Y WITH ACUTE
+0xFE	U+0163	#LATIN SMALL LETTER T WITH CEDILLA
+0xFF	U+02D9	#DOT ABOVE
diff --git a/src/chrtrans/cp1251_uni.tbl b/src/chrtrans/cp1251_uni.tbl
index e9bb9460..ed4a1e18 100644
--- a/src/chrtrans/cp1251_uni.tbl
+++ b/src/chrtrans/cp1251_uni.tbl
@@ -5,150 +5,152 @@ Mwindows-1251
 OWinCyrillic (cp1251)
 
 #
-#    Name:     cp1251_WinCyrillic to Unicode table
+#    Name:     cp1251 to Unicode table
 #    Unicode version: 2.0
 #    Table version: 2.00
 #    Table format:  Format A
-#    Date:          04/24/96
-#    Authors:       Lori Brownell <loribr@microsoft.com>
-#                   K.D. Chang    <a-kchang@microsoft.com>
+#    Date:          04/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1251_WinCyrillic code (in hex)
+#        Column #1 is the cp1251 code (in hex)
 #        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1251_WinCyrillic order
+#    The entries are in cp1251 order
 #
+##################
+
+0x20-0x7e       idem
 #
-0x20-0x7f       idem
-#
-0x80    U+0402  #CYRILLIC CAPITAL LETTER DJE
-0x81    U+0403  #CYRILLIC CAPITAL LETTER GJE
-0x82    U+201A  #SINGLE LOW-9 QUOTATION MARK
-0x83    U+0453  #CYRILLIC SMALL LETTER GJE
-0x84    U+201E  #DOUBLE LOW-9 QUOTATION MARK
-0x85    U+2026  #HORIZONTAL ELLIPSIS
-0x86    U+2020  #DAGGER
-0x87    U+2021  #DOUBLE DAGGER
-#0x88            #UNDEFINED
-0x89    U+2030  #PER MILLE SIGN
-0x8A    U+0409  #CYRILLIC CAPITAL LETTER LJE
-0x8B    U+2039  #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C    U+040A  #CYRILLIC CAPITAL LETTER NJE
-0x8D    U+040C  #CYRILLIC CAPITAL LETTER KJE
-0x8E    U+040B  #CYRILLIC CAPITAL LETTER TSHE
-0x8F    U+040F  #CYRILLIC CAPITAL LETTER DZHE
-0x90    U+0452  #CYRILLIC SMALL LETTER DJE
-0x91    U+2018  #LEFT SINGLE QUOTATION MARK
-0x92    U+2019  #RIGHT SINGLE QUOTATION MARK
-0x93    U+201C  #LEFT DOUBLE QUOTATION MARK
-0x94    U+201D  #RIGHT DOUBLE QUOTATION MARK
-0x95    U+2022  #BULLET
-0x96    U+2013  #EN DASH
-0x97    U+2014  #EM DASH
-#0x98            #UNDEFINED
-0x99    U+2122  #TRADE MARK SIGN
-0x9A    U+0459  #CYRILLIC SMALL LETTER LJE
-0x9B    U+203A  #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C    U+045A  #CYRILLIC SMALL LETTER NJE
-0x9D    U+045C  #CYRILLIC SMALL LETTER KJE
-0x9E    U+045B  #CYRILLIC SMALL LETTER TSHE
-0x9F    U+045F  #CYRILLIC SMALL LETTER DZHE
-0xA0    U+00A0  #NO-BREAK SPACE
-0xA1    U+040E  #CYRILLIC CAPITAL LETTER SHORT U
-0xA2    U+045E  #CYRILLIC SMALL LETTER SHORT U
-0xA3    U+0408  #CYRILLIC CAPITAL LETTER JE
-0xA4    U+00A4  #CURRENCY SIGN
-0xA5    U+0490  #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0xA6    U+00A6  #BROKEN BAR
-0xA7    U+00A7  #SECTION SIGN
-0xA8    U+0401  #CYRILLIC CAPITAL LETTER IO
-0xA9    U+00A9  #COPYRIGHT SIGN
-0xAA    U+0404  #CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xAB    U+00AB  #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC    U+00AC  #NOT SIGN
-0xAD    U+00AD  #SOFT HYPHEN
-0xAE    U+00AE  #REGISTERED SIGN
-0xAF    U+0407  #CYRILLIC CAPITAL LETTER YI
-0xB0    U+00B0  #DEGREE SIGN
-0xB1    U+00B1  #PLUS-MINUS SIGN
-0xB2    U+0406  #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB3    U+0456  #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB4    U+0491  #CYRILLIC SMALL LETTER GHE WITH UPTURN
-0xB5    U+00B5  #MICRO SIGN
-0xB6    U+00B6  #PILCROW SIGN
-0xB7    U+00B7  #MIDDLE DOT
-0xB8    U+0451  #CYRILLIC SMALL LETTER IO
-0xB9    U+2116  #NUMERO SIGN
-0xBA    U+0454  #CYRILLIC SMALL LETTER UKRAINIAN IE
-0xBB    U+00BB  #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC    U+0458  #CYRILLIC SMALL LETTER JE
-0xBD    U+0405  #CYRILLIC CAPITAL LETTER DZE
-0xBE    U+0455  #CYRILLIC SMALL LETTER DZE
-0xBF    U+0457  #CYRILLIC SMALL LETTER YI
-0xC0    U+0410  #CYRILLIC CAPITAL LETTER A
-0xC1    U+0411  #CYRILLIC CAPITAL LETTER BE
-0xC2    U+0412  #CYRILLIC CAPITAL LETTER VE
-0xC3    U+0413  #CYRILLIC CAPITAL LETTER GHE
-0xC4    U+0414  #CYRILLIC CAPITAL LETTER DE
-0xC5    U+0415  #CYRILLIC CAPITAL LETTER IE
-0xC6    U+0416  #CYRILLIC CAPITAL LETTER ZHE
-0xC7    U+0417  #CYRILLIC CAPITAL LETTER ZE
-0xC8    U+0418  #CYRILLIC CAPITAL LETTER I
-0xC9    U+0419  #CYRILLIC CAPITAL LETTER SHORT I
-0xCA    U+041A  #CYRILLIC CAPITAL LETTER KA
-0xCB    U+041B  #CYRILLIC CAPITAL LETTER EL
-0xCC    U+041C  #CYRILLIC CAPITAL LETTER EM
-0xCD    U+041D  #CYRILLIC CAPITAL LETTER EN
-0xCE    U+041E  #CYRILLIC CAPITAL LETTER O
-0xCF    U+041F  #CYRILLIC CAPITAL LETTER PE
-0xD0    U+0420  #CYRILLIC CAPITAL LETTER ER
-0xD1    U+0421  #CYRILLIC CAPITAL LETTER ES
-0xD2    U+0422  #CYRILLIC CAPITAL LETTER TE
-0xD3    U+0423  #CYRILLIC CAPITAL LETTER U
-0xD4    U+0424  #CYRILLIC CAPITAL LETTER EF
-0xD5    U+0425  #CYRILLIC CAPITAL LETTER HA
-0xD6    U+0426  #CYRILLIC CAPITAL LETTER TSE
-0xD7    U+0427  #CYRILLIC CAPITAL LETTER CHE
-0xD8    U+0428  #CYRILLIC CAPITAL LETTER SHA
-0xD9    U+0429  #CYRILLIC CAPITAL LETTER SHCHA
-0xDA    U+042A  #CYRILLIC CAPITAL LETTER HARD SIGN
-0xDB    U+042B  #CYRILLIC CAPITAL LETTER YERU
-0xDC    U+042C  #CYRILLIC CAPITAL LETTER SOFT SIGN
-0xDD    U+042D  #CYRILLIC CAPITAL LETTER E
-0xDE    U+042E  #CYRILLIC CAPITAL LETTER YU
-0xDF    U+042F  #CYRILLIC CAPITAL LETTER YA
-0xE0    U+0430  #CYRILLIC SMALL LETTER A
-0xE1    U+0431  #CYRILLIC SMALL LETTER BE
-0xE2    U+0432  #CYRILLIC SMALL LETTER VE
-0xE3    U+0433  #CYRILLIC SMALL LETTER GHE
-0xE4    U+0434  #CYRILLIC SMALL LETTER DE
-0xE5    U+0435  #CYRILLIC SMALL LETTER IE
-0xE6    U+0436  #CYRILLIC SMALL LETTER ZHE
-0xE7    U+0437  #CYRILLIC SMALL LETTER ZE
-0xE8    U+0438  #CYRILLIC SMALL LETTER I
-0xE9    U+0439  #CYRILLIC SMALL LETTER SHORT I
-0xEA    U+043A  #CYRILLIC SMALL LETTER KA
-0xEB    U+043B  #CYRILLIC SMALL LETTER EL
-0xEC    U+043C  #CYRILLIC SMALL LETTER EM
-0xED    U+043D  #CYRILLIC SMALL LETTER EN
-0xEE    U+043E  #CYRILLIC SMALL LETTER O
-0xEF    U+043F  #CYRILLIC SMALL LETTER PE
-0xF0    U+0440  #CYRILLIC SMALL LETTER ER
-0xF1    U+0441  #CYRILLIC SMALL LETTER ES
-0xF2    U+0442  #CYRILLIC SMALL LETTER TE
-0xF3    U+0443  #CYRILLIC SMALL LETTER U
-0xF4    U+0444  #CYRILLIC SMALL LETTER EF
-0xF5    U+0445  #CYRILLIC SMALL LETTER HA
-0xF6    U+0446  #CYRILLIC SMALL LETTER TSE
-0xF7    U+0447  #CYRILLIC SMALL LETTER CHE
-0xF8    U+0448  #CYRILLIC SMALL LETTER SHA
-0xF9    U+0449  #CYRILLIC SMALL LETTER SHCHA
-0xFA    U+044A  #CYRILLIC SMALL LETTER HARD SIGN
-0xFB    U+044B  #CYRILLIC SMALL LETTER YERU
-0xFC    U+044C  #CYRILLIC SMALL LETTER SOFT SIGN
-0xFD    U+044D  #CYRILLIC SMALL LETTER E
-0xFE    U+044E  #CYRILLIC SMALL LETTER YU
-0xFF    U+044F  #CYRILLIC SMALL LETTER YA
+0x80	U+0402	#CYRILLIC CAPITAL LETTER DJE
+0x81	U+0403	#CYRILLIC CAPITAL LETTER GJE
+0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
+0x83	U+0453	#CYRILLIC SMALL LETTER GJE
+0x84	U+201E	#DOUBLE LOW-9 QUOTATION MARK
+0x85	U+2026	#HORIZONTAL ELLIPSIS
+0x86	U+2020	#DAGGER
+0x87	U+2021	#DOUBLE DAGGER
+0x88	U+20AC	#EURO SIGN
+0x89	U+2030	#PER MILLE SIGN
+0x8A	U+0409	#CYRILLIC CAPITAL LETTER LJE
+0x8B	U+2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0x8C	U+040A	#CYRILLIC CAPITAL LETTER NJE
+0x8D	U+040C	#CYRILLIC CAPITAL LETTER KJE
+0x8E	U+040B	#CYRILLIC CAPITAL LETTER TSHE
+0x8F	U+040F	#CYRILLIC CAPITAL LETTER DZHE
+0x90	U+0452	#CYRILLIC SMALL LETTER DJE
+0x91	U+2018	#LEFT SINGLE QUOTATION MARK
+0x92	U+2019	#RIGHT SINGLE QUOTATION MARK
+0x93	U+201C	#LEFT DOUBLE QUOTATION MARK
+0x94	U+201D	#RIGHT DOUBLE QUOTATION MARK
+0x95	U+2022	#BULLET
+0x96	U+2013	#EN DASH
+0x97	U+2014	#EM DASH
+0x98	      	#UNDEFINED
+0x99	U+2122	#TRADE MARK SIGN
+0x9A	U+0459	#CYRILLIC SMALL LETTER LJE
+0x9B	U+203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0x9C	U+045A	#CYRILLIC SMALL LETTER NJE
+0x9D	U+045C	#CYRILLIC SMALL LETTER KJE
+0x9E	U+045B	#CYRILLIC SMALL LETTER TSHE
+0x9F	U+045F	#CYRILLIC SMALL LETTER DZHE
+0xA0	U+00A0	#NO-BREAK SPACE
+0xA1	U+040E	#CYRILLIC CAPITAL LETTER SHORT U
+0xA2	U+045E	#CYRILLIC SMALL LETTER SHORT U
+0xA3	U+0408	#CYRILLIC CAPITAL LETTER JE
+0xA4	U+00A4	#CURRENCY SIGN
+0xA5	U+0490	#CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0xA6	U+00A6	#BROKEN BAR
+0xA7	U+00A7	#SECTION SIGN
+0xA8	U+0401	#CYRILLIC CAPITAL LETTER IO
+0xA9	U+00A9	#COPYRIGHT SIGN
+0xAA	U+0404	#CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xAB	U+00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC	U+00AC	#NOT SIGN
+0xAD	U+00AD	#SOFT HYPHEN
+0xAE	U+00AE	#REGISTERED SIGN
+0xAF	U+0407	#CYRILLIC CAPITAL LETTER YI
+0xB0	U+00B0	#DEGREE SIGN
+0xB1	U+00B1	#PLUS-MINUS SIGN
+0xB2	U+0406	#CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0xB3	U+0456	#CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0xB4	U+0491	#CYRILLIC SMALL LETTER GHE WITH UPTURN
+0xB5	U+00B5	#MICRO SIGN
+0xB6	U+00B6	#PILCROW SIGN
+0xB7	U+00B7	#MIDDLE DOT
+0xB8	U+0451	#CYRILLIC SMALL LETTER IO
+0xB9	U+2116	#NUMERO SIGN
+0xBA	U+0454	#CYRILLIC SMALL LETTER UKRAINIAN IE
+0xBB	U+00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC	U+0458	#CYRILLIC SMALL LETTER JE
+0xBD	U+0405	#CYRILLIC CAPITAL LETTER DZE
+0xBE	U+0455	#CYRILLIC SMALL LETTER DZE
+0xBF	U+0457	#CYRILLIC SMALL LETTER YI
+0xC0	U+0410	#CYRILLIC CAPITAL LETTER A
+0xC1	U+0411	#CYRILLIC CAPITAL LETTER BE
+0xC2	U+0412	#CYRILLIC CAPITAL LETTER VE
+0xC3	U+0413	#CYRILLIC CAPITAL LETTER GHE
+0xC4	U+0414	#CYRILLIC CAPITAL LETTER DE
+0xC5	U+0415	#CYRILLIC CAPITAL LETTER IE
+0xC6	U+0416	#CYRILLIC CAPITAL LETTER ZHE
+0xC7	U+0417	#CYRILLIC CAPITAL LETTER ZE
+0xC8	U+0418	#CYRILLIC CAPITAL LETTER I
+0xC9	U+0419	#CYRILLIC CAPITAL LETTER SHORT I
+0xCA	U+041A	#CYRILLIC CAPITAL LETTER KA
+0xCB	U+041B	#CYRILLIC CAPITAL LETTER EL
+0xCC	U+041C	#CYRILLIC CAPITAL LETTER EM
+0xCD	U+041D	#CYRILLIC CAPITAL LETTER EN
+0xCE	U+041E	#CYRILLIC CAPITAL LETTER O
+0xCF	U+041F	#CYRILLIC CAPITAL LETTER PE
+0xD0	U+0420	#CYRILLIC CAPITAL LETTER ER
+0xD1	U+0421	#CYRILLIC CAPITAL LETTER ES
+0xD2	U+0422	#CYRILLIC CAPITAL LETTER TE
+0xD3	U+0423	#CYRILLIC CAPITAL LETTER U
+0xD4	U+0424	#CYRILLIC CAPITAL LETTER EF
+0xD5	U+0425	#CYRILLIC CAPITAL LETTER HA
+0xD6	U+0426	#CYRILLIC CAPITAL LETTER TSE
+0xD7	U+0427	#CYRILLIC CAPITAL LETTER CHE
+0xD8	U+0428	#CYRILLIC CAPITAL LETTER SHA
+0xD9	U+0429	#CYRILLIC CAPITAL LETTER SHCHA
+0xDA	U+042A	#CYRILLIC CAPITAL LETTER HARD SIGN
+0xDB	U+042B	#CYRILLIC CAPITAL LETTER YERU
+0xDC	U+042C	#CYRILLIC CAPITAL LETTER SOFT SIGN
+0xDD	U+042D	#CYRILLIC CAPITAL LETTER E
+0xDE	U+042E	#CYRILLIC CAPITAL LETTER YU
+0xDF	U+042F	#CYRILLIC CAPITAL LETTER YA
+0xE0	U+0430	#CYRILLIC SMALL LETTER A
+0xE1	U+0431	#CYRILLIC SMALL LETTER BE
+0xE2	U+0432	#CYRILLIC SMALL LETTER VE
+0xE3	U+0433	#CYRILLIC SMALL LETTER GHE
+0xE4	U+0434	#CYRILLIC SMALL LETTER DE
+0xE5	U+0435	#CYRILLIC SMALL LETTER IE
+0xE6	U+0436	#CYRILLIC SMALL LETTER ZHE
+0xE7	U+0437	#CYRILLIC SMALL LETTER ZE
+0xE8	U+0438	#CYRILLIC SMALL LETTER I
+0xE9	U+0439	#CYRILLIC SMALL LETTER SHORT I
+0xEA	U+043A	#CYRILLIC SMALL LETTER KA
+0xEB	U+043B	#CYRILLIC SMALL LETTER EL
+0xEC	U+043C	#CYRILLIC SMALL LETTER EM
+0xED	U+043D	#CYRILLIC SMALL LETTER EN
+0xEE	U+043E	#CYRILLIC SMALL LETTER O
+0xEF	U+043F	#CYRILLIC SMALL LETTER PE
+0xF0	U+0440	#CYRILLIC SMALL LETTER ER
+0xF1	U+0441	#CYRILLIC SMALL LETTER ES
+0xF2	U+0442	#CYRILLIC SMALL LETTER TE
+0xF3	U+0443	#CYRILLIC SMALL LETTER U
+0xF4	U+0444	#CYRILLIC SMALL LETTER EF
+0xF5	U+0445	#CYRILLIC SMALL LETTER HA
+0xF6	U+0446	#CYRILLIC SMALL LETTER TSE
+0xF7	U+0447	#CYRILLIC SMALL LETTER CHE
+0xF8	U+0448	#CYRILLIC SMALL LETTER SHA
+0xF9	U+0449	#CYRILLIC SMALL LETTER SHCHA
+0xFA	U+044A	#CYRILLIC SMALL LETTER HARD SIGN
+0xFB	U+044B	#CYRILLIC SMALL LETTER YERU
+0xFC	U+044C	#CYRILLIC SMALL LETTER SOFT SIGN
+0xFD	U+044D	#CYRILLIC SMALL LETTER E
+0xFE	U+044E	#CYRILLIC SMALL LETTER YU
+0xFF	U+044F	#CYRILLIC SMALL LETTER YA
diff --git a/src/chrtrans/cp1252_uni.tbl b/src/chrtrans/cp1252_uni.tbl
index d8adb2fa..d5912022 100644
--- a/src/chrtrans/cp1252_uni.tbl
+++ b/src/chrtrans/cp1252_uni.tbl
@@ -9,277 +9,152 @@ Mwindows-1252
 OWinLatin1 (cp1252)
 
 #
-#    Name:     cp1252_WinLatin1 to Unicode table
-#    Unicode version: 1.1
-#    Table version: 1.1
+#    Name:     cp1252 to Unicode table
+#    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/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1252_WinLatin1 code (in hex)
-#        Column #2 is the Unicode (in hex as U+XXXX)
+#        Column #1 is the cp1252 code (in hex)
+#        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1252_WinLatin1 order
+#    The entries are in cp1252 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+0080  #NOT USED
-#0x81    U+0081  #NOT USED
-0x82    U+201a  #SINGLE LOW-9 QUOTATION MARK
-0x83    U+0192  #LATIN SMALL LETTER F WITH HOOK
-0x84    U+201e  #DOUBLE LOW-9 QUOTATION MARK
-0x85    U+2026  #HORIZONTAL ELLIPSIS
-0x86    U+2020  #DAGGER
-0x87    U+2021  #DOUBLE DAGGER
-0x88    U+02c6  #MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89    U+2030  #PER MILLE SIGN
-0x8a    U+0160  #LATIN CAPITAL LETTER S WITH CARON
-0x8b    U+2039  #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8c    U+0152  #LATIN CAPITAL LIGATURE OE
-#0x8d    U+008d  #NOT USED
-#0x8e    U+008e  #NOT USED
-#0x8f    U+008f  #NOT USED
-#0x90    U+0090  #NOT USED
-0x91    U+2018  #LEFT SINGLE QUOTATION MARK
-0x92    U+2019  #RIGHT SINGLE QUOTATION MARK
-0x93    U+201c  #LEFT DOUBLE QUOTATION MARK
-0x94    U+201d  #RIGHT DOUBLE QUOTATION MARK
-0x95    U+2022  #BULLET
-0x96    U+2013  #EN DASH
-0x97    U+2014  #EM DASH
-0x98    U+02dc  #SMALL TILDE
-0x99    U+2122  #TRADE MARK SIGN
-0x9a    U+0161  #LATIN SMALL LETTER S WITH CARON
-0x9b    U+203a  #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9c    U+0153  #LATIN SMALL LIGATURE OE
-#0x9d    U+009d  #NOT USED
-#0x9e    U+009e  #NOT USED
-0x9f    U+0178  #LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xa0    U+00a0  #NO-BREAK SPACE
-0xa1    U+00a1  #INVERTED EXCLAMATION MARK
-0xa2    U+00a2  #CENT SIGN
-0xa3    U+00a3  #POUND SIGN
-0xa4    U+00a4  #CURRENCY SIGN
-0xa5    U+00a5  #YEN SIGN
-0xa6    U+00a6  #BROKEN BAR
-0xa7    U+00a7  #SECTION SIGN
-0xa8    U+00a8  #DIAERESIS
-0xa9    U+00a9  #COPYRIGHT SIGN
-0xaa    U+00aa  #FEMININE ORDINAL INDICATOR
-0xab    U+00ab  #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xac    U+00ac  #NOT SIGN
-0xad    U+00ad  #SOFT HYPHEN
-0xae    U+00ae  #REGISTERED SIGN
-0xaf    U+00af  #MACRON
-0xb0    U+00b0  #DEGREE SIGN
-0xb1    U+00b1  #PLUS-MINUS SIGN
-0xb2    U+00b2  #SUPERSCRIPT TWO
-0xb3    U+00b3  #SUPERSCRIPT THREE
-0xb4    U+00b4  #ACUTE ACCENT
-0xb5    U+00b5  #MICRO SIGN
-0xb6    U+00b6  #PILCROW SIGN
-0xb7    U+00b7  #MIDDLE DOT
-0xb8    U+00b8  #CEDILLA
-0xb9    U+00b9  #SUPERSCRIPT ONE
-0xba    U+00ba  #MASCULINE ORDINAL INDICATOR
-0xbb    U+00bb  #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xbc    U+00bc  #VULGAR FRACTION ONE QUARTER
-0xbd    U+00bd  #VULGAR FRACTION ONE HALF
-0xbe    U+00be  #VULGAR FRACTION THREE QUARTERS
-0xbf    U+00bf  #INVERTED QUESTION MARK
-0xc0    U+00c0  #LATIN CAPITAL LETTER A WITH GRAVE
-0xc1    U+00c1  #LATIN CAPITAL LETTER A WITH ACUTE
-0xc2    U+00c2  #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xc3    U+00c3  #LATIN CAPITAL LETTER A WITH TILDE
-0xc4    U+00c4  #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xc5    U+00c5  #LATIN CAPITAL LETTER A WITH RING ABOVE
-0xc6    U+00c6  #LATIN CAPITAL LIGATURE AE
-0xc7    U+00c7  #LATIN CAPITAL LETTER C WITH CEDILLA
-0xc8    U+00c8  #LATIN CAPITAL LETTER E WITH GRAVE
-0xc9    U+00c9  #LATIN CAPITAL LETTER E WITH ACUTE
-0xca    U+00ca  #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xcb    U+00cb  #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xcc    U+00cc  #LATIN CAPITAL LETTER I WITH GRAVE
-0xcd    U+00cd  #LATIN CAPITAL LETTER I WITH ACUTE
-0xce    U+00ce  #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xcf    U+00cf  #LATIN CAPITAL LETTER I WITH DIAERESIS
-0xd0    U+00d0  #LATIN CAPITAL LETTER ETH
-0xd1    U+00d1  #LATIN CAPITAL LETTER N WITH TILDE
-0xd2    U+00d2  #LATIN CAPITAL LETTER O WITH GRAVE
-0xd3    U+00d3  #LATIN CAPITAL LETTER O WITH ACUTE
-0xd4    U+00d4  #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xd5    U+00d5  #LATIN CAPITAL LETTER O WITH TILDE
-0xd6    U+00d6  #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xd7    U+00d7  #MULTIPLICATION SIGN
-0xd8    U+00d8  #LATIN CAPITAL LETTER O WITH STROKE
-0xd9    U+00d9  #LATIN CAPITAL LETTER U WITH GRAVE
-0xda    U+00da  #LATIN CAPITAL LETTER U WITH ACUTE
-0xdb    U+00db  #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xdc    U+00dc  #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xdd    U+00dd  #LATIN CAPITAL LETTER Y WITH ACUTE
-0xde    U+00de  #LATIN CAPITAL LETTER THORN
-0xdf    U+00df  #LATIN SMALL LETTER SHARP S
-0xe0    U+00e0  #LATIN SMALL LETTER A WITH GRAVE
-0xe1    U+00e1  #LATIN SMALL LETTER A WITH ACUTE
-0xe2    U+00e2  #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xe3    U+00e3  #LATIN SMALL LETTER A WITH TILDE
-0xe4    U+00e4  #LATIN SMALL LETTER A WITH DIAERESIS
-0xe5    U+00e5  #LATIN SMALL LETTER A WITH RING ABOVE
-0xe6    U+00e6  #LATIN SMALL LIGATURE AE
-0xe7    U+00e7  #LATIN SMALL LETTER C WITH CEDILLA
-0xe8    U+00e8  #LATIN SMALL LETTER E WITH GRAVE
-0xe9    U+00e9  #LATIN SMALL LETTER E WITH ACUTE
-0xea    U+00ea  #LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xeb    U+00eb  #LATIN SMALL LETTER E WITH DIAERESIS
-0xec    U+00ec  #LATIN SMALL LETTER I WITH GRAVE
-0xed    U+00ed  #LATIN SMALL LETTER I WITH ACUTE
-0xee    U+00ee  #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xef    U+00ef  #LATIN SMALL LETTER I WITH DIAERESIS
-0xf0    U+00f0  #LATIN SMALL LETTER ETH
-0xf1    U+00f1  #LATIN SMALL LETTER N WITH TILDE
-0xf2    U+00f2  #LATIN SMALL LETTER O WITH GRAVE
-0xf3    U+00f3  #LATIN SMALL LETTER O WITH ACUTE
-0xf4    U+00f4  #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xf5    U+00f5  #LATIN SMALL LETTER O WITH TILDE
-0xf6    U+00f6  #LATIN SMALL LETTER O WITH DIAERESIS
-0xf7    U+00f7  #DIVISION SIGN
-0xf8    U+00f8  #LATIN SMALL LETTER O WITH STROKE
-0xf9    U+00f9  #LATIN SMALL LETTER U WITH GRAVE
-0xfa    U+00fa  #LATIN SMALL LETTER U WITH ACUTE
-0xfb    U+00fb  #LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xfc    U+00fc  #LATIN SMALL LETTER U WITH DIAERESIS
-0xfd    U+00fd  #LATIN SMALL LETTER Y WITH ACUTE
-0xfe    U+00fe  #LATIN SMALL LETTER THORN
-0xff    U+00ff  #LATIN SMALL LETTER Y WITH DIAERESIS
-
+##################
 
+0x20-0x7e       idem
+#
+0x80	U+20AC	#EURO SIGN
+0x81	      	#UNDEFINED
+0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
+0x83	U+0192	#LATIN SMALL LETTER F WITH HOOK
+0x84	U+201E	#DOUBLE LOW-9 QUOTATION MARK
+0x85	U+2026	#HORIZONTAL ELLIPSIS
+0x86	U+2020	#DAGGER
+0x87	U+2021	#DOUBLE DAGGER
+0x88	U+02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
+0x89	U+2030	#PER MILLE SIGN
+0x8A	U+0160	#LATIN CAPITAL LETTER S WITH CARON
+0x8B	U+2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0x8C	U+0152	#LATIN CAPITAL LIGATURE OE
+0x8D	      	#UNDEFINED
+0x8E	U+017D	#LATIN CAPITAL LETTER Z WITH CARON
+0x8F	      	#UNDEFINED
+0x90	      	#UNDEFINED
+0x91	U+2018	#LEFT SINGLE QUOTATION MARK
+0x92	U+2019	#RIGHT SINGLE QUOTATION MARK
+0x93	U+201C	#LEFT DOUBLE QUOTATION MARK
+0x94	U+201D	#RIGHT DOUBLE QUOTATION MARK
+0x95	U+2022	#BULLET
+0x96	U+2013	#EN DASH
+0x97	U+2014	#EM DASH
+0x98	U+02DC	#SMALL TILDE
+0x99	U+2122	#TRADE MARK SIGN
+0x9A	U+0161	#LATIN SMALL LETTER S WITH CARON
+0x9B	U+203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0x9C	U+0153	#LATIN SMALL LIGATURE OE
+0x9D	      	#UNDEFINED
+0x9E	U+017E	#LATIN SMALL LETTER Z WITH CARON
+0x9F	U+0178	#LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xA0	U+00A0	#NO-BREAK SPACE
+0xA1	U+00A1	#INVERTED EXCLAMATION MARK
+0xA2	U+00A2	#CENT SIGN
+0xA3	U+00A3	#POUND SIGN
+0xA4	U+00A4	#CURRENCY SIGN
+0xA5	U+00A5	#YEN SIGN
+0xA6	U+00A6	#BROKEN BAR
+0xA7	U+00A7	#SECTION SIGN
+0xA8	U+00A8	#DIAERESIS
+0xA9	U+00A9	#COPYRIGHT SIGN
+0xAA	U+00AA	#FEMININE ORDINAL INDICATOR
+0xAB	U+00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC	U+00AC	#NOT SIGN
+0xAD	U+00AD	#SOFT HYPHEN
+0xAE	U+00AE	#REGISTERED SIGN
+0xAF	U+00AF	#MACRON
+0xB0	U+00B0	#DEGREE SIGN
+0xB1	U+00B1	#PLUS-MINUS SIGN
+0xB2	U+00B2	#SUPERSCRIPT TWO
+0xB3	U+00B3	#SUPERSCRIPT THREE
+0xB4	U+00B4	#ACUTE ACCENT
+0xB5	U+00B5	#MICRO SIGN
+0xB6	U+00B6	#PILCROW SIGN
+0xB7	U+00B7	#MIDDLE DOT
+0xB8	U+00B8	#CEDILLA
+0xB9	U+00B9	#SUPERSCRIPT ONE
+0xBA	U+00BA	#MASCULINE ORDINAL INDICATOR
+0xBB	U+00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC	U+00BC	#VULGAR FRACTION ONE QUARTER
+0xBD	U+00BD	#VULGAR FRACTION ONE HALF
+0xBE	U+00BE	#VULGAR FRACTION THREE QUARTERS
+0xBF	U+00BF	#INVERTED QUESTION MARK
+0xC0	U+00C0	#LATIN CAPITAL LETTER A WITH GRAVE
+0xC1	U+00C1	#LATIN CAPITAL LETTER A WITH ACUTE
+0xC2	U+00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xC3	U+00C3	#LATIN CAPITAL LETTER A WITH TILDE
+0xC4	U+00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5	U+00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
+0xC6	U+00C6	#LATIN CAPITAL LETTER AE
+0xC7	U+00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
+0xC8	U+00C8	#LATIN CAPITAL LETTER E WITH GRAVE
+0xC9	U+00C9	#LATIN CAPITAL LETTER E WITH ACUTE
+0xCA	U+00CA	#LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xCB	U+00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
+0xCC	U+00CC	#LATIN CAPITAL LETTER I WITH GRAVE
+0xCD	U+00CD	#LATIN CAPITAL LETTER I WITH ACUTE
+0xCE	U+00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xCF	U+00CF	#LATIN CAPITAL LETTER I WITH DIAERESIS
+0xD0	U+00D0	#LATIN CAPITAL LETTER ETH
+0xD1	U+00D1	#LATIN CAPITAL LETTER N WITH TILDE
+0xD2	U+00D2	#LATIN CAPITAL LETTER O WITH GRAVE
+0xD3	U+00D3	#LATIN CAPITAL LETTER O WITH ACUTE
+0xD4	U+00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xD5	U+00D5	#LATIN CAPITAL LETTER O WITH TILDE
+0xD6	U+00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
+0xD7	U+00D7	#MULTIPLICATION SIGN
+0xD8	U+00D8	#LATIN CAPITAL LETTER O WITH STROKE
+0xD9	U+00D9	#LATIN CAPITAL LETTER U WITH GRAVE
+0xDA	U+00DA	#LATIN CAPITAL LETTER U WITH ACUTE
+0xDB	U+00DB	#LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xDC	U+00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD	U+00DD	#LATIN CAPITAL LETTER Y WITH ACUTE
+0xDE	U+00DE	#LATIN CAPITAL LETTER THORN
+0xDF	U+00DF	#LATIN SMALL LETTER SHARP S
+0xE0	U+00E0	#LATIN SMALL LETTER A WITH GRAVE
+0xE1	U+00E1	#LATIN SMALL LETTER A WITH ACUTE
+0xE2	U+00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
+0xE3	U+00E3	#LATIN SMALL LETTER A WITH TILDE
+0xE4	U+00E4	#LATIN SMALL LETTER A WITH DIAERESIS
+0xE5	U+00E5	#LATIN SMALL LETTER A WITH RING ABOVE
+0xE6	U+00E6	#LATIN SMALL LETTER AE
+0xE7	U+00E7	#LATIN SMALL LETTER C WITH CEDILLA
+0xE8	U+00E8	#LATIN SMALL LETTER E WITH GRAVE
+0xE9	U+00E9	#LATIN SMALL LETTER E WITH ACUTE
+0xEA	U+00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
+0xEB	U+00EB	#LATIN SMALL LETTER E WITH DIAERESIS
+0xEC	U+00EC	#LATIN SMALL LETTER I WITH GRAVE
+0xED	U+00ED	#LATIN SMALL LETTER I WITH ACUTE
+0xEE	U+00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF	U+00EF	#LATIN SMALL LETTER I WITH DIAERESIS
+0xF0	U+00F0	#LATIN SMALL LETTER ETH
+0xF1	U+00F1	#LATIN SMALL LETTER N WITH TILDE
+0xF2	U+00F2	#LATIN SMALL LETTER O WITH GRAVE
+0xF3	U+00F3	#LATIN SMALL LETTER O WITH ACUTE
+0xF4	U+00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5	U+00F5	#LATIN SMALL LETTER O WITH TILDE
+0xF6	U+00F6	#LATIN SMALL LETTER O WITH DIAERESIS
+0xF7	U+00F7	#DIVISION SIGN
+0xF8	U+00F8	#LATIN SMALL LETTER O WITH STROKE
+0xF9	U+00F9	#LATIN SMALL LETTER U WITH GRAVE
+0xFA	U+00FA	#LATIN SMALL LETTER U WITH ACUTE
+0xFB	U+00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
+0xFC	U+00FC	#LATIN SMALL LETTER U WITH DIAERESIS
+0xFD	U+00FD	#LATIN SMALL LETTER Y WITH ACUTE
+0xFE	U+00FE	#LATIN SMALL LETTER THORN
+0xFF	U+00FF	#LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/src/chrtrans/cp1253_uni.tbl b/src/chrtrans/cp1253_uni.tbl
index 097dae2b..dac37990 100644
--- a/src/chrtrans/cp1253_uni.tbl
+++ b/src/chrtrans/cp1253_uni.tbl
@@ -4,27 +4,29 @@ Mwindows-1253
 #Name as a Display Charset (used on Options screen)
 OWinGreek (cp1253)
 
-#    Name:     cp1253_WinGreek to Unicode table
+#
+#    Name:     cp1253 to Unicode table
 #    Unicode version: 2.0
 #    Table version: 2.00
 #    Table format:  Format A
-#    Date:          04/24/96
-#    Authors:       Lori Brownell <loribr@microsoft.com>
-#                   K.D. Chang    <a-kchang@microsoft.com>
+#    Date:          04/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1253_WinGreek code (in hex)
+#        Column #1 is the cp1253 code (in hex)
 #        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1253_WinGreek order
+#    The entries are in cp1253 order
 #
 ##################
 
-0x20-0x7f       idem
+0x20-0x7e       idem
 #
-#0x80		#UNDEFINED
+0x80    U+20AC  #EURO SIGN
 #0x81		#UNDEFINED
 0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
 0x83	U+0192	#LATIN SMALL LETTER F WITH HOOK
diff --git a/src/chrtrans/cp1255_uni.tbl b/src/chrtrans/cp1255_uni.tbl
index 5f4d761a..a30d9a7d 100644
--- a/src/chrtrans/cp1255_uni.tbl
+++ b/src/chrtrans/cp1255_uni.tbl
@@ -4,90 +4,92 @@ Mwindows-1255
 #Name as a Display Charset (used on Options screen).
 OWinHebrew (cp1255)
 
-#    Name:     cp1255_WinHebrew to Unicode table
+#
+#    Name:     cp1255 to Unicode table
 #    Unicode version: 2.0
 #    Table version: 2.00
 #    Table format:  Format A
-#    Date:          04/24/96
-#    Authors:       Lori Brownell <loribr@microsoft.com>
-#                   K.D. Chang    <a-kchang@microsoft.com>
+#    Date:          04/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1255_WinHebrew code (in hex)
+#        Column #1 is the cp1255 code (in hex)
 #        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1255_WinHebrew order
+#    The entries are in cp1255 order
 #
 ##################
 
-0x20-0x7f       idem
+0x20-0x7e       idem
 #
-#0x80		#UNDEFINED
-#0x81		#UNDEFINED
-0x82	U+201A	#LOW SINGLE COMMA QUOTATION MARK
-0x83	U+0192	#LATIN SMALL LETTER SCRIPT F
-0x84	U+201E	#LOW DOUBLE COMMA QUOTATION MARK
+0x80	U+20AC	#EURO SIGN
+#0x81	      	#UNDEFINED
+0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
+0x83	U+0192	#LATIN SMALL LETTER F WITH HOOK
+0x84	U+201E	#DOUBLE LOW-9 QUOTATION MARK
 0x85	U+2026	#HORIZONTAL ELLIPSIS
 0x86	U+2020	#DAGGER
 0x87	U+2021	#DOUBLE DAGGER
-0x88	U+02C6	#MODIFIER LETTER CIRCUMFLEX
+0x88	U+02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
 0x89	U+2030	#PER MILLE SIGN
-#0x8A		#UNDEFINED
-0x8B	U+2039	#LEFT POINTING SINGLE GUILLEMET
-#0x8C		#UNDEFINED
-#0x8D		#UNDEFINED
-#0x8E		#UNDEFINED
-#0x8F		#UNDEFINED
-#0x90		#UNDEFINED
-0x91	U+2018	#SINGLE TURNED COMMA QUOTATION MARK
-0x92	U+2019	#SINGLE COMMA QUOTATION MARK
-0x93	U+201C	#DOUBLE TURNED COMMA QUOTATION MARK
-0x94	U+201D	#DOUBLE COMMA QUOTATION MARK
+#0x8A	      	#UNDEFINED
+0x8B	U+2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+#0x8C	      	#UNDEFINED
+#0x8D	      	#UNDEFINED
+#0x8E	      	#UNDEFINED
+#0x8F	      	#UNDEFINED
+#0x90	      	#UNDEFINED
+0x91	U+2018	#LEFT SINGLE QUOTATION MARK
+0x92	U+2019	#RIGHT SINGLE QUOTATION MARK
+0x93	U+201C	#LEFT DOUBLE QUOTATION MARK
+0x94	U+201D	#RIGHT DOUBLE QUOTATION MARK
 0x95	U+2022	#BULLET
 0x96	U+2013	#EN DASH
 0x97	U+2014	#EM DASH
-0x98	U+02DC	#SPACING TILDE
-0x99	U+2122	#TRADEMARK
-#0x9A		#UNDEFINED
-0x9B	U+203A	#RIGHT POINTING SINGLE GUILLEMET
-#0x9C		#UNDEFINED
-#0x9D		#UNDEFINED
-#0x9E		#UNDEFINED
-#0x9F		#UNDEFINED
-0xA0	U+00A0	#NON-BREAKING SPACE
-#0xA1		#UNDEFINED
+0x98	U+02DC	#SMALL TILDE
+0x99	U+2122	#TRADE MARK SIGN
+#0x9A	      	#UNDEFINED
+0x9B	U+203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+#0x9C	      	#UNDEFINED
+#0x9D	      	#UNDEFINED
+#0x9E	      	#UNDEFINED
+#0x9F	      	#UNDEFINED
+0xA0	U+00A0	#NO-BREAK SPACE
+0xA1	U+00A1	#INVERTED EXCLAMATION MARK
 0xA2	U+00A2	#CENT SIGN
 0xA3	U+00A3	#POUND SIGN
 0xA4	U+20AA	#NEW SHEQEL SIGN
 0xA5	U+00A5	#YEN SIGN
-0xA6	U+00A6	#BROKEN VERTICAL BAR
+0xA6	U+00A6	#BROKEN BAR
 0xA7	U+00A7	#SECTION SIGN
-0xA8	U+00A8	#SPACING DIAERESIS
+0xA8	U+00A8	#DIAERESIS
 0xA9	U+00A9	#COPYRIGHT SIGN
-#0xAA		#UNDEFINED
-0xAB	U+00AB	#LEFT POINTING GUILLEMET
+0xAA	U+00D7	#MULTIPLICATION SIGN
+0xAB	U+00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
 0xAC	U+00AC	#NOT SIGN
 0xAD	U+00AD	#SOFT HYPHEN
-0xAE	U+00AE	#REGISTERED TRADE MARK SIGN
-0xAF	U+00AF	#SPACING MACRON
+0xAE	U+00AE	#REGISTERED SIGN
+0xAF	U+00AF	#MACRON
 0xB0	U+00B0	#DEGREE SIGN
-0xB1	U+00B1	#PLUS-OR-MINUS SIGN
-0xB2	U+00B2	#SUPERSCRIPT DIGIT TWO
-0xB3	U+00B3	#SUPERSCRIPT DIGIT THREE
-0xB4	U+00B4	#SPACING ACUTE
+0xB1	U+00B1	#PLUS-MINUS SIGN
+0xB2	U+00B2	#SUPERSCRIPT TWO
+0xB3	U+00B3	#SUPERSCRIPT THREE
+0xB4	U+00B4	#ACUTE ACCENT
 0xB5	U+00B5	#MICRO SIGN
-0xB6	U+00B6	#PARAGRAPH SIGN
+0xB6	U+00B6	#PILCROW SIGN
 0xB7	U+00B7	#MIDDLE DOT
-#0xB8		#UNDEFINED
-0xB9	U+00B9	#SUPERSCRIPT DIGIT ONE
-#0xBA		#UNDEFINED
-0xBB	U+00BB	#RIGHT POINTING GUILLEMET
-0xBC	U+00BC	#FRACTION ONE QUARTER
-0xBD	U+00BD	#FRACTION ONE HALF
-0xBE	U+00BE	#FRACTION THREE QUARTERS
-#0xBF		#UNDEFINED
+0xB8	U+00B8	#CEDILLA
+0xB9	U+00B9	#SUPERSCRIPT ONE
+0xBA	U+00F7	#DIVISION SIGN
+0xBB	U+00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC	U+00BC	#VULGAR FRACTION ONE QUARTER
+0xBD	U+00BD	#VULGAR FRACTION ONE HALF
+0xBE	U+00BE	#VULGAR FRACTION THREE QUARTERS
+0xBF	U+00BF	#INVERTED QUESTION MARK
 0xC0	U+05B0	#HEBREW POINT SHEVA
 0xC1	U+05B1	#HEBREW POINT HATAF SEGOL
 0xC2	U+05B2	#HEBREW POINT HATAF PATAH
@@ -98,28 +100,28 @@ OWinHebrew (cp1255)
 0xC7	U+05B7	#HEBREW POINT PATAH
 0xC8	U+05B8	#HEBREW POINT QAMATS
 0xC9	U+05B9	#HEBREW POINT HOLAM
-0xCA	U+05BA	#HEBREW POINT
+#0xCA		#UNDEFINED
 0xCB	U+05BB	#HEBREW POINT QUBUTS
-0xCC	U+05BC	#HEBREW POINT DAGESH
+0xCC	U+05BC	#HEBREW POINT DAGESH OR MAPIQ
 0xCD	U+05BD	#HEBREW POINT METEG
 0xCE	U+05BE	#HEBREW PUNCTUATION MAQAF
 0xCF	U+05BF	#HEBREW POINT RAFE
-0xD0	U+05C0	#HEBREW POINT PASEQ
+0xD0	U+05C0	#HEBREW PUNCTUATION PASEQ
 0xD1	U+05C1	#HEBREW POINT SHIN DOT
 0xD2	U+05C2	#HEBREW POINT SIN DOT
 0xD3	U+05C3	#HEBREW PUNCTUATION SOF PASUQ
-0xD4	U+05F0	#HEBREW LETTER DOUBLE VAV
-0xD5	U+05F1	#HEBREW LETTER VAV YOD
-0xD6	U+05F2	#HEBREW LETTER DOUBLE YOD
-#0xD7		#UNDEFINED
-#0xD8		#UNDEFINED
-#0xD9		#UNDEFINED
-#0xDA		#UNDEFINED
-#0xDB		#UNDEFINED
-#0xDC		#UNDEFINED
-#0xDD		#UNDEFINED
-#0xDE		#UNDEFINED
-#0xDF		#UNDEFINED
+0xD4	U+05F0	#HEBREW LIGATURE YIDDISH DOUBLE VAV
+0xD5	U+05F1	#HEBREW LIGATURE YIDDISH VAV YOD
+0xD6	U+05F2	#HEBREW LIGATURE YIDDISH DOUBLE YOD
+0xD7	U+05F3	#HEBREW PUNCTUATION GERESH
+0xD8	U+05F4	#HEBREW PUNCTUATION GERSHAYIM
+#0xD9	      	#UNDEFINED
+#0xDA	      	#UNDEFINED
+#0xDB	      	#UNDEFINED
+#0xDC	      	#UNDEFINED
+#0xDD	      	#UNDEFINED
+#0xDE	      	#UNDEFINED
+#0xDF	      	#UNDEFINED
 0xE0	U+05D0	#HEBREW LETTER ALEF
 0xE1	U+05D1	#HEBREW LETTER BET
 0xE2	U+05D2	#HEBREW LETTER GIMEL
@@ -147,8 +149,8 @@ OWinHebrew (cp1255)
 0xF8	U+05E8	#HEBREW LETTER RESH
 0xF9	U+05E9	#HEBREW LETTER SHIN
 0xFA	U+05EA	#HEBREW LETTER TAV
-#0xFB		#UNDEFINED
-#0xFC		#UNDEFINED
+#0xFB	      	#UNDEFINED
+#0xFC	      	#UNDEFINED
 0xFD	U+200E	#LEFT-TO-RIGHT MARK
 0xFE	U+200F	#RIGHT-TO-LEFT MARK
-#0xFF		#UNDEFINED
+#0xFF	      	#UNDEFINED
diff --git a/src/chrtrans/cp1256_uni.tbl b/src/chrtrans/cp1256_uni.tbl
index 6d85d221..0e045aaa 100644
--- a/src/chrtrans/cp1256_uni.tbl
+++ b/src/chrtrans/cp1256_uni.tbl
@@ -4,108 +4,110 @@ Mwindows-1256
 #Name as a Display Charset (used on Options screen).
 OWinArabic (cp1256)
 
-#    Name:     cp1256_WinArabic to Unicode table
+#
+#    Name:     cp1256 to Unicode table
 #    Unicode version: 2.0
 #    Table version: 2.00
 #    Table format:  Format A
-#    Date:          04/24/96
-#    Authors:       Lori Brownell <loribr@microsoft.com>
-#                   K.D. Chang    <a-kchang@microsoft.com>
+#    Date:          04/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1256_WinArabic code (in hex)
+#        Column #1 is the cp1256 code (in hex)
 #        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1256_WinArabic order
+#    The entries are in cp1256 order
 #
 ##################
 
-0x20-0x7f       idem
+0x20-0x7e       idem
 #
-#0x80		#UNDEFINED
-0x81	U+067E	#ARABIC TAA WITH THREE DOTS BELOW
-0x82	U+201A	#LOW SINGLE COMMA QUOTATION MARK
-0x83	U+0192	#LATIN SMALL LETTER SCRIPT F
-0x84	U+201E	#LOW DOUBLE COMMA QUOTATION MARK
+0x80	U+20AC	#EURO SIGN
+0x81	U+067E	#ARABIC LETTER PEH
+0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
+0x83	U+0192	#LATIN SMALL LETTER F WITH HOOK
+0x84	U+201E	#DOUBLE LOW-9 QUOTATION MARK
 0x85	U+2026	#HORIZONTAL ELLIPSIS
 0x86	U+2020	#DAGGER
 0x87	U+2021	#DOUBLE DAGGER
-0x88	U+02C6	#MODIFIER LETTER CIRCUMFLEX
+0x88	U+02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
 0x89	U+2030	#PER MILLE SIGN
-#0x8A		#UNDEFINED
-0x8B	U+2039	#LEFT POINTING SINGLE GUILLEMET
-0x8C	U+0152	#LATIN CAPITAL LETTER O E
-0x8D	U+0686	#ARABIC HAA WITH MIDDLE THREE DOTS DOWNWARD
-0x8E	U+0698	#ARABIC RA WITH THREE DOTS ABOVE
-#0x8F		#UNDEFINED
-0x90	U+06AF	#ARABIC GAF
-0x91	U+2018	#SINGLE TURNED COMMA QUOTATION MARK
-0x92	U+2019	#SINGLE COMMA QUOTATION MARK
-0x93	U+201C	#DOUBLE TURNED COMMA QUOTATION MARK
-0x94	U+201D	#DOUBLE COMMA QUOTATION MARK
+#0x8A	      	#UNDEFINED
+0x8B	U+2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0x8C	U+0152	#LATIN CAPITAL LIGATURE OE
+0x8D	U+0686	#ARABIC LETTER TCHEH
+0x8E	U+0698	#ARABIC LETTER JEH
+#0x8F	      	#UNDEFINED
+0x90	U+06AF	#ARABIC LETTER GAF
+0x91	U+2018	#LEFT SINGLE QUOTATION MARK
+0x92	U+2019	#RIGHT SINGLE QUOTATION MARK
+0x93	U+201C	#LEFT DOUBLE QUOTATION MARK
+0x94	U+201D	#RIGHT DOUBLE QUOTATION MARK
 0x95	U+2022	#BULLET
 0x96	U+2013	#EN DASH
 0x97	U+2014	#EM DASH
-#0x98		#UNDEFINED
-0x99	U+2122	#TRADEMARK
-#0x9A		#UNDEFINED
-0x9B	U+203A	#RIGHT POINTING SINGLE GUILLEMET
-0x9C	U+0153	#LATIN SMALL LETTER O E
+#0x98	      	#UNDEFINED
+0x99	U+2122	#TRADE MARK SIGN
+#0x9A	      	#UNDEFINED
+0x9B	U+203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0x9C	U+0153	#LATIN SMALL LIGATURE OE
 0x9D	U+200C	#ZERO WIDTH NON-JOINER
 0x9E	U+200D	#ZERO WIDTH JOINER
-#0x9F		#UNDEFINED
-0xA0	U+00A0	#NON-BREAKING SPACE
+#0x9F	      	#UNDEFINED
+0xA0	U+00A0	#NO-BREAK SPACE
 0xA1	U+060C	#ARABIC COMMA
 0xA2	U+00A2	#CENT SIGN
 0xA3	U+00A3	#POUND SIGN
 0xA4	U+00A4	#CURRENCY SIGN
 0xA5	U+00A5	#YEN SIGN
-0xA6	U+00A6	#BROKEN VERTICAL BAR
+0xA6	U+00A6	#BROKEN BAR
 0xA7	U+00A7	#SECTION SIGN
-0xA8	U+00A8	#SPACING DIAERESIS
+0xA8	U+00A8	#DIAERESIS
 0xA9	U+00A9	#COPYRIGHT SIGN
-#0xAA		#UNDEFINED
-0xAB	U+00AB	#LEFT POINTING GUILLEMET
+#0xAA	      	#UNDEFINED
+0xAB	U+00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
 0xAC	U+00AC	#NOT SIGN
 0xAD	U+00AD	#SOFT HYPHEN
-0xAE	U+00AE	#REGISTERED TRADE MARK SIGN
-0xAF	U+00AF	#SPACING MACRON
+0xAE	U+00AE	#REGISTERED SIGN
+0xAF	U+00AF	#MACRON
 0xB0	U+00B0	#DEGREE SIGN
-0xB1	U+00B1	#PLUS-OR-MINUS SIGN
-0xB2	U+00B2	#SUPERSCRIPT DIGIT TWO
-0xB3	U+00B3	#SUPERSCRIPT DIGIT THREE
-0xB4	U+00B4	#SPACING ACUTE
+0xB1	U+00B1	#PLUS-MINUS SIGN
+0xB2	U+00B2	#SUPERSCRIPT TWO
+0xB3	U+00B3	#SUPERSCRIPT THREE
+0xB4	U+00B4	#ACUTE ACCENT
 0xB5	U+00B5	#MICRO SIGN
-0xB6	U+00B6	#PARAGRAPH SIGN
+0xB6	U+00B6	#PILCROW SIGN
 0xB7	U+00B7	#MIDDLE DOT
-0xB8	U+00B8	#SPACING CEDILLA
-0xB9	U+00B9	#SUPERSCRIPT DIGIT ONE
+0xB8	U+00B8	#CEDILLA
+0xB9	U+00B9	#SUPERSCRIPT ONE
 0xBA	U+061B	#ARABIC SEMICOLON
-0xBB	U+00BB	#RIGHT POINTING GUILLEMET
-0xBC	U+00BC	#FRACTION ONE QUARTER
-0xBD	U+00BD	#FRACTION ONE HALF
-0xBE	U+00BE	#FRACTION THREE QUARTERS
+0xBB	U+00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC	U+00BC	#VULGAR FRACTION ONE QUARTER
+0xBD	U+00BD	#VULGAR FRACTION ONE HALF
+0xBE	U+00BE	#VULGAR FRACTION THREE QUARTERS
 0xBF	U+061F	#ARABIC QUESTION MARK
-#0xC0		#UNDEFINED
-0xC1	U+0621	#ARABIC LETTER HAMZAH
-0xC2	U+0622	#ARABIC LETTER MADDAH ON ALEF
-0xC3	U+0623	#ARABIC LETTER HAMZAH ON ALEF
-0xC4	U+0624	#ARABIC LETTER HAMZAH ON WAW
-0xC5	U+0625	#ARABIC LETTER HAMZAH UNDER ALEF
-0xC6	U+0626	#ARABIC LETTER HAMZAH ON YA
+#0xC0	      	#UNDEFINED
+0xC1	U+0621	#ARABIC LETTER HAMZA
+0xC2	U+0622	#ARABIC LETTER ALEF WITH MADDA ABOVE
+0xC3	U+0623	#ARABIC LETTER ALEF WITH HAMZA ABOVE
+0xC4	U+0624	#ARABIC LETTER WAW WITH HAMZA ABOVE
+0xC5	U+0625	#ARABIC LETTER ALEF WITH HAMZA BELOW
+0xC6	U+0626	#ARABIC LETTER YEH WITH HAMZA ABOVE
 0xC7	U+0627	#ARABIC LETTER ALEF
-0xC8	U+0628	#ARABIC LETTER BAA
-0xC9	U+0629	#ARABIC LETTER TAA MARBUTAH
-0xCA	U+062A	#ARABIC LETTER TAA
-0xCB	U+062B	#ARABIC LETTER THAA
+0xC8	U+0628	#ARABIC LETTER BEH
+0xC9	U+0629	#ARABIC LETTER TEH MARBUTA
+0xCA	U+062A	#ARABIC LETTER TEH
+0xCB	U+062B	#ARABIC LETTER THEH
 0xCC	U+062C	#ARABIC LETTER JEEM
-0xCD	U+062D	#ARABIC LETTER HAA
-0xCE	U+062E	#ARABIC LETTER KHAA
+0xCD	U+062D	#ARABIC LETTER HAH
+0xCE	U+062E	#ARABIC LETTER KHAH
 0xCF	U+062F	#ARABIC LETTER DAL
 0xD0	U+0630	#ARABIC LETTER THAL
-0xD1	U+0631	#ARABIC LETTER RA
+0xD1	U+0631	#ARABIC LETTER REH
 0xD2	U+0632	#ARABIC LETTER ZAIN
 0xD3	U+0633	#ARABIC LETTER SEEN
 0xD4	U+0634	#ARABIC LETTER SHEEN
@@ -113,42 +115,42 @@ OWinArabic (cp1256)
 0xD6	U+0636	#ARABIC LETTER DAD
 0xD7	U+00D7	#MULTIPLICATION SIGN
 0xD8	U+0637	#ARABIC LETTER TAH
-0xD9	U+0638	#ARABIC LETTER DHAH
+0xD9	U+0638	#ARABIC LETTER ZAH
 0xDA	U+0639	#ARABIC LETTER AIN
 0xDB	U+063A	#ARABIC LETTER GHAIN
 0xDC	U+0640	#ARABIC TATWEEL
-0xDD	U+0641	#ARABIC LETTER FA
+0xDD	U+0641	#ARABIC LETTER FEH
 0xDE	U+0642	#ARABIC LETTER QAF
-0xDF	U+0643	#ARABIC LETTER CAF
-0xE0	U+00E0	#LATIN SMALL LETTER A GRAVE
+0xDF	U+0643	#ARABIC LETTER KAF
+0xE0	U+00E0	#LATIN SMALL LETTER A WITH GRAVE
 0xE1	U+0644	#ARABIC LETTER LAM
-0xE2	U+00E2	#LATIN SMALL LETTER A CIRCUMFLEX
+0xE2	U+00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
 0xE3	U+0645	#ARABIC LETTER MEEM
 0xE4	U+0646	#ARABIC LETTER NOON
-0xE5	U+0647	#ARABIC LETTER HA
+0xE5	U+0647	#ARABIC LETTER HEH
 0xE6	U+0648	#ARABIC LETTER WAW
-0xE7	U+00E7	#LATIN SMALL LETTER C CEDILLA
-0xE8	U+00E8	#LATIN SMALL LETTER E GRAVE
-0xE9	U+00E9	#LATIN SMALL LETTER E ACUTE
-0xEA	U+00EA	#LATIN SMALL LETTER E CIRCUMFLEX
-0xEB	U+00EB	#LATIN SMALL LETTER E DIAERESIS
-0xEC	U+0649	#ARABIC LETTER ALEF MAQSURAH
-0xED	U+064A	#ARABIC LETTER YA
-0xEE	U+00EE	#LATIN SMALL LETTER I CIRCUMFLEX
-0xEF	U+00EF	#LATIN SMALL LETTER I DIAERESIS
+0xE7	U+00E7	#LATIN SMALL LETTER C WITH CEDILLA
+0xE8	U+00E8	#LATIN SMALL LETTER E WITH GRAVE
+0xE9	U+00E9	#LATIN SMALL LETTER E WITH ACUTE
+0xEA	U+00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
+0xEB	U+00EB	#LATIN SMALL LETTER E WITH DIAERESIS
+0xEC	U+0649	#ARABIC LETTER ALEF MAKSURA
+0xED	U+064A	#ARABIC LETTER YEH
+0xEE	U+00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF	U+00EF	#LATIN SMALL LETTER I WITH DIAERESIS
 0xF0	U+064B	#ARABIC FATHATAN
 0xF1	U+064C	#ARABIC DAMMATAN
 0xF2	U+064D	#ARABIC KASRATAN
-0xF3	U+064E	#ARABIC FATHAH
-0xF4	U+00F4	#LATIN SMALL LETTER O CIRCUMFLEX
-0xF5	U+064F	#ARABIC DAMMAH
-0xF6	U+0650	#ARABIC KASRAH
+0xF3	U+064E	#ARABIC FATHA
+0xF4	U+00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5	U+064F	#ARABIC DAMMA
+0xF6	U+0650	#ARABIC KASRA
 0xF7	U+00F7	#DIVISION SIGN
-0xF8	U+0651	#ARABIC SHADDAH
-0xF9	U+00F9	#LATIN SMALL LETTER U GRAVE
+0xF8	U+0651	#ARABIC SHADDA
+0xF9	U+00F9	#LATIN SMALL LETTER U WITH GRAVE
 0xFA	U+0652	#ARABIC SUKUN
-0xFB	U+00FB	#LATIN SMALL LETTER U CIRCUMFLEX
-0xFC	U+00FC	#LATIN SMALL LETTER U DIAERESIS
+0xFB	U+00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
+0xFC	U+00FC	#LATIN SMALL LETTER U WITH DIAERESIS
 0xFD	U+200E	#LEFT-TO-RIGHT MARK
 0xFE	U+200F	#RIGHT-TO-LEFT MARK
-#0xFF		#UNDEFINED
+#0xFF	      	#UNDEFINED
diff --git a/src/chrtrans/cp1257_uni.tbl b/src/chrtrans/cp1257_uni.tbl
index 794df717..8e830cd5 100644
--- a/src/chrtrans/cp1257_uni.tbl
+++ b/src/chrtrans/cp1257_uni.tbl
@@ -4,167 +4,45 @@ Mwindows-1257
 #Name as a Display Charset (used on Options screen)
 OWinBaltRim (cp1257)
 
-#    Name:     cp1257_WinBaltic to Unicode table
+#
+#    Name:     cp1257 to Unicode table
 #    Unicode version: 2.0
 #    Table version: 2.00
 #    Table format:  Format A
-#    Date:          04/24/96
-#    Authors:       Lori Brownell <loribr@microsoft.com>
-#                   K.D. Chang    <a-kchang@microsoft.com>
+#    Date:          04/15/98
+#
+#    Contact:       cpxlate@microsoft.com
+#
 #    General notes: none
 #
 #    Format: Three tab-separated columns
-#        Column #1 is the cp1257_WinBaltic code (in hex)
+#        Column #1 is the cp1257 code (in hex)
 #        Column #2 is the Unicode (in hex as 0xXXXX)
 #        Column #3 is the Unicode name (follows a comment sign, '#')
 #
-#    The entries are in cp1257_WinBaltic order
+#    The entries are in cp1257 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 0
-0x31	U+0031	#DIGIT 1
-0x32	U+0032	#DIGIT 2
-0x33	U+0033	#DIGIT 3
-0x34	U+0034	#DIGIT 4
-0x35	U+0035	#DIGIT 5
-0x36	U+0036	#DIGIT 6
-0x37	U+0037	#DIGIT 7
-0x38	U+0038	#DIGIT 8
-0x39	U+0039	#DIGIT 9
-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 A
-0x42	U+0042	#LATIN CAPITAL B
-0x43	U+0043	#LATIN CAPITAL C
-0x44	U+0044	#LATIN CAPITAL D
-0x45	U+0045	#LATIN CAPITAL E
-0x46	U+0046	#LATIN CAPITAL F
-0x47	U+0047	#LATIN CAPITAL G
-0x48	U+0048	#LATIN CAPITAL H
-0x49	U+0049	#LATIN CAPITAL I
-0x4A	U+004A	#LATIN CAPITAL J
-0x4B	U+004B	#LATIN CAPITAL K
-0x4C	U+004C	#LATIN CAPITAL L
-0x4D	U+004D	#LATIN CAPITAL M
-0x4E	U+004E	#LATIN CAPITAL N
-0x4F	U+004F	#LATIN CAPITAL O
-0x50	U+0050	#LATIN CAPITAL P
-0x51	U+0051	#LATIN CAPITAL Q
-0x52	U+0052	#LATIN CAPITAL R
-0x53	U+0053	#LATIN CAPITAL S
-0x54	U+0054	#LATIN CAPITAL T
-0x55	U+0055	#LATIN CAPITAL U
-0x56	U+0056	#LATIN CAPITAL V
-0x57	U+0057	#LATIN CAPITAL W
-0x58	U+0058	#LATIN CAPITAL X
-0x59	U+0059	#LATIN CAPITAL Y
-0x5A	U+005A	#LATIN CAPITAL Z
-0x5B	U+005B	#LEFT SQUARE BRACKET
-0x5C	U+005C	#BACKSLASH
-0x5D	U+005D	#RIGHT SQUARE BRACKET
-0x5E	U+005E	#CIRCUMFLEX
-0x5F	U+005F	#LOW LINE
-0x60	U+0060	#GRAVE
-0x61	U+0061	#LATIN SMALL A
-0x62	U+0062	#LATIN SMALL B
-0x63	U+0063	#LATIN SMALL C
-0x64	U+0064	#LATIN SMALL D
-0x65	U+0065	#LATIN SMALL E
-0x66	U+0066	#LATIN SMALL F
-0x67	U+0067	#LATIN SMALL G
-0x68	U+0068	#LATIN SMALL H
-0x69	U+0069	#LATIN SMALL I
-0x6A	U+006A	#LATIN SMALL J
-0x6B	U+006B	#LATIN SMALL K
-0x6C	U+006C	#LATIN SMALL L
-0x6D	U+006D	#LATIN SMALL M
-0x6E	U+006E	#LATIN SMALL N
-0x6F	U+006F	#LATIN SMALL O
-0x70	U+0070	#LATIN SMALL P
-0x71	U+0071	#LATIN SMALL Q
-0x72	U+0072	#LATIN SMALL R
-0x73	U+0073	#LATIN SMALL S
-0x74	U+0074	#LATIN SMALL T
-0x75	U+0075	#LATIN SMALL U
-0x76	U+0076	#LATIN SMALL V
-0x77	U+0077	#LATIN SMALL W
-0x78	U+0078	#LATIN SMALL X
-0x79	U+0079	#LATIN SMALL Y
-0x7A	U+007A	#LATIN SMALL 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		#UNDEFINED
-#0x81		#UNDEFINED
-0x82	U+201A	#LOW SINGLE COMMA QUOTATION MARK
-#0x83		#UNDEFINED
-0x84	U+201E	#LOW DOUBLE COMMA QUOTATION MARK
+##################
+
+0x20-0x7e       idem
+#
+0x80	U+20AC	#EURO SIGN
+#0x81	      	#UNDEFINED
+0x82	U+201A	#SINGLE LOW-9 QUOTATION MARK
+#0x83	      	#UNDEFINED
+0x84	U+201E	#DOUBLE LOW-9 QUOTATION MARK
 0x85	U+2026	#HORIZONTAL ELLIPSIS
 0x86	U+2020	#DAGGER
 0x87	U+2021	#DOUBLE DAGGER
-#0x88		#UNDEFINED
+#0x88	      	#UNDEFINED
 0x89	U+2030	#PER MILLE SIGN
-#0x8A		#UNDEFINED
-0x8B	U+2039	#LEFT POINTING SINGLE GUILLEMENT
-#0x8C		#UNDEFINED
+#0x8A	      	#UNDEFINED
+0x8B	U+2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+#0x8C	      	#UNDEFINED
 0x8D	U+00A8	#DIAERESIS
-0x8E	U+02C7	#HACEK
+0x8E	U+02C7	#CARON
 0x8F	U+00B8	#CEDILLA
-#0x90		#UNDEFINED
+#0x90	      	#UNDEFINED
 0x91	U+2018	#LEFT SINGLE QUOTATION MARK
 0x92	U+2019	#RIGHT SINGLE QUOTATION MARK
 0x93	U+201C	#LEFT DOUBLE QUOTATION MARK
@@ -172,107 +50,108 @@ OWinBaltRim (cp1257)
 0x95	U+2022	#BULLET
 0x96	U+2013	#EN DASH
 0x97	U+2014	#EM DASH
-#0x98		#UNDEFINED
+#0x98	      	#UNDEFINED
 0x99	U+2122	#TRADE MARK SIGN
-#0x9A		#UNDEFINED
-0x9B	U+203A	#RIGHT POINTING SINGLE GUILLEMENT
-#0x9C		#UNDEFINED
+#0x9A	      	#UNDEFINED
+0x9B	U+203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+#0x9C	      	#UNDEFINED
 0x9D	U+00AF	#MACRON
 0x9E	U+02DB	#OGONEK
-#0x9F		#UNDEFINED
+#0x9F	      	#UNDEFINED
 0xA0	U+00A0	#NO-BREAK SPACE
-#0xA1		#UNDEFINED
+#0xA1	      	#UNDEFINED
 0xA2	U+00A2	#CENT SIGN
 0xA3	U+00A3	#POUND SIGN
 0xA4	U+00A4	#CURRENCY SIGN
-#0xA5		#UNDEFINED
+#0xA5	      	#UNDEFINED
 0xA6	U+00A6	#BROKEN BAR
 0xA7	U+00A7	#SECTION SIGN
-0xA8	U+00D8	#LATIN CAPITAL O STROKE
+0xA8	U+00D8	#LATIN CAPITAL LETTER O WITH STROKE
 0xA9	U+00A9	#COPYRIGHT SIGN
-0xAA	U+0156	#LATIN CAPITAL R CEDILLA
-0xAB	U+00AB	#LEFT POINTING GUILLEMENT
+0xAA	U+0156	#LATIN CAPITAL LETTER R WITH CEDILLA
+0xAB	U+00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
 0xAC	U+00AC	#NOT SIGN
 0xAD	U+00AD	#SOFT HYPHEN
 0xAE	U+00AE	#REGISTERED SIGN
-0xAF	U+00C6	#LATIN CAPITAL AE LIGATURE
+0xAF	U+00C6	#LATIN CAPITAL LETTER AE
 0xB0	U+00B0	#DEGREE SIGN
 0xB1	U+00B1	#PLUS-MINUS SIGN
-0xB2	U+00B2	#SUPERSCRIPT 2
-0xB3	U+00B3	#SUPERSCRIPT 3
-0xB4	U+00B4	#ACUTE
+0xB2	U+00B2	#SUPERSCRIPT TWO
+0xB3	U+00B3	#SUPERSCRIPT THREE
+0xB4	U+00B4	#ACUTE ACCENT
 0xB5	U+00B5	#MICRO SIGN
 0xB6	U+00B6	#PILCROW SIGN
 0xB7	U+00B7	#MIDDLE DOT
-0xB8	U+00F8	#LATIN SAMLL O STROKE
+0xB8	U+00F8	#LATIN SMALL LETTER O WITH STROKE
 0xB9	U+00B9	#SUPERSCRIPT ONE
-0xBA	U+0157	#LATIN SMALL R CEDILLA
-0xBB	U+00BB	#RIGHT POINTING GUILLEMENT
-0xBC	U+00BC	#FRACTION 1/4
-0xBD	U+00BD	#FRACTION 1/2
-0xBE	U+00BE	#FRACTION 3/4
-0xBF	U+00E6	#LATIN SMALL AE LIGATURE
-0xC0	U+0104	#LATIN CAPITAL A OGONEK
-0xC1	U+012E	#LATIN CAPITAL I OGONEK
-0xC2	U+0100	#LATIN CAPITAL A MACRON
-0xC3	U+0106	#LATIN CAPITAL C ACUTE
-0xC4	U+00C4	#LATIN CAPITAL A DIAERESIS
-0xC5	U+00C5	#LATIN CAPITAL A RING ABOVE
-0xC6	U+0118	#LATIN CAPITAL E OGONEK
-0xC7	U+0112	#LATIN CAPITAL E MACRON
-0xC8	U+010C	#LATIN CAPITAL C HACEK
-0xC9	U+00C9	#LATIN CAPITAL E ACUTE
-0xCA	U+0179	#LATIN CAPITAL Z ACUTE
-0xCB	U+0116	#LATIN CAPITAL E DOT ABOVE
-0xCC	U+0122	#LATIN CAPITAL G CEDILLA
-0xCD	U+0136	#LATIN CAPITAL K CEDILLA
-0xCE	U+012A	#LATIN CAPITAL I MACRON
-0xCF	U+013B	#LATIN CAPITAL L CEDILLA
-0xD0	U+0160	#LATIN CAPITAL S HACEK
-0xD1	U+0143	#LATIN CAPITAL N ACUTE
-0xD2	U+0145	#LATIN CAPITAL N CEDILLA
-0xD3	U+00D3	#LATIN CAPITAL O ACUTE
-0xD4	U+014C	#LATIN CAPITAL O MACRON
-0xD5	U+00D5	#LATIN CAPITAL O TILDE
-0xD6	U+00D6	#LATIN CAPITAL O DIAERESIS
+0xBA	U+0157	#LATIN SMALL LETTER R WITH CEDILLA
+0xBB	U+00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC	U+00BC	#VULGAR FRACTION ONE QUARTER
+0xBD	U+00BD	#VULGAR FRACTION ONE HALF
+0xBE	U+00BE	#VULGAR FRACTION THREE QUARTERS
+0xBF	U+00E6	#LATIN SMALL LETTER AE
+0xC0	U+0104	#LATIN CAPITAL LETTER A WITH OGONEK
+0xC1	U+012E	#LATIN CAPITAL LETTER I WITH OGONEK
+0xC2	U+0100	#LATIN CAPITAL LETTER A WITH MACRON
+0xC3	U+0106	#LATIN CAPITAL LETTER C WITH ACUTE
+0xC4	U+00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5	U+00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
+0xC6	U+0118	#LATIN CAPITAL LETTER E WITH OGONEK
+0xC7	U+0112	#LATIN CAPITAL LETTER E WITH MACRON
+0xC8	U+010C	#LATIN CAPITAL LETTER C WITH CARON
+0xC9	U+00C9	#LATIN CAPITAL LETTER E WITH ACUTE
+0xCA	U+0179	#LATIN CAPITAL LETTER Z WITH ACUTE
+0xCB	U+0116	#LATIN CAPITAL LETTER E WITH DOT ABOVE
+0xCC	U+0122	#LATIN CAPITAL LETTER G WITH CEDILLA
+0xCD	U+0136	#LATIN CAPITAL LETTER K WITH CEDILLA
+0xCE	U+012A	#LATIN CAPITAL LETTER I WITH MACRON
+0xCF	U+013B	#LATIN CAPITAL LETTER L WITH CEDILLA
+0xD0	U+0160	#LATIN CAPITAL LETTER S WITH CARON
+0xD1	U+0143	#LATIN CAPITAL LETTER N WITH ACUTE
+0xD2	U+0145	#LATIN CAPITAL LETTER N WITH CEDILLA
+0xD3	U+00D3	#LATIN CAPITAL LETTER O WITH ACUTE
+0xD4	U+014C	#LATIN CAPITAL LETTER O WITH MACRON
+0xD5	U+00D5	#LATIN CAPITAL LETTER O WITH TILDE
+0xD6	U+00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
 0xD7	U+00D7	#MULTIPLICATION SIGN
-0xD8	U+0172	#LATIN CAPITAL U OGONEK
-0xD9	U+0141	#LATIN CAPITAL L STROKE
-0xDA	U+015A	#LATIN CAPITAL S ACUTE
-0xDB	U+016A	#LATIN CAPITAL U MACRON
-0xDC	U+00DC	#LATIN CAPITAL U DIAERESIS
-0xDD	U+017B	#LATIN CAPITAL Z DOT ABOVE
-0xDE	U+017D	#LATIN CAPITAL Z HACEK
-0xDF	U+00DF	#LATIN SMALL SHARP SS
-0xE0	U+0105	#LATIN SMALL A OGONEK
-0xE1	U+012F	#LATIN SMALL I OGONEK
-0xE2	U+0101	#LATIN SMALL A MACRON
-0xE3	U+0107	#LATIN SMALL C ACUTE
-0xE4	U+00E4	#LATIN SMALL A DIAERESIS
-0xE5	U+00E5	#LATIN SMALL A RING ABOVE
-0xE6	U+0119	#LATIN SMALL E OGONEK
-0xE7	U+0113	#LATIN SMALL E MACRON
-0xE8	U+010D	#LATIN SMALL C HACEK
-0xE9	U+00E9	#LATIN SMALL E ACUTE
-0xEA	U+017A	#LATIN SMALL Z ACUTE
-0xEB	U+0117	#LATIN SMALL E DOT ABOVE
-0xEC	U+0123	#LATIN SMALL G CEDILLA
-0xED	U+0137	#LATIN SMALL K CEDILLA
-0xEE	U+012B	#LATIN SMALL I MACRON
-0xEF	U+013C	#LATIN SMALL L CEDILLA
-0xF0	U+0161	#LATIN SMALL S HACEK
-0xF1	U+0144	#LATIN SMALL N ACUTE
-0xF2	U+0146	#LATIN SMALL N CEDILLA
-0xF3	U+00F3	#LATIN SMALL O ACUTE
-0xF4	U+014D	#LATIN SMALL O MACRON
-0xF5	U+00F5	#LATIN SMALL O TILDE
-0xF6	U+00F6	#LATIN SMALL O DIAERESIS
+0xD8	U+0172	#LATIN CAPITAL LETTER U WITH OGONEK
+0xD9	U+0141	#LATIN CAPITAL LETTER L WITH STROKE
+0xDA	U+015A	#LATIN CAPITAL LETTER S WITH ACUTE
+0xDB	U+016A	#LATIN CAPITAL LETTER U WITH MACRON
+0xDC	U+00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD	U+017B	#LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0xDE	U+017D	#LATIN CAPITAL LETTER Z WITH CARON
+0xDF	U+00DF	#LATIN SMALL LETTER SHARP S
+0xE0	U+0105	#LATIN SMALL LETTER A WITH OGONEK
+0xE1	U+012F	#LATIN SMALL LETTER I WITH OGONEK
+0xE2	U+0101	#LATIN SMALL LETTER A WITH MACRON
+0xE3	U+0107	#LATIN SMALL LETTER C WITH ACUTE
+0xE4	U+00E4	#LATIN SMALL LETTER A WITH DIAERESIS
+0xE5	U+00E5	#LATIN SMALL LETTER A WITH RING ABOVE
+0xE6	U+0119	#LATIN SMALL LETTER E WITH OGONEK
+0xE7	U+0113	#LATIN SMALL LETTER E WITH MACRON
+0xE8	U+010D	#LATIN SMALL LETTER C WITH CARON
+0xE9	U+00E9	#LATIN SMALL LETTER E WITH ACUTE
+0xEA	U+017A	#LATIN SMALL LETTER Z WITH ACUTE
+0xEB	U+0117	#LATIN SMALL LETTER E WITH DOT ABOVE
+0xEC	U+0123	#LATIN SMALL LETTER G WITH CEDILLA
+0xED	U+0137	#LATIN SMALL LETTER K WITH CEDILLA
+0xEE	U+012B	#LATIN SMALL LETTER I WITH MACRON
+0xEF	U+013C	#LATIN SMALL LETTER L WITH CEDILLA
+0xF0	U+0161	#LATIN SMALL LETTER S WITH CARON
+0xF1	U+0144	#LATIN SMALL LETTER N WITH ACUTE
+0xF2	U+0146	#LATIN SMALL LETTER N WITH CEDILLA
+0xF3	U+00F3	#LATIN SMALL LETTER O WITH ACUTE
+0xF4	U+014D	#LATIN SMALL LETTER O WITH MACRON
+0xF5	U+00F5	#LATIN SMALL LETTER O WITH TILDE
+0xF6	U+00F6	#LATIN SMALL LETTER O WITH DIAERESIS
 0xF7	U+00F7	#DIVISION SIGN
-0xF8	U+0173	#LATIN SMALL U OGONEK
-0xF9	U+0142	#LATIN SMALL L STROKE
-0xFA	U+015B	#LATIN SMALL S ACUTE
-0xFB	U+016B	#LATIN SMALL U MACRON
-0xFC	U+00FC	#LATIN SMALL U DIAERESIS
-0xFD	U+017C	#LATIN SMALL Z DOT ABOVE
-0xFE	U+017E	#LATIN SMALL Z HACEK
+0xF8	U+0173	#LATIN SMALL LETTER U WITH OGONEK
+0xF9	U+0142	#LATIN SMALL LETTER L WITH STROKE
+0xFA	U+015B	#LATIN SMALL LETTER S WITH ACUTE
+0xFB	U+016B	#LATIN SMALL LETTER U WITH MACRON
+0xFC	U+00FC	#LATIN SMALL LETTER U WITH DIAERESIS
+0xFD	U+017C	#LATIN SMALL LETTER Z WITH DOT ABOVE
+0xFE	U+017E	#LATIN SMALL LETTER Z WITH CARON
 0xFF	U+02D9	#DOT ABOVE
+
diff --git a/src/chrtrans/def7_uni.tbl b/src/chrtrans/def7_uni.tbl
index cd62c186..bd6b1b1c 100644
--- a/src/chrtrans/def7_uni.tbl
+++ b/src/chrtrans/def7_uni.tbl
@@ -1350,13 +1350,13 @@ U+208c:_=
 U+208d:(
 U+208e:)
 # Old euro currency sign glyph:
-U+20A0:CE
+#U+20A0:CE
 U+20a3:Ff
 U+20a4:Li
 U+20a7:Pt
 U+20a9:W=
-# New euro currency sign glyph ?
-# U+20AC:EUR
+# New euro currency sign glyph:
+U+20AC:EUR
 U+2103:oC
 U+2105:c/o
 U+2109:oF
@@ -2015,10 +2015,17 @@ U+3229:10c
 U+327f:KSC
 U+33c2:am
 U+33d8:pm
-#  end of CJK area (up to U+e000). 
- 
-#  Characters in Private Use Area (e000-f8ff) do not have unassigned numbers. 
- 
+#
+#
+#There are four special ranges of characters that are represented only by
+#their start and end characters <...>
+#
+#   The CJK Ideographs Area (U+4E00 - U+9FFF)
+#   The Hangul Syllables Area (U+AC00 - U+D7A3)
+#   The Surrogates Area (U+D800 - U+DFFF)
+#   The Private Use Area (U+E000 - U+F8FF)
+#
+# 
 U+fb00:ff
 U+fb01:fi
 U+fb02:fl
@@ -2177,7 +2184,7 @@ U+001d:GS
 U+001e:RS
 U+001f:US
 U+007f:DT
-# Most of these characters (82-9F) may be inflicted on us
+# Most of these characters (80-9F) may be inflicted on us
 # by MS FrontPages which uses Unicode notation such as &#153;
 # but there are no assigned letters in Unicode 128-159 range.
 # It is assumed in the code that those codepoints are from windows-1252.
diff --git a/src/makefile.dos b/src/makefile.dos
index 9997308b..4c87b064 100644
--- a/src/makefile.dos
+++ b/src/makefile.dos
@@ -12,7 +12,7 @@ LYStyle.o LYHash.o
 CFLAGS= $(MCFLAGS) -I. -I.. $(SLANGINC)

 

 CC = gcc

-MCFLAGS = -O3 -DDISP_PARTIAL -DUSE_ZLIB -DUSE_EXTERNALS -DCOLOR_CURSES -DNCURSES -DFANCY_CURSES -DACCESS_AUTH -DNO_CUSERID -DNOUSERS -DDOSPATH -DNO_TTYTYPE -DNO_UTMP -Ichrtrans -I../WWW/library/implementation -I../curses  -I../djgpp/tcplib/include -I../djgpp/tcplib/include/tcp

+MCFLAGS = -O3 -DHAVE_GETBKGD -DDISP_PARTIAL -DUSE_ZLIB -DUSE_EXTERNALS -DCOLOR_CURSES -DNCURSES -DFANCY_CURSES -DACCESS_AUTH -DNO_CUSERID -DNOUSERS -DDOSPATH -DNO_TTYTYPE -DNO_UTMP -Ichrtrans -I../WWW/library/implementation -I../curses  -I../djgpp/tcplib/include -I../djgpp/tcplib/include/tcp

 WWWLIB = ../WWW/library/djgpp/libwww.a ../curses/pdcurses.a ../djgpp/tcplib/obj/libtcp.a

 LIBS=-lz

 

diff --git a/src/makefile.in b/src/makefile.in
index 18016728..b7289f3c 100644
--- a/src/makefile.in
+++ b/src/makefile.in
@@ -18,14 +18,13 @@ CFLAGS		= @CFLAGS@
 DEFS		= @DEFS@
 CPPFLAGS	= @CPPFLAGS@
 
-LIBS		= @LIBS@ $(RESOLVLIB) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)
+LIBS		= @LIBS@ $(RESOLVLIB) $(WAISLIB) $(SITE_LIBS)
 LDFLAGS		= @LDFLAGS@
 
 # Symbols inherited from the top-level makefile
 RESOLVLIB	= # FIXME: set in parent makefile
 SITE_DEFS	= # FIXME: set in parent makefile
 SITE_LIBS	= # FIXME: set in parent makefile
-SOCKSLIB	= # FIXME: set in parent makefile
 WAISLIB		= # FIXME: set in parent makefile
 
 WWWINC		= WWW/Library/Implementation