[前][次][番号順一覧][スレッド一覧]

ruby-changes:2760

From: ko1@a...
Date: 17 Dec 2007 10:34:27 +0900
Subject: [ruby-changes:2760] matz - Ruby:r14251 (trunk): for undefined conversions.

matz	2007-12-17 10:28:26 +0900 (Mon, 17 Dec 2007)

  New Revision: 14251

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_transcode.rb
    trunk/transcode.c
    trunk/transcode_data_iso_8859.c
    trunk/version.h

  Log:
    for undefined conversions.
    
    * transcode_data_iso_8859.c: Changed from character constants
      ('\xC2') to integer contants (0xC2) for shorter files and
      better readability; eliminated duplicated tables; changed
      from -1 offset to actual UNDEF entry (not yet distinguishing
      UNDEF and ILLEGAL correctly).
    
    * test/ruby/test_transcode.rb: added a test for UNDEF conversion.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=14251&r2=14250
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_transcode.rb?r1=14251&r2=14250
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14251&r2=14250
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/transcode.c?r1=14251&r2=14250
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/transcode_data_iso_8859.c?r1=14251&r2=14250

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14250)
+++ ChangeLog	(revision 14251)
@@ -1,3 +1,16 @@
+Sun Dec 16 17:07:35 2007  Martin Duerst  <duerst@i...>
+
+        * transcode.c (transcode_loop): removed special case (-1)
+	  for undefined conversions.
+
+	* transcode_data_iso_8859.c: Changed from character constants
+	  ('\xC2') to integer contants (0xC2) for shorter files and
+	  better readability; eliminated duplicated tables; changed
+	  from -1 offset to actual UNDEF entry (not yet distinguishing
+	  UNDEF and ILLEGAL correctly).
+
+	* test/ruby/test_transcode.rb: added a test for UNDEF conversion.
+
 Sun Dec 16 14:51:59 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* configure.in (MAKEFILES): should be enc/Makefile, not GNUmakefile.
Index: transcode_data_iso_8859.c
===================================================================
--- transcode_data_iso_8859.c	(revision 14250)
+++ transcode_data_iso_8859.c	(revision 14251)
@@ -3,6 +3,8 @@
 
 static const unsigned char
 from_ISO_8859_1_offsets[256] = {
+  /* used from from_ISO_8859_1 */
+  /* used from from_ISO_8859_9 */
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
@@ -22,71 +24,39 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_1_infos[129] = {
-                      NOMAP, o2('\xC2','\x80'),
-     o2('\xC2','\x81'), o2('\xC2','\x82'),
-     o2('\xC2','\x83'), o2('\xC2','\x84'),
-     o2('\xC2','\x85'), o2('\xC2','\x86'),
-     o2('\xC2','\x87'), o2('\xC2','\x88'),
-     o2('\xC2','\x89'), o2('\xC2','\x8A'),
-     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
-     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
-     o2('\xC2','\x8F'), o2('\xC2','\x90'),
-     o2('\xC2','\x91'), o2('\xC2','\x92'),
-     o2('\xC2','\x93'), o2('\xC2','\x94'),
-     o2('\xC2','\x95'), o2('\xC2','\x96'),
-     o2('\xC2','\x97'), o2('\xC2','\x98'),
-     o2('\xC2','\x99'), o2('\xC2','\x9A'),
-     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
-     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
-     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
-     o2('\xC2','\xA1'), o2('\xC2','\xA2'),
-     o2('\xC2','\xA3'), o2('\xC2','\xA4'),
-     o2('\xC2','\xA5'), o2('\xC2','\xA6'),
-     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
-     o2('\xC2','\xA9'), o2('\xC2','\xAA'),
-     o2('\xC2','\xAB'), o2('\xC2','\xAC'),
-     o2('\xC2','\xAD'), o2('\xC2','\xAE'),
-     o2('\xC2','\xAF'), o2('\xC2','\xB0'),
-     o2('\xC2','\xB1'), o2('\xC2','\xB2'),
-     o2('\xC2','\xB3'), o2('\xC2','\xB4'),
-     o2('\xC2','\xB5'), o2('\xC2','\xB6'),
-     o2('\xC2','\xB7'), o2('\xC2','\xB8'),
-     o2('\xC2','\xB9'), o2('\xC2','\xBA'),
-     o2('\xC2','\xBB'), o2('\xC2','\xBC'),
-     o2('\xC2','\xBD'), o2('\xC2','\xBE'),
-     o2('\xC2','\xBF'), o2('\xC3','\x80'),
-     o2('\xC3','\x81'), o2('\xC3','\x82'),
-     o2('\xC3','\x83'), o2('\xC3','\x84'),
-     o2('\xC3','\x85'), o2('\xC3','\x86'),
-     o2('\xC3','\x87'), o2('\xC3','\x88'),
-     o2('\xC3','\x89'), o2('\xC3','\x8A'),
-     o2('\xC3','\x8B'), o2('\xC3','\x8C'),
-     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
-     o2('\xC3','\x8F'), o2('\xC3','\x90'),
-     o2('\xC3','\x91'), o2('\xC3','\x92'),
-     o2('\xC3','\x93'), o2('\xC3','\x94'),
-     o2('\xC3','\x95'), o2('\xC3','\x96'),
-     o2('\xC3','\x97'), o2('\xC3','\x98'),
-     o2('\xC3','\x99'), o2('\xC3','\x9A'),
-     o2('\xC3','\x9B'), o2('\xC3','\x9C'),
-     o2('\xC3','\x9D'), o2('\xC3','\x9E'),
-     o2('\xC3','\x9F'), o2('\xC3','\xA0'),
-     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
-     o2('\xC3','\xA3'), o2('\xC3','\xA4'),
-     o2('\xC3','\xA5'), o2('\xC3','\xA6'),
-     o2('\xC3','\xA7'), o2('\xC3','\xA8'),
-     o2('\xC3','\xA9'), o2('\xC3','\xAA'),
-     o2('\xC3','\xAB'), o2('\xC3','\xAC'),
-     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
-     o2('\xC3','\xAF'), o2('\xC3','\xB0'),
-     o2('\xC3','\xB1'), o2('\xC3','\xB2'),
-     o2('\xC3','\xB3'), o2('\xC3','\xB4'),
-     o2('\xC3','\xB5'), o2('\xC3','\xB6'),
-     o2('\xC3','\xB7'), o2('\xC3','\xB8'),
-     o2('\xC3','\xB9'), o2('\xC3','\xBA'),
-     o2('\xC3','\xBB'), o2('\xC3','\xBC'),
-     o2('\xC3','\xBD'), o2('\xC3','\xBE'),
-     o2('\xC3','\xBF'),
+             NOMAP, o2(0xC2,0x80), o2(0xC2,0x81), o2(0xC2,0x82),
+     o2(0xC2,0x83), o2(0xC2,0x84), o2(0xC2,0x85), o2(0xC2,0x86),
+     o2(0xC2,0x87), o2(0xC2,0x88), o2(0xC2,0x89), o2(0xC2,0x8A),
+     o2(0xC2,0x8B), o2(0xC2,0x8C), o2(0xC2,0x8D), o2(0xC2,0x8E),
+     o2(0xC2,0x8F), o2(0xC2,0x90), o2(0xC2,0x91), o2(0xC2,0x92),
+     o2(0xC2,0x93), o2(0xC2,0x94), o2(0xC2,0x95), o2(0xC2,0x96),
+     o2(0xC2,0x97), o2(0xC2,0x98), o2(0xC2,0x99), o2(0xC2,0x9A),
+     o2(0xC2,0x9B), o2(0xC2,0x9C), o2(0xC2,0x9D), o2(0xC2,0x9E),
+     o2(0xC2,0x9F), o2(0xC2,0xA0), o2(0xC2,0xA1), o2(0xC2,0xA2),
+     o2(0xC2,0xA3), o2(0xC2,0xA4), o2(0xC2,0xA5), o2(0xC2,0xA6),
+     o2(0xC2,0xA7), o2(0xC2,0xA8), o2(0xC2,0xA9), o2(0xC2,0xAA),
+     o2(0xC2,0xAB), o2(0xC2,0xAC), o2(0xC2,0xAD), o2(0xC2,0xAE),
+     o2(0xC2,0xAF), o2(0xC2,0xB0), o2(0xC2,0xB1), o2(0xC2,0xB2),
+     o2(0xC2,0xB3), o2(0xC2,0xB4), o2(0xC2,0xB5), o2(0xC2,0xB6),
+     o2(0xC2,0xB7), o2(0xC2,0xB8), o2(0xC2,0xB9), o2(0xC2,0xBA),
+     o2(0xC2,0xBB), o2(0xC2,0xBC), o2(0xC2,0xBD), o2(0xC2,0xBE),
+     o2(0xC2,0xBF), o2(0xC3,0x80), o2(0xC3,0x81), o2(0xC3,0x82),
+     o2(0xC3,0x83), o2(0xC3,0x84), o2(0xC3,0x85), o2(0xC3,0x86),
+     o2(0xC3,0x87), o2(0xC3,0x88), o2(0xC3,0x89), o2(0xC3,0x8A),
+     o2(0xC3,0x8B), o2(0xC3,0x8C), o2(0xC3,0x8D), o2(0xC3,0x8E),
+     o2(0xC3,0x8F), o2(0xC3,0x90), o2(0xC3,0x91), o2(0xC3,0x92),
+     o2(0xC3,0x93), o2(0xC3,0x94), o2(0xC3,0x95), o2(0xC3,0x96),
+     o2(0xC3,0x97), o2(0xC3,0x98), o2(0xC3,0x99), o2(0xC3,0x9A),
+     o2(0xC3,0x9B), o2(0xC3,0x9C), o2(0xC3,0x9D), o2(0xC3,0x9E),
+     o2(0xC3,0x9F), o2(0xC3,0xA0), o2(0xC3,0xA1), o2(0xC3,0xA2),
+     o2(0xC3,0xA3), o2(0xC3,0xA4), o2(0xC3,0xA5), o2(0xC3,0xA6),
+     o2(0xC3,0xA7), o2(0xC3,0xA8), o2(0xC3,0xA9), o2(0xC3,0xAA),
+     o2(0xC3,0xAB), o2(0xC3,0xAC), o2(0xC3,0xAD), o2(0xC3,0xAE),
+     o2(0xC3,0xAF), o2(0xC3,0xB0), o2(0xC3,0xB1), o2(0xC3,0xB2),
+     o2(0xC3,0xB3), o2(0xC3,0xB4), o2(0xC3,0xB5), o2(0xC3,0xB6),
+     o2(0xC3,0xB7), o2(0xC3,0xB8), o2(0xC3,0xB9), o2(0xC3,0xBA),
+     o2(0xC3,0xBB), o2(0xC3,0xBC), o2(0xC3,0xBD), o2(0xC3,0xBE),
+     o2(0xC3,0xBF),
 };
 const BYTE_LOOKUP
 from_ISO_8859_1 = {
@@ -96,6 +66,8 @@
 
 static const unsigned char
 to_ISO_8859_1_C2_offsets[64] = {
+  /* used from to_ISO_8859_1_C2 */
+  /* used from to_ISO_8859_1_C3 */
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
      32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
@@ -103,22 +75,24 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_1_C2_infos[64] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA1'), o1('\xA2'), o1('\xA3'),
-     o1('\xA4'), o1('\xA5'), o1('\xA6'), o1('\xA7'),
-     o1('\xA8'), o1('\xA9'), o1('\xAA'), o1('\xAB'),
-     o1('\xAC'), o1('\xAD'), o1('\xAE'), o1('\xAF'),
-     o1('\xB0'), o1('\xB1'), o1('\xB2'), o1('\xB3'),
-     o1('\xB4'), o1('\xB5'), o1('\xB6'), o1('\xB7'),
-     o1('\xB8'), o1('\xB9'), o1('\xBA'), o1('\xBB'),
-     o1('\xBC'), o1('\xBD'), o1('\xBE'), o1('\xBF'),
+  /* used from to_ISO_8859_1_C2 */
+  /* used from to_ISO_8859_9_C2 */
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA1), o1(0xA2), o1(0xA3),
+     o1(0xA4), o1(0xA5), o1(0xA6), o1(0xA7),
+     o1(0xA8), o1(0xA9), o1(0xAA), o1(0xAB),
+     o1(0xAC), o1(0xAD), o1(0xAE), o1(0xAF),
+     o1(0xB0), o1(0xB1), o1(0xB2), o1(0xB3),
+     o1(0xB4), o1(0xB5), o1(0xB6), o1(0xB7),
+     o1(0xB8), o1(0xB9), o1(0xBA), o1(0xBB),
+     o1(0xBC), o1(0xBD), o1(0xBE), o1(0xBF),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_1_C2 = {
@@ -126,35 +100,30 @@
     to_ISO_8859_1_C2_infos
 };
 
-static const unsigned char
-to_ISO_8859_1_C3_offsets[64] = {
-      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
-     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
-};
 static const struct byte_lookup* const
 to_ISO_8859_1_C3_infos[64] = {
-     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
-     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
-     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
-     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
-     o1('\xD0'), o1('\xD1'), o1('\xD2'), o1('\xD3'),
-     o1('\xD4'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
-     o1('\xD8'), o1('\xD9'), o1('\xDA'), o1('\xDB'),
-     o1('\xDC'), o1('\xDD'), o1('\xDE'), o1('\xDF'),
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
-     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
-     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
-     o1('\xFC'), o1('\xFD'), o1('\xFE'), o1('\xFF'),
+  /* used from to_ISO_8859_1_C3 */
+  /* used from to_ISO_8859_15_C3 */
+     o1(0xC0), o1(0xC1), o1(0xC2), o1(0xC3),
+     o1(0xC4), o1(0xC5), o1(0xC6), o1(0xC7),
+     o1(0xC8), o1(0xC9), o1(0xCA), o1(0xCB),
+     o1(0xCC), o1(0xCD), o1(0xCE), o1(0xCF),
+     o1(0xD0), o1(0xD1), o1(0xD2), o1(0xD3),
+     o1(0xD4), o1(0xD5), o1(0xD6), o1(0xD7),
+     o1(0xD8), o1(0xD9), o1(0xDA), o1(0xDB),
+     o1(0xDC), o1(0xDD), o1(0xDE), o1(0xDF),
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE3),
+     o1(0xE4), o1(0xE5), o1(0xE6), o1(0xE7),
+     o1(0xE8), o1(0xE9), o1(0xEA), o1(0xEB),
+     o1(0xEC), o1(0xED), o1(0xEE), o1(0xEF),
+     o1(0xF0), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF7),
+     o1(0xF8), o1(0xF9), o1(0xFA), o1(0xFB),
+     o1(0xFC), o1(0xFD), o1(0xFE), o1(0xFF),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_1_C3 = {
-    to_ISO_8859_1_C3_offsets,
+    to_ISO_8859_1_C2_offsets,
     to_ISO_8859_1_C3_infos
 };
 
@@ -168,18 +137,19 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  1,  2,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
 };
 static const struct byte_lookup* const
-to_ISO_8859_1_infos[3] = {
-                 NOMAP, &to_ISO_8859_1_C2, &to_ISO_8859_1_C3,
+to_ISO_8859_1_infos[4] = {
+                 NOMAP, &to_ISO_8859_1_C2,
+     &to_ISO_8859_1_C3,             UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_1 = {
@@ -188,7 +158,9 @@
 };
 
 static const unsigned char
-from_ISO_8859_2_offsets[256] = {
+from_ISO_8859_15_offsets[256] = {
+  /* used from from_ISO_8859_15 */
+  /* used from from_ISO_8859_2 */
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
@@ -208,75 +180,43 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_2_infos[129] = {
-                      NOMAP, o2('\xC2','\x80'),
-     o2('\xC2','\x81'), o2('\xC2','\x82'),
-     o2('\xC2','\x83'), o2('\xC2','\x84'),
-     o2('\xC2','\x85'), o2('\xC2','\x86'),
-     o2('\xC2','\x87'), o2('\xC2','\x88'),
-     o2('\xC2','\x89'), o2('\xC2','\x8A'),
-     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
-     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
-     o2('\xC2','\x8F'), o2('\xC2','\x90'),
-     o2('\xC2','\x91'), o2('\xC2','\x92'),
-     o2('\xC2','\x93'), o2('\xC2','\x94'),
-     o2('\xC2','\x95'), o2('\xC2','\x96'),
-     o2('\xC2','\x97'), o2('\xC2','\x98'),
-     o2('\xC2','\x99'), o2('\xC2','\x9A'),
-     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
-     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
-     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
-     o2('\xC4','\x84'), o2('\xCB','\x98'),
-     o2('\xC5','\x81'), o2('\xC2','\xA4'),
-     o2('\xC4','\xBD'), o2('\xC5','\x9A'),
-     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
-     o2('\xC5','\xA0'), o2('\xC5','\x9E'),
-     o2('\xC5','\xA4'), o2('\xC5','\xB9'),
-     o2('\xC2','\xAD'), o2('\xC5','\xBD'),
-     o2('\xC5','\xBB'), o2('\xC2','\xB0'),
-     o2('\xC4','\x85'), o2('\xCB','\x9B'),
-     o2('\xC5','\x82'), o2('\xC2','\xB4'),
-     o2('\xC4','\xBE'), o2('\xC5','\x9B'),
-     o2('\xCB','\x87'), o2('\xC2','\xB8'),
-     o2('\xC5','\xA1'), o2('\xC5','\x9F'),
-     o2('\xC5','\xA5'), o2('\xC5','\xBA'),
-     o2('\xCB','\x9D'), o2('\xC5','\xBE'),
-     o2('\xC5','\xBC'), o2('\xC5','\x94'),
-     o2('\xC3','\x81'), o2('\xC3','\x82'),
-     o2('\xC4','\x82'), o2('\xC3','\x84'),
-     o2('\xC4','\xB9'), o2('\xC4','\x86'),
-     o2('\xC3','\x87'), o2('\xC4','\x8C'),
-     o2('\xC3','\x89'), o2('\xC4','\x98'),
-     o2('\xC3','\x8B'), o2('\xC4','\x9A'),
-     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
-     o2('\xC4','\x8E'), o2('\xC4','\x90'),
-     o2('\xC5','\x83'), o2('\xC5','\x87'),
-     o2('\xC3','\x93'), o2('\xC3','\x94'),
-     o2('\xC5','\x90'), o2('\xC3','\x96'),
-     o2('\xC3','\x97'), o2('\xC5','\x98'),
-     o2('\xC5','\xAE'), o2('\xC3','\x9A'),
-     o2('\xC5','\xB0'), o2('\xC3','\x9C'),
-     o2('\xC3','\x9D'), o2('\xC5','\xA2'),
-     o2('\xC3','\x9F'), o2('\xC5','\x95'),
-     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
-     o2('\xC4','\x83'), o2('\xC3','\xA4'),
-     o2('\xC4','\xBA'), o2('\xC4','\x87'),
-     o2('\xC3','\xA7'), o2('\xC4','\x8D'),
-     o2('\xC3','\xA9'), o2('\xC4','\x99'),
-     o2('\xC3','\xAB'), o2('\xC4','\x9B'),
-     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
-     o2('\xC4','\x8F'), o2('\xC4','\x91'),
-     o2('\xC5','\x84'), o2('\xC5','\x88'),
-     o2('\xC3','\xB3'), o2('\xC3','\xB4'),
-     o2('\xC5','\x91'), o2('\xC3','\xB6'),
-     o2('\xC3','\xB7'), o2('\xC5','\x99'),
-     o2('\xC5','\xAF'), o2('\xC3','\xBA'),
-     o2('\xC5','\xB1'), o2('\xC3','\xBC'),
-     o2('\xC3','\xBD'), o2('\xC5','\xA3'),
-     o2('\xCB','\x99'),
+             NOMAP, o2(0xC2,0x80), o2(0xC2,0x81), o2(0xC2,0x82),
+     o2(0xC2,0x83), o2(0xC2,0x84), o2(0xC2,0x85), o2(0xC2,0x86),
+     o2(0xC2,0x87), o2(0xC2,0x88), o2(0xC2,0x89), o2(0xC2,0x8A),
+     o2(0xC2,0x8B), o2(0xC2,0x8C), o2(0xC2,0x8D), o2(0xC2,0x8E),
+     o2(0xC2,0x8F), o2(0xC2,0x90), o2(0xC2,0x91), o2(0xC2,0x92),
+     o2(0xC2,0x93), o2(0xC2,0x94), o2(0xC2,0x95), o2(0xC2,0x96),
+     o2(0xC2,0x97), o2(0xC2,0x98), o2(0xC2,0x99), o2(0xC2,0x9A),
+     o2(0xC2,0x9B), o2(0xC2,0x9C), o2(0xC2,0x9D), o2(0xC2,0x9E),
+     o2(0xC2,0x9F), o2(0xC2,0xA0), o2(0xC4,0x84), o2(0xCB,0x98),
+     o2(0xC5,0x81), o2(0xC2,0xA4), o2(0xC4,0xBD), o2(0xC5,0x9A),
+     o2(0xC2,0xA7), o2(0xC2,0xA8), o2(0xC5,0xA0), o2(0xC5,0x9E),
+     o2(0xC5,0xA4), o2(0xC5,0xB9), o2(0xC2,0xAD), o2(0xC5,0xBD),
+     o2(0xC5,0xBB), o2(0xC2,0xB0), o2(0xC4,0x85), o2(0xCB,0x9B),
+     o2(0xC5,0x82), o2(0xC2,0xB4), o2(0xC4,0xBE), o2(0xC5,0x9B),
+     o2(0xCB,0x87), o2(0xC2,0xB8), o2(0xC5,0xA1), o2(0xC5,0x9F),
+     o2(0xC5,0xA5), o2(0xC5,0xBA), o2(0xCB,0x9D), o2(0xC5,0xBE),
+     o2(0xC5,0xBC), o2(0xC5,0x94), o2(0xC3,0x81), o2(0xC3,0x82),
+     o2(0xC4,0x82), o2(0xC3,0x84), o2(0xC4,0xB9), o2(0xC4,0x86),
+     o2(0xC3,0x87), o2(0xC4,0x8C), o2(0xC3,0x89), o2(0xC4,0x98),
+     o2(0xC3,0x8B), o2(0xC4,0x9A), o2(0xC3,0x8D), o2(0xC3,0x8E),
+     o2(0xC4,0x8E), o2(0xC4,0x90), o2(0xC5,0x83), o2(0xC5,0x87),
+     o2(0xC3,0x93), o2(0xC3,0x94), o2(0xC5,0x90), o2(0xC3,0x96),
+     o2(0xC3,0x97), o2(0xC5,0x98), o2(0xC5,0xAE), o2(0xC3,0x9A),
+     o2(0xC5,0xB0), o2(0xC3,0x9C), o2(0xC3,0x9D), o2(0xC5,0xA2),
+     o2(0xC3,0x9F), o2(0xC5,0x95), o2(0xC3,0xA1), o2(0xC3,0xA2),
+     o2(0xC4,0x83), o2(0xC3,0xA4), o2(0xC4,0xBA), o2(0xC4,0x87),
+     o2(0xC3,0xA7), o2(0xC4,0x8D), o2(0xC3,0xA9), o2(0xC4,0x99),
+     o2(0xC3,0xAB), o2(0xC4,0x9B), o2(0xC3,0xAD), o2(0xC3,0xAE),
+     o2(0xC4,0x8F), o2(0xC4,0x91), o2(0xC5,0x84), o2(0xC5,0x88),
+     o2(0xC3,0xB3), o2(0xC3,0xB4), o2(0xC5,0x91), o2(0xC3,0xB6),
+     o2(0xC3,0xB7), o2(0xC5,0x99), o2(0xC5,0xAF), o2(0xC3,0xBA),
+     o2(0xC5,0xB1), o2(0xC3,0xBC), o2(0xC3,0xBD), o2(0xC5,0xA3),
+     o2(0xCB,0x99),
 };
 const BYTE_LOOKUP
 from_ISO_8859_2 = {
-    from_ISO_8859_2_offsets,
+    from_ISO_8859_15_offsets,
     from_ISO_8859_2_infos
 };
 
@@ -284,21 +224,22 @@
 to_ISO_8859_2_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, -1, 33, -1, -1, 34,   35, -1, -1, -1, -1, 36, -1, -1,
-     37, -1, -1, -1, 38, -1, -1, -1,   39, -1, -1, -1, -1, -1, -1, -1,
+     32, 40, 40, 40, 33, 40, 40, 34,   35, 40, 40, 40, 40, 36, 40, 40,
+     37, 40, 40, 40, 38, 40, 40, 40,   39, 40, 40, 40, 40, 40, 40, 40,
 };
 static const struct byte_lookup* const
-to_ISO_8859_2_C2_infos[40] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA4'), o1('\xA7'), o1('\xA8'),
-     o1('\xAD'), o1('\xB0'), o1('\xB4'), o1('\xB8'),
+to_ISO_8859_2_C2_infos[41] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA4), o1(0xA7), o1(0xA8),
+     o1(0xAD), o1(0xB0), o1(0xB4), o1(0xB8),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C2 = {
@@ -308,21 +249,21 @@
 
 static const unsigned char
 to_ISO_8859_2_C3_offsets[64] = {
-     -1,  0,  1, -1,  2, -1, -1,  3,   -1,  4, -1,  5, -1,  6,  7, -1,
-     -1, -1, -1,  8,  9, -1, 10, 11,   -1, -1, 12, -1, 13, 14, -1, 15,
-     -1, 16, 17, -1, 18, -1, -1, 19,   -1, 20, -1, 21, -1, 22, 23, -1,
-     -1, -1, -1, 24, 25, -1, 26, 27,   -1, -1, 28, -1, 29, 30, -1, -1,
+     31,  0,  1, 31,  2, 31, 31,  3,   31,  4, 31,  5, 31,  6,  7, 31,
+     31, 31, 31,  8,  9, 31, 10, 11,   31, 31, 12, 31, 13, 14, 31, 15,
+     31, 16, 17, 31, 18, 31, 31, 19,   31, 20, 31, 21, 31, 22, 23, 31,
+     31, 31, 31, 24, 25, 31, 26, 27,   31, 31, 28, 31, 29, 30, 31, 31,
 };
 static const struct byte_lookup* const
-to_ISO_8859_2_C3_infos[31] = {
-     o1('\xC1'), o1('\xC2'), o1('\xC4'), o1('\xC7'),
-     o1('\xC9'), o1('\xCB'), o1('\xCD'), o1('\xCE'),
-     o1('\xD3'), o1('\xD4'), o1('\xD6'), o1('\xD7'),
-     o1('\xDA'), o1('\xDC'), o1('\xDD'), o1('\xDF'),
-     o1('\xE1'), o1('\xE2'), o1('\xE4'), o1('\xE7'),
-     o1('\xE9'), o1('\xEB'), o1('\xED'), o1('\xEE'),
-     o1('\xF3'), o1('\xF4'), o1('\xF6'), o1('\xF7'),
-     o1('\xFA'), o1('\xFC'), o1('\xFD'),
+to_ISO_8859_2_C3_infos[32] = {
+     o1(0xC1), o1(0xC2), o1(0xC4), o1(0xC7),
+     o1(0xC9), o1(0xCB), o1(0xCD), o1(0xCE),
+     o1(0xD3), o1(0xD4), o1(0xD6), o1(0xD7),
+     o1(0xDA), o1(0xDC), o1(0xDD), o1(0xDF),
+     o1(0xE1), o1(0xE2), o1(0xE4), o1(0xE7),
+     o1(0xE9), o1(0xEB), o1(0xED), o1(0xEE),
+     o1(0xF3), o1(0xF4), o1(0xF6), o1(0xF7),
+     o1(0xFA), o1(0xFC), o1(0xFD),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C3 = {
@@ -332,18 +273,19 @@
 
 static const unsigned char
 to_ISO_8859_2_C4_offsets[64] = {
-     -1, -1,  0,  1,  2,  3,  4,  5,   -1, -1, -1, -1,  6,  7,  8,  9,
-     10, 11, -1, -1, -1, -1, -1, -1,   12, 13, 14, 15, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, 16, 17, -1, -1, 18, 19, -1,
+     20, 20,  0,  1,  2,  3,  4,  5,   20, 20, 20, 20,  6,  7,  8,  9,
+     10, 11, 20, 20, 20, 20, 20, 20,   12, 13, 14, 15, 20, 20, 20, 20,
+     20, 20, 20, 20, 20, 20, 20, 20,   20, 20, 20, 20, 20, 20, 20, 20,
+     20, 20, 20, 20, 20, 20, 20, 20,   20, 16, 17, 20, 20, 18, 19, 20,
 };
 static const struct byte_lookup* const
-to_ISO_8859_2_C4_infos[20] = {
-     o1('\xC3'), o1('\xE3'), o1('\xA1'), o1('\xB1'),
-     o1('\xC6'), o1('\xE6'), o1('\xC8'), o1('\xE8'),
-     o1('\xCF'), o1('\xEF'), o1('\xD0'), o1('\xF0'),
-     o1('\xCA'), o1('\xEA'), o1('\xCC'), o1('\xEC'),
-     o1('\xC5'), o1('\xE5'), o1('\xA5'), o1('\xB5'),
+to_ISO_8859_2_C4_infos[21] = {
+     o1(0xC3), o1(0xE3), o1(0xA1), o1(0xB1),
+     o1(0xC6), o1(0xE6), o1(0xC8), o1(0xE8),
+     o1(0xCF), o1(0xEF), o1(0xD0), o1(0xF0),
+     o1(0xCA), o1(0xEA), o1(0xCC), o1(0xEC),
+     o1(0xC5), o1(0xE5), o1(0xA5), o1(0xB5),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C4 = {
@@ -353,21 +295,22 @@
 
 static const unsigned char
 to_ISO_8859_2_C5_offsets[64] = {
-     -1,  0,  1,  2,  3, -1, -1,  4,    5, -1, -1, -1, -1, -1, -1, -1,
-      6,  7, -1, -1,  8,  9, -1, -1,   10, 11, 12, 13, -1, -1, 14, 15,
-     16, 17, 18, 19, 20, 21, -1, -1,   -1, -1, -1, -1, -1, -1, 22, 23,
-     24, 25, -1, -1, -1, -1, -1, -1,   -1, 26, 27, 28, 29, 30, 31, -1,
+     32,  0,  1,  2,  3, 32, 32,  4,    5, 32, 32, 32, 32, 32, 32, 32,
+      6,  7, 32, 32,  8,  9, 32, 32,   10, 11, 12, 13, 32, 32, 14, 15,
+     16, 17, 18, 19, 20, 21, 32, 32,   32, 32, 32, 32, 32, 32, 22, 23,
+     24, 25, 32, 32, 32, 32, 32, 32,   32, 26, 27, 28, 29, 30, 31, 32,
 };
 static const struct byte_lookup* const
-to_ISO_8859_2_C5_infos[32] = {
-     o1('\xA3'), o1('\xB3'), o1('\xD1'), o1('\xF1'),
-     o1('\xD2'), o1('\xF2'), o1('\xD5'), o1('\xF5'),
-     o1('\xC0'), o1('\xE0'), o1('\xD8'), o1('\xF8'),
-     o1('\xA6'), o1('\xB6'), o1('\xAA'), o1('\xBA'),
-     o1('\xA9'), o1('\xB9'), o1('\xDE'), o1('\xFE'),
-     o1('\xAB'), o1('\xBB'), o1('\xD9'), o1('\xF9'),
-     o1('\xDB'), o1('\xFB'), o1('\xAC'), o1('\xBC'),
-     o1('\xAF'), o1('\xBF'), o1('\xAE'), o1('\xBE'),
+to_ISO_8859_2_C5_infos[33] = {
+     o1(0xA3), o1(0xB3), o1(0xD1), o1(0xF1),
+     o1(0xD2), o1(0xF2), o1(0xD5), o1(0xF5),
+     o1(0xC0), o1(0xE0), o1(0xD8), o1(0xF8),
+     o1(0xA6), o1(0xB6), o1(0xAA), o1(0xBA),
+     o1(0xA9), o1(0xB9), o1(0xDE), o1(0xFE),
+     o1(0xAB), o1(0xBB), o1(0xD9), o1(0xF9),
+     o1(0xDB), o1(0xFB), o1(0xAC), o1(0xBC),
+     o1(0xAF), o1(0xBF), o1(0xAE), o1(0xBE),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C5 = {
@@ -377,15 +320,15 @@
 
 static const unsigned char
 to_ISO_8859_2_CB_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1,  0,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,    1,  2, -1,  3, -1,  4, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      5,  5,  5,  5,  5,  5,  5,  0,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    1,  2,  5,  3,  5,  4,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
 };
 static const struct byte_lookup* const
-to_ISO_8859_2_CB_infos[5] = {
-     o1('\xB7'), o1('\xA2'), o1('\xFF'), o1('\xB2'),
-     o1('\xBD'),
+to_ISO_8859_2_CB_infos[6] = {
+     o1(0xB7), o1(0xA2), o1(0xFF), o1(0xB2),
+     o1(0xBD),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_CB = {
@@ -395,6 +338,9 @@
 
 static const unsigned char
 to_ISO_8859_2_offsets[256] = {
+  /* used from to_ISO_8859_2 */
+  /* used from to_ISO_8859_3 */
+  /* used from to_ISO_8859_4 */
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
@@ -403,19 +349,21 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1,  5, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  1,  2,  3,  4,  6,  6,    6,  6,  6,  5,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
 };
 static const struct byte_lookup* const
-to_ISO_8859_2_infos[6] = {
-                 NOMAP, &to_ISO_8859_2_C2, &to_ISO_8859_2_C3, &to_ISO_8859_2_C4,
+to_ISO_8859_2_infos[7] = {
+                 NOMAP, &to_ISO_8859_2_C2,
+     &to_ISO_8859_2_C3, &to_ISO_8859_2_C4,
      &to_ISO_8859_2_C5, &to_ISO_8859_2_CB,
+                 UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_2 = {
@@ -435,76 +383,46 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
      17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, -1, 38, 39,   40, 41, 42, 43, 44, 45, -1, 46,
-     47, 48, 49, 50, 51, 52, 53, 54,   55, 56, 57, 58, 59, 60, -1, 61,
-     62, 63, 64, -1, 65, 66, 67, 68,   69, 70, 71, 72, 73, 74, 75, 76,
-     -1, 77, 78, 79, 80, 81, 82, 83,   84, 85, 86, 87, 88, 89, 90, 91,
-     92, 93, 94, -1, 95, 96, 97, 98,   99,100,101,102,103,104,105,106,
-     -1,107,108,109,110,111,112,113,  114,115,116,117,118,119,120,121,
+     33, 34, 35, 36, 37,122, 38, 39,   40, 41, 42, 43, 44, 45,122, 46,
+     47, 48, 49, 50, 51, 52, 53, 54,   55, 56, 57, 58, 59, 60,122, 61,
+     62, 63, 64,122, 65, 66, 67, 68,   69, 70, 71, 72, 73, 74, 75, 76,
+    122, 77, 78, 79, 80, 81, 82, 83,   84, 85, 86, 87, 88, 89, 90, 91,
+     92, 93, 94,122, 95, 96, 97, 98,   99,100,101,102,103,104,105,106,
+    122,107,108,109,110,111,112,113,  114,115,116,117,118,119,120,121,
 };
 static const struct byte_lookup* const
-from_ISO_8859_3_infos[122] = {
-                      NOMAP, o2('\xC2','\x80'),
-     o2('\xC2','\x81'), o2('\xC2','\x82'),
-     o2('\xC2','\x83'), o2('\xC2','\x84'),
-     o2('\xC2','\x85'), o2('\xC2','\x86'),
-     o2('\xC2','\x87'), o2('\xC2','\x88'),
-     o2('\xC2','\x89'), o2('\xC2','\x8A'),
-     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
-     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
-     o2('\xC2','\x8F'), o2('\xC2','\x90'),
-     o2('\xC2','\x91'), o2('\xC2','\x92'),
-     o2('\xC2','\x93'), o2('\xC2','\x94'),
-     o2('\xC2','\x95'), o2('\xC2','\x96'),
-     o2('\xC2','\x97'), o2('\xC2','\x98'),
-     o2('\xC2','\x99'), o2('\xC2','\x9A'),
-     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
-     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
-     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
-     o2('\xC4','\xA6'), o2('\xCB','\x98'),
-     o2('\xC2','\xA3'), o2('\xC2','\xA4'),
-     o2('\xC4','\xA4'), o2('\xC2','\xA7'),
-     o2('\xC2','\xA8'), o2('\xC4','\xB0'),
-     o2('\xC5','\x9E'), o2('\xC4','\x9E'),
-     o2('\xC4','\xB4'), o2('\xC2','\xAD'),
-     o2('\xC5','\xBB'), o2('\xC2','\xB0'),
-     o2('\xC4','\xA7'), o2('\xC2','\xB2'),
-     o2('\xC2','\xB3'), o2('\xC2','\xB4'),
-     o2('\xC2','\xB5'), o2('\xC4','\xA5'),
-     o2('\xC2','\xB7'), o2('\xC2','\xB8'),
-     o2('\xC4','\xB1'), o2('\xC5','\x9F'),
-     o2('\xC4','\x9F'), o2('\xC4','\xB5'),
-     o2('\xC2','\xBD'), o2('\xC5','\xBC'),
-     o2('\xC3','\x80'), o2('\xC3','\x81'),
-     o2('\xC3','\x82'), o2('\xC3','\x84'),
-     o2('\xC4','\x8A'), o2('\xC4','\x88'),
-     o2('\xC3','\x87'), o2('\xC3','\x88'),
-     o2('\xC3','\x89'), o2('\xC3','\x8A'),
-     o2('\xC3','\x8B'), o2('\xC3','\x8C'),
-     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
-     o2('\xC3','\x8F'), o2('\xC3','\x91'),
-     o2('\xC3','\x92'), o2('\xC3','\x93'),
-     o2('\xC3','\x94'), o2('\xC4','\xA0'),
-     o2('\xC3','\x96'), o2('\xC3','\x97'),
-     o2('\xC4','\x9C'), o2('\xC3','\x99'),
-     o2('\xC3','\x9A'), o2('\xC3','\x9B'),
-     o2('\xC3','\x9C'), o2('\xC5','\xAC'),
-     o2('\xC5','\x9C'), o2('\xC3','\x9F'),
-     o2('\xC3','\xA0'), o2('\xC3','\xA1'),
-     o2('\xC3','\xA2'), o2('\xC3','\xA4'),
-     o2('\xC4','\x8B'), o2('\xC4','\x89'),
-     o2('\xC3','\xA7'), o2('\xC3','\xA8'),
-     o2('\xC3','\xA9'), o2('\xC3','\xAA'),
-     o2('\xC3','\xAB'), o2('\xC3','\xAC'),
-     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
-     o2('\xC3','\xAF'), o2('\xC3','\xB1'),
-     o2('\xC3','\xB2'), o2('\xC3','\xB3'),
-     o2('\xC3','\xB4'), o2('\xC4','\xA1'),
-     o2('\xC3','\xB6'), o2('\xC3','\xB7'),
-     o2('\xC4','\x9D'), o2('\xC3','\xB9'),
-     o2('\xC3','\xBA'), o2('\xC3','\xBB'),
-     o2('\xC3','\xBC'), o2('\xC5','\xAD'),
-     o2('\xC5','\x9D'), o2('\xCB','\x99'),
+from_ISO_8859_3_infos[123] = {
+             NOMAP, o2(0xC2,0x80), o2(0xC2,0x81), o2(0xC2,0x82),
+     o2(0xC2,0x83), o2(0xC2,0x84), o2(0xC2,0x85), o2(0xC2,0x86),
+     o2(0xC2,0x87), o2(0xC2,0x88), o2(0xC2,0x89), o2(0xC2,0x8A),
+     o2(0xC2,0x8B), o2(0xC2,0x8C), o2(0xC2,0x8D), o2(0xC2,0x8E),
+     o2(0xC2,0x8F), o2(0xC2,0x90), o2(0xC2,0x91), o2(0xC2,0x92),
+     o2(0xC2,0x93), o2(0xC2,0x94), o2(0xC2,0x95), o2(0xC2,0x96),
+     o2(0xC2,0x97), o2(0xC2,0x98), o2(0xC2,0x99), o2(0xC2,0x9A),
+     o2(0xC2,0x9B), o2(0xC2,0x9C), o2(0xC2,0x9D), o2(0xC2,0x9E),
+     o2(0xC2,0x9F), o2(0xC2,0xA0), o2(0xC4,0xA6), o2(0xCB,0x98),
+     o2(0xC2,0xA3), o2(0xC2,0xA4), o2(0xC4,0xA4), o2(0xC2,0xA7),
+     o2(0xC2,0xA8), o2(0xC4,0xB0), o2(0xC5,0x9E), o2(0xC4,0x9E),
+     o2(0xC4,0xB4), o2(0xC2,0xAD), o2(0xC5,0xBB), o2(0xC2,0xB0),
+     o2(0xC4,0xA7), o2(0xC2,0xB2), o2(0xC2,0xB3), o2(0xC2,0xB4),
+     o2(0xC2,0xB5), o2(0xC4,0xA5), o2(0xC2,0xB7), o2(0xC2,0xB8),
+     o2(0xC4,0xB1), o2(0xC5,0x9F), o2(0xC4,0x9F), o2(0xC4,0xB5),
+     o2(0xC2,0xBD), o2(0xC5,0xBC), o2(0xC3,0x80), o2(0xC3,0x81),
+     o2(0xC3,0x82), o2(0xC3,0x84), o2(0xC4,0x8A), o2(0xC4,0x88),
+     o2(0xC3,0x87), o2(0xC3,0x88), o2(0xC3,0x89), o2(0xC3,0x8A),
+     o2(0xC3,0x8B), o2(0xC3,0x8C), o2(0xC3,0x8D), o2(0xC3,0x8E),
+     o2(0xC3,0x8F), o2(0xC3,0x91), o2(0xC3,0x92), o2(0xC3,0x93),
+     o2(0xC3,0x94), o2(0xC4,0xA0), o2(0xC3,0x96), o2(0xC3,0x97),
+     o2(0xC4,0x9C), o2(0xC3,0x99), o2(0xC3,0x9A), o2(0xC3,0x9B),
+     o2(0xC3,0x9C), o2(0xC5,0xAC), o2(0xC5,0x9C), o2(0xC3,0x9F),
+     o2(0xC3,0xA0), o2(0xC3,0xA1), o2(0xC3,0xA2), o2(0xC3,0xA4),
+     o2(0xC4,0x8B), o2(0xC4,0x89), o2(0xC3,0xA7), o2(0xC3,0xA8),
+     o2(0xC3,0xA9), o2(0xC3,0xAA), o2(0xC3,0xAB), o2(0xC3,0xAC),
+     o2(0xC3,0xAD), o2(0xC3,0xAE), o2(0xC3,0xAF), o2(0xC3,0xB1),
+     o2(0xC3,0xB2), o2(0xC3,0xB3), o2(0xC3,0xB4), o2(0xC4,0xA1),
+     o2(0xC3,0xB6), o2(0xC3,0xB7), o2(0xC4,0x9D), o2(0xC3,0xB9),
+     o2(0xC3,0xBA), o2(0xC3,0xBB), o2(0xC3,0xBC), o2(0xC5,0xAD),
+     o2(0xC5,0x9D), o2(0xCB,0x99),         UNDEF,
 };
 const BYTE_LOOKUP
 from_ISO_8859_3 = {
@@ -516,23 +434,23 @@
 to_ISO_8859_3_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, 33, 34, -1, -1, 35,   36, -1, -1, -1, -1, 37, -1, -1,
-     38, -1, 39, 40, 41, 42, -1, 43,   44, -1, -1, -1, -1, 45, -1, -1,
+     32, 46, 46, 33, 34, 46, 46, 35,   36, 46, 46, 46, 46, 37, 46, 46,
+     38, 46, 39, 40, 41, 42, 46, 43,   44, 46, 46, 46, 46, 45, 46, 46,
 };
 static const struct byte_lookup* const
-to_ISO_8859_3_C2_infos[46] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA3'), o1('\xA4'), o1('\xA7'),
-     o1('\xA8'), o1('\xAD'), o1('\xB0'), o1('\xB2'),
-     o1('\xB3'), o1('\xB4'), o1('\xB5'), o1('\xB7'),
-     o1('\xB8'), o1('\xBD'),
+to_ISO_8859_3_C2_infos[47] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA3), o1(0xA4), o1(0xA7),
+     o1(0xA8), o1(0xAD), o1(0xB0), o1(0xB2),
+     o1(0xB3), o1(0xB4), o1(0xB5), o1(0xB7),
+     o1(0xB8), o1(0xBD),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C2 = {
@@ -542,25 +460,25 @@
 
 static const unsigned char
 to_ISO_8859_3_C3_offsets[64] = {
-      0,  1,  2, -1,  3, -1, -1,  4,    5,  6,  7,  8,  9, 10, 11, 12,
-     -1, 13, 14, 15, 16, -1, 17, 18,   -1, 19, 20, 21, 22, -1, -1, 23,
-     24, 25, 26, -1, 27, -1, -1, 28,   29, 30, 31, 32, 33, 34, 35, 36,
-     -1, 37, 38, 39, 40, -1, 41, 42,   -1, 43, 44, 45, 46, -1, -1, -1,
+      0,  1,  2, 47,  3, 47, 47,  4,    5,  6,  7,  8,  9, 10, 11, 12,
+     47, 13, 14, 15, 16, 47, 17, 18,   47, 19, 20, 21, 22, 47, 47, 23,
+     24, 25, 26, 47, 27, 47, 47, 28,   29, 30, 31, 32, 33, 34, 35, 36,
+     47, 37, 38, 39, 40, 47, 41, 42,   47, 43, 44, 45, 46, 47, 47, 47,
 };
 static const struct byte_lookup* const
-to_ISO_8859_3_C3_infos[47] = {
-     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC4'),
-     o1('\xC7'), o1('\xC8'), o1('\xC9'), o1('\xCA'),
-     o1('\xCB'), o1('\xCC'), o1('\xCD'), o1('\xCE'),
-     o1('\xCF'), o1('\xD1'), o1('\xD2'), o1('\xD3'),
-     o1('\xD4'), o1('\xD6'), o1('\xD7'), o1('\xD9'),
-     o1('\xDA'), o1('\xDB'), o1('\xDC'), o1('\xDF'),
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE4'),
-     o1('\xE7'), o1('\xE8'), o1('\xE9'), o1('\xEA'),
-     o1('\xEB'), o1('\xEC'), o1('\xED'), o1('\xEE'),
-     o1('\xEF'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF6'), o1('\xF7'), o1('\xF9'),
-     o1('\xFA'), o1('\xFB'), o1('\xFC'),
+to_ISO_8859_3_C3_infos[48] = {
+     o1(0xC0), o1(0xC1), o1(0xC2), o1(0xC4),
+     o1(0xC7), o1(0xC8), o1(0xC9), o1(0xCA),
+     o1(0xCB), o1(0xCC), o1(0xCD), o1(0xCE),
+     o1(0xCF), o1(0xD1), o1(0xD2), o1(0xD3),
+     o1(0xD4), o1(0xD6), o1(0xD7), o1(0xD9),
+     o1(0xDA), o1(0xDB), o1(0xDC), o1(0xDF),
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE4),
+     o1(0xE7), o1(0xE8), o1(0xE9), o1(0xEA),
+     o1(0xEB), o1(0xEC), o1(0xED), o1(0xEE),
+     o1(0xEF), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF6), o1(0xF7), o1(0xF9),
+     o1(0xFA), o1(0xFB), o1(0xFC),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C3 = {
@@ -570,18 +488,18 @@
 
 static const unsigned char
 to_ISO_8859_3_C4_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,    0,  1,  2,  3, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1,  4,  5,  6,  7,
-      8,  9, -1, -1, 10, 11, 12, 13,   -1, -1, -1, -1, -1, -1, -1, -1,
-     14, 15, -1, -1, 16, 17, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     18, 18, 18, 18, 18, 18, 18, 18,    0,  1,  2,  3, 18, 18, 18, 18,
+     18, 18, 18, 18, 18, 18, 18, 18,   18, 18, 18, 18,  4,  5,  6,  7,
+      8,  9, 18, 18, 10, 11, 12, 13,   18, 18, 18, 18, 18, 18, 18, 18,
+     14, 15, 18, 18, 16, 17, 18, 18,   18, 18, 18, 18, 18, 18, 18, 18,
 };
 static const struct byte_lookup* const
-to_ISO_8859_3_C4_infos[18] = {
-     o1('\xC6'), o1('\xE6'), o1('\xC5'), o1('\xE5'),
-     o1('\xD8'), o1('\xF8'), o1('\xAB'), o1('\xBB'),
-     o1('\xD5'), o1('\xF5'), o1('\xA6'), o1('\xB6'),
-     o1('\xA1'), o1('\xB1'), o1('\xA9'), o1('\xB9'),
-     o1('\xAC'), o1('\xBC'),
+to_ISO_8859_3_C4_infos[19] = {
+     o1(0xC6), o1(0xE6), o1(0xC5), o1(0xE5),
+     o1(0xD8), o1(0xF8), o1(0xAB), o1(0xBB),
+     o1(0xD5), o1(0xF5), o1(0xA6), o1(0xB6),
+     o1(0xA1), o1(0xB1), o1(0xA9), o1(0xB9),
+     o1(0xAC), o1(0xBC),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C4 = {
@@ -591,15 +509,16 @@
 
 static const unsigned char
 to_ISO_8859_3_C5_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1,  0,  1,  2,  3,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1,  4,  5, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1,  6,  7, -1, -1, -1,
+      8,  8,  8,  8,  8,  8,  8,  8,    8,  8,  8,  8,  8,  8,  8,  8,
+      8,  8,  8,  8,  8,  8,  8,  8,    8,  8,  8,  8,  0,  1,  2,  3,
+      8,  8,  8,  8,  8,  8,  8,  8,    8,  8,  8,  8,  4,  5,  8,  8,
+      8,  8,  8,  8,  8,  8,  8,  8,    8,  8,  8,  6,  7,  8,  8,  8,
 };
 static const struct byte_lookup* const
-to_ISO_8859_3_C5_infos[8] = {
-     o1('\xDE'), o1('\xFE'), o1('\xAA'), o1('\xBA'),
-     o1('\xDD'), o1('\xFD'), o1('\xAF'), o1('\xBF'),
+to_ISO_8859_3_C5_infos[9] = {
+     o1(0xDE), o1(0xFE), o1(0xAA), o1(0xBA),
+     o1(0xDD), o1(0xFD), o1(0xAF), o1(0xBF),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C5 = {
@@ -609,14 +528,14 @@
 
 static const unsigned char
 to_ISO_8859_3_CB_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,    0,  1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    0,  1,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_3_CB_infos[2] = {
-     o1('\xA2'), o1('\xFF'),
+to_ISO_8859_3_CB_infos[3] = {
+     o1(0xA2), o1(0xFF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_CB = {
@@ -624,38 +543,24 @@
     to_ISO_8859_3_CB_infos
 };
 
-static const unsigned char
-to_ISO_8859_3_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1,  5, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-};
 static const struct byte_lookup* const
-to_ISO_8859_3_infos[6] = {
-                 NOMAP, &to_ISO_8859_3_C2, &to_ISO_8859_3_C3, &to_ISO_8859_3_C4,
+to_ISO_8859_3_infos[7] = {
+                 NOMAP, &to_ISO_8859_3_C2,
+     &to_ISO_8859_3_C3, &to_ISO_8859_3_C4,
      &to_ISO_8859_3_C5, &to_ISO_8859_3_CB,
+                 UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_3 = {
-    to_ISO_8859_3_offsets,
+    to_ISO_8859_2_offsets,
     to_ISO_8859_3_infos
 };
 
 static const unsigned char
-from_ISO_8859_4_offsets[256] = {
+from_ISO_8859_13_offsets[256] = {
+  /* used from from_ISO_8859_13 */
+  /* used from from_ISO_8859_14 */
+  /* used from from_ISO_8859_4 */
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
@@ -675,75 +580,43 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_4_infos[129] = {
-                      NOMAP, o2('\xC2','\x80'),
-     o2('\xC2','\x81'), o2('\xC2','\x82'),
-     o2('\xC2','\x83'), o2('\xC2','\x84'),
-     o2('\xC2','\x85'), o2('\xC2','\x86'),
-     o2('\xC2','\x87'), o2('\xC2','\x88'),
-     o2('\xC2','\x89'), o2('\xC2','\x8A'),
-     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
-     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
-     o2('\xC2','\x8F'), o2('\xC2','\x90'),
-     o2('\xC2','\x91'), o2('\xC2','\x92'),
-     o2('\xC2','\x93'), o2('\xC2','\x94'),
-     o2('\xC2','\x95'), o2('\xC2','\x96'),
-     o2('\xC2','\x97'), o2('\xC2','\x98'),
-     o2('\xC2','\x99'), o2('\xC2','\x9A'),
-     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
-     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
-     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
-     o2('\xC4','\x84'), o2('\xC4','\xB8'),
-     o2('\xC5','\x96'), o2('\xC2','\xA4'),
-     o2('\xC4','\xA8'), o2('\xC4','\xBB'),
-     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
-     o2('\xC5','\xA0'), o2('\xC4','\x92'),
-     o2('\xC4','\xA2'), o2('\xC5','\xA6'),
-     o2('\xC2','\xAD'), o2('\xC5','\xBD'),
-     o2('\xC2','\xAF'), o2('\xC2','\xB0'),
-     o2('\xC4','\x85'), o2('\xCB','\x9B'),
-     o2('\xC5','\x97'), o2('\xC2','\xB4'),
-     o2('\xC4','\xA9'), o2('\xC4','\xBC'),
-     o2('\xCB','\x87'), o2('\xC2','\xB8'),
-     o2('\xC5','\xA1'), o2('\xC4','\x93'),
-     o2('\xC4','\xA3'), o2('\xC5','\xA7'),
-     o2('\xC5','\x8A'), o2('\xC5','\xBE'),
-     o2('\xC5','\x8B'), o2('\xC4','\x80'),
-     o2('\xC3','\x81'), o2('\xC3','\x82'),
-     o2('\xC3','\x83'), o2('\xC3','\x84'),
-     o2('\xC3','\x85'), o2('\xC3','\x86'),
-     o2('\xC4','\xAE'), o2('\xC4','\x8C'),
-     o2('\xC3','\x89'), o2('\xC4','\x98'),
-     o2('\xC3','\x8B'), o2('\xC4','\x96'),
-     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
-     o2('\xC4','\xAA'), o2('\xC4','\x90'),
-     o2('\xC5','\x85'), o2('\xC5','\x8C'),
-     o2('\xC4','\xB6'), o2('\xC3','\x94'),
-     o2('\xC3','\x95'), o2('\xC3','\x96'),
-     o2('\xC3','\x97'), o2('\xC3','\x98'),
-     o2('\xC5','\xB2'), o2('\xC3','\x9A'),
-     o2('\xC3','\x9B'), o2('\xC3','\x9C'),
-     o2('\xC5','\xA8'), o2('\xC5','\xAA'),
-     o2('\xC3','\x9F'), o2('\xC4','\x81'),
-     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
-     o2('\xC3','\xA3'), o2('\xC3','\xA4'),
-     o2('\xC3','\xA5'), o2('\xC3','\xA6'),
-     o2('\xC4','\xAF'), o2('\xC4','\x8D'),
-     o2('\xC3','\xA9'), o2('\xC4','\x99'),
-     o2('\xC3','\xAB'), o2('\xC4','\x97'),
-     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
-     o2('\xC4','\xAB'), o2('\xC4','\x91'),
-     o2('\xC5','\x86'), o2('\xC5','\x8D'),
-     o2('\xC4','\xB7'), o2('\xC3','\xB4'),
-     o2('\xC3','\xB5'), o2('\xC3','\xB6'),
-     o2('\xC3','\xB7'), o2('\xC3','\xB8'),
-     o2('\xC5','\xB3'), o2('\xC3','\xBA'),
-     o2('\xC3','\xBB'), o2('\xC3','\xBC'),
-     o2('\xC5','\xA9'), o2('\xC5','\xAB'),
-     o2('\xCB','\x99'),
+             NOMAP, o2(0xC2,0x80), o2(0xC2,0x81), o2(0xC2,0x82),
+     o2(0xC2,0x83), o2(0xC2,0x84), o2(0xC2,0x85), o2(0xC2,0x86),
+     o2(0xC2,0x87), o2(0xC2,0x88), o2(0xC2,0x89), o2(0xC2,0x8A),
+     o2(0xC2,0x8B), o2(0xC2,0x8C), o2(0xC2,0x8D), o2(0xC2,0x8E),
+     o2(0xC2,0x8F), o2(0xC2,0x90), o2(0xC2,0x91), o2(0xC2,0x92),
+     o2(0xC2,0x93), o2(0xC2,0x94), o2(0xC2,0x95), o2(0xC2,0x96),
+     o2(0xC2,0x97), o2(0xC2,0x98), o2(0xC2,0x99), o2(0xC2,0x9A),
+     o2(0xC2,0x9B), o2(0xC2,0x9C), o2(0xC2,0x9D), o2(0xC2,0x9E),
+     o2(0xC2,0x9F), o2(0xC2,0xA0), o2(0xC4,0x84), o2(0xC4,0xB8),
+     o2(0xC5,0x96), o2(0xC2,0xA4), o2(0xC4,0xA8), o2(0xC4,0xBB),
+     o2(0xC2,0xA7), o2(0xC2,0xA8), o2(0xC5,0xA0), o2(0xC4,0x92),
+     o2(0xC4,0xA2), o2(0xC5,0xA6), o2(0xC2,0xAD), o2(0xC5,0xBD),
+     o2(0xC2,0xAF), o2(0xC2,0xB0), o2(0xC4,0x85), o2(0xCB,0x9B),
+     o2(0xC5,0x97), o2(0xC2,0xB4), o2(0xC4,0xA9), o2(0xC4,0xBC),
+     o2(0xCB,0x87), o2(0xC2,0xB8), o2(0xC5,0xA1), o2(0xC4,0x93),
+     o2(0xC4,0xA3), o2(0xC5,0xA7), o2(0xC5,0x8A), o2(0xC5,0xBE),
+     o2(0xC5,0x8B), o2(0xC4,0x80), o2(0xC3,0x81), o2(0xC3,0x82),
+     o2(0xC3,0x83), o2(0xC3,0x84), o2(0xC3,0x85), o2(0xC3,0x86),
+     o2(0xC4,0xAE), o2(0xC4,0x8C), o2(0xC3,0x89), o2(0xC4,0x98),
+     o2(0xC3,0x8B), o2(0xC4,0x96), o2(0xC3,0x8D), o2(0xC3,0x8E),
+     o2(0xC4,0xAA), o2(0xC4,0x90), o2(0xC5,0x85), o2(0xC5,0x8C),
+     o2(0xC4,0xB6), o2(0xC3,0x94), o2(0xC3,0x95), o2(0xC3,0x96),
+     o2(0xC3,0x97), o2(0xC3,0x98), o2(0xC5,0xB2), o2(0xC3,0x9A),
+     o2(0xC3,0x9B), o2(0xC3,0x9C), o2(0xC5,0xA8), o2(0xC5,0xAA),
+     o2(0xC3,0x9F), o2(0xC4,0x81), o2(0xC3,0xA1), o2(0xC3,0xA2),
+     o2(0xC3,0xA3), o2(0xC3,0xA4), o2(0xC3,0xA5), o2(0xC3,0xA6),
+     o2(0xC4,0xAF), o2(0xC4,0x8D), o2(0xC3,0xA9), o2(0xC4,0x99),
+     o2(0xC3,0xAB), o2(0xC4,0x97), o2(0xC3,0xAD), o2(0xC3,0xAE),
+     o2(0xC4,0xAB), o2(0xC4,0x91), o2(0xC5,0x86), o2(0xC5,0x8D),
+     o2(0xC4,0xB7), o2(0xC3,0xB4), o2(0xC3,0xB5), o2(0xC3,0xB6),
+     o2(0xC3,0xB7), o2(0xC3,0xB8), o2(0xC5,0xB3), o2(0xC3,0xBA),
+     o2(0xC3,0xBB), o2(0xC3,0xBC), o2(0xC5,0xA9), o2(0xC5,0xAB),
+     o2(0xCB,0x99),
 };
 const BYTE_LOOKUP
 from_ISO_8859_4 = {
-    from_ISO_8859_4_offsets,
+    from_ISO_8859_13_offsets,
     from_ISO_8859_4_infos
 };
 
@@ -751,22 +624,22 @@
 to_ISO_8859_4_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, -1, 33, -1, -1, 34,   35, -1, -1, -1, -1, 36, -1, 37,
-     38, -1, -1, -1, 39, -1, -1, -1,   40, -1, -1, -1, -1, -1, -1, -1,
+     32, 41, 41, 41, 33, 41, 41, 34,   35, 41, 41, 41, 41, 36, 41, 37,
+     38, 41, 41, 41, 39, 41, 41, 41,   40, 41, 41, 41, 41, 41, 41, 41,
 };
 static const struct byte_lookup* const
-to_ISO_8859_4_C2_infos[41] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA4'), o1('\xA7'), o1('\xA8'),
-     o1('\xAD'), o1('\xAF'), o1('\xB0'), o1('\xB4'),
-     o1('\xB8'),
+to_ISO_8859_4_C2_infos[42] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA4), o1(0xA7), o1(0xA8),
+     o1(0xAD), o1(0xAF), o1(0xB0), o1(0xB4),
+     o1(0xB8),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C2 = {
@@ -776,23 +649,23 @@
 
 static const unsigned char
 to_ISO_8859_4_C3_offsets[64] = {
-     -1,  0,  1,  2,  3,  4,  5, -1,   -1,  6, -1,  7, -1,  8,  9, -1,
-     -1, -1, -1, -1, 10, 11, 12, 13,   14, -1, 15, 16, 17, -1, -1, 18,
-     -1, 19, 20, 21, 22, 23, 24, -1,   -1, 25, -1, 26, -1, 27, 28, -1,
-     -1, -1, -1, -1, 29, 30, 31, 32,   33, -1, 34, 35, 36, -1, -1, -1,
+     37,  0,  1,  2,  3,  4,  5, 37,   37,  6, 37,  7, 37,  8,  9, 37,
+     37, 37, 37, 37, 10, 11, 12, 13,   14, 37, 15, 16, 17, 37, 37, 18,
+     37, 19, 20, 21, 22, 23, 24, 37,   37, 25, 37, 26, 37, 27, 28, 37,
+     37, 37, 37, 37, 29, 30, 31, 32,   33, 37, 34, 35, 36, 37, 37, 37,
 };
 static const struct byte_lookup* const
-to_ISO_8859_4_C3_infos[37] = {
-     o1('\xC1'), o1('\xC2'), o1('\xC3'), o1('\xC4'),
-     o1('\xC5'), o1('\xC6'), o1('\xC9'), o1('\xCB'),
-     o1('\xCD'), o1('\xCE'), o1('\xD4'), o1('\xD5'),
-     o1('\xD6'), o1('\xD7'), o1('\xD8'), o1('\xDA'),
-     o1('\xDB'), o1('\xDC'), o1('\xDF'), o1('\xE1'),
-     o1('\xE2'), o1('\xE3'), o1('\xE4'), o1('\xE5'),
-     o1('\xE6'), o1('\xE9'), o1('\xEB'), o1('\xED'),
-     o1('\xEE'), o1('\xF4'), o1('\xF5'), o1('\xF6'),
-     o1('\xF7'), o1('\xF8'), o1('\xFA'), o1('\xFB'),
-     o1('\xFC'),
+to_ISO_8859_4_C3_infos[38] = {
+     o1(0xC1), o1(0xC2), o1(0xC3), o1(0xC4),
+     o1(0xC5), o1(0xC6), o1(0xC9), o1(0xCB),
+     o1(0xCD), o1(0xCE), o1(0xD4), o1(0xD5),
+     o1(0xD6), o1(0xD7), o1(0xD8), o1(0xDA),
+     o1(0xDB), o1(0xDC), o1(0xDF), o1(0xE1),
+     o1(0xE2), o1(0xE3), o1(0xE4), o1(0xE5),
+     o1(0xE6), o1(0xE9), o1(0xEB), o1(0xED),
+     o1(0xEE), o1(0xF4), o1(0xF5), o1(0xF6),
+     o1(0xF7), o1(0xF8), o1(0xFA), o1(0xFB),
+     o1(0xFC),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C3 = {
@@ -801,42 +674,45 @@
 };
 
 static const unsigned char
-to_ISO_8859_4_C4_offsets[64] = {
-      0,  1, -1, -1,  2,  3, -1, -1,   -1, -1, -1, -1,  4,  5, -1, -1,
-      6,  7,  8,  9, -1, -1, 10, 11,   12, 13, -1, -1, -1, -1, -1, -1,
-     -1, -1, 14, 15, -1, -1, -1, -1,   16, 17, 18, 19, -1, -1, 20, 21,
-     -1, -1, -1, -1, -1, -1, 22, 23,   24, -1, -1, 25, 26, -1, -1, -1,
+to_ISO_8859_10_C4_offsets[64] = {
+  /* used from to_ISO_8859_10_C4 */
+  /* used from to_ISO_8859_4_C4 */
+      0,  1, 27, 27,  2,  3, 27, 27,   27, 27, 27, 27,  4,  5, 27, 27,
+      6,  7,  8,  9, 27, 27, 10, 11,   12, 13, 27, 27, 27, 27, 27, 27,
+     27, 27, 14, 15, 27, 27, 27, 27,   16, 17, 18, 19, 27, 27, 20, 21,
+     27, 27, 27, 27, 27, 27, 22, 23,   24, 27, 27, 25, 26, 27, 27, 27,
 };
 static const struct byte_lookup* const
-to_ISO_8859_4_C4_infos[27] = {
-     o1('\xC0'), o1('\xE0'), o1('\xA1'), o1('\xB1'),
-     o1('\xC8'), o1('\xE8'), o1('\xD0'), o1('\xF0'),
-     o1('\xAA'), o1('\xBA'), o1('\xCC'), o1('\xEC'),
-     o1('\xCA'), o1('\xEA'), o1('\xAB'), o1('\xBB'),
-     o1('\xA5'), o1('\xB5'), o1('\xCF'), o1('\xEF'),
-     o1('\xC7'), o1('\xE7'), o1('\xD3'), o1('\xF3'),
-     o1('\xA2'), o1('\xA6'), o1('\xB6'),
+to_ISO_8859_4_C4_infos[28] = {
+     o1(0xC0), o1(0xE0), o1(0xA1), o1(0xB1),
+     o1(0xC8), o1(0xE8), o1(0xD0), o1(0xF0),
+     o1(0xAA), o1(0xBA), o1(0xCC), o1(0xEC),
+     o1(0xCA), o1(0xEA), o1(0xAB), o1(0xBB),
+     o1(0xA5), o1(0xB5), o1(0xCF), o1(0xEF),
+     o1(0xC7), o1(0xE7), o1(0xD3), o1(0xF3),
+     o1(0xA2), o1(0xA6), o1(0xB6),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C4 = {
-    to_ISO_8859_4_C4_offsets,
+    to_ISO_8859_10_C4_offsets,
     to_ISO_8859_4_C4_infos
 };
 
 static const unsigned char
 to_ISO_8859_4_C5_offsets[64] = {
-     -1, -1, -1, -1, -1,  0,  1, -1,   -1, -1,  2,  3,  4,  5, -1, -1,
-     -1, -1, -1, -1, -1, -1,  6,  7,   -1, -1, -1, -1, -1, -1, -1, -1,
-      8,  9, -1, -1, -1, -1, 10, 11,   12, 13, 14, 15, -1, -1, -1, -1,
-     -1, -1, 16, 17, -1, -1, -1, -1,   -1, -1, -1, -1, -1, 18, 19, -1,
+     20, 20, 20, 20, 20,  0,  1, 20,   20, 20,  2,  3,  4,  5, 20, 20,
+     20, 20, 20, 20, 20, 20,  6,  7,   20, 20, 20, 20, 20, 20, 20, 20,
+      8,  9, 20, 20, 20, 20, 10, 11,   12, 13, 14, 15, 20, 20, 20, 20,
+     20, 20, 16, 17, 20, 20, 20, 20,   20, 20, 20, 20, 20, 18, 19, 20,
 };
 static const struct byte_lookup* const
-to_ISO_8859_4_C5_infos[20] = {
-     o1('\xD1'), o1('\xF1'), o1('\xBD'), o1('\xBF'),
-     o1('\xD2'), o1('\xF2'), o1('\xA3'), o1('\xB3'),
-     o1('\xA9'), o1('\xB9'), o1('\xAC'), o1('\xBC'),
-     o1('\xDD'), o1('\xFD'), o1('\xDE'), o1('\xFE'),
-     o1('\xD9'), o1('\xF9'), o1('\xAE'), o1('\xBE'),
+to_ISO_8859_4_C5_infos[21] = {
+     o1(0xD1), o1(0xF1), o1(0xBD), o1(0xBF),
+     o1(0xD2), o1(0xF2), o1(0xA3), o1(0xB3),
+     o1(0xA9), o1(0xB9), o1(0xAC), o1(0xBC),
+     o1(0xDD), o1(0xFD), o1(0xDE), o1(0xFE),
+     o1(0xD9), o1(0xF9), o1(0xAE), o1(0xBE),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C5 = {
@@ -846,14 +722,14 @@
 
 static const unsigned char
 to_ISO_8859_4_CB_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1,  0,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1,  1, -1,  2, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      3,  3,  3,  3,  3,  3,  3,  0,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  1,  3,  2,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
 };
 static const struct byte_lookup* const
-to_ISO_8859_4_CB_infos[3] = {
-     o1('\xB7'), o1('\xFF'), o1('\xB2'),
+to_ISO_8859_4_CB_infos[4] = {
+     o1(0xB7), o1(0xFF), o1(0xB2),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_CB = {
@@ -861,38 +737,23 @@
     to_ISO_8859_4_CB_infos
 };
 
-static const unsigned char
-to_ISO_8859_4_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1,  5, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-};
 static const struct byte_lookup* const
-to_ISO_8859_4_infos[6] = {
-                 NOMAP, &to_ISO_8859_4_C2, &to_ISO_8859_4_C3, &to_ISO_8859_4_C4,
+to_ISO_8859_4_infos[7] = {
+                 NOMAP, &to_ISO_8859_4_C2,
+     &to_ISO_8859_4_C3, &to_ISO_8859_4_C4,
      &to_ISO_8859_4_C5, &to_ISO_8859_4_CB,
+                 UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_4 = {
-    to_ISO_8859_4_offsets,
+    to_ISO_8859_2_offsets,
     to_ISO_8859_4_infos
 };
 
 static const unsigned char
-from_ISO_8859_5_offsets[256] = {
+from_ISO_8859_10_offsets[256] = {
+  /* used from from_ISO_8859_10 */
+  /* used from from_ISO_8859_5 */
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
@@ -912,75 +773,75 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_5_infos[129] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-            o2('\xD0','\x81'),        o2('\xD0','\x82'),
-            o2('\xD0','\x83'),        o2('\xD0','\x84'),
-            o2('\xD0','\x85'),        o2('\xD0','\x86'),
-            o2('\xD0','\x87'),        o2('\xD0','\x88'),
-            o2('\xD0','\x89'),        o2('\xD0','\x8A'),
-            o2('\xD0','\x8B'),        o2('\xD0','\x8C'),
-            o2('\xC2','\xAD'),        o2('\xD0','\x8E'),
-            o2('\xD0','\x8F'),        o2('\xD0','\x90'),
-            o2('\xD0','\x91'),        o2('\xD0','\x92'),
-            o2('\xD0','\x93'),        o2('\xD0','\x94'),
-            o2('\xD0','\x95'),        o2('\xD0','\x96'),
-            o2('\xD0','\x97'),        o2('\xD0','\x98'),
-            o2('\xD0','\x99'),        o2('\xD0','\x9A'),
-            o2('\xD0','\x9B'),        o2('\xD0','\x9C'),
-            o2('\xD0','\x9D'),        o2('\xD0','\x9E'),
-            o2('\xD0','\x9F'),        o2('\xD0','\xA0'),
-            o2('\xD0','\xA1'),        o2('\xD0','\xA2'),
-            o2('\xD0','\xA3'),        o2('\xD0','\xA4'),
-            o2('\xD0','\xA5'),        o2('\xD0','\xA6'),
-            o2('\xD0','\xA7'),        o2('\xD0','\xA8'),
-            o2('\xD0','\xA9'),        o2('\xD0','\xAA'),
-            o2('\xD0','\xAB'),        o2('\xD0','\xAC'),
-            o2('\xD0','\xAD'),        o2('\xD0','\xAE'),
-            o2('\xD0','\xAF'),        o2('\xD0','\xB0'),
-            o2('\xD0','\xB1'),        o2('\xD0','\xB2'),
-            o2('\xD0','\xB3'),        o2('\xD0','\xB4'),
-            o2('\xD0','\xB5'),        o2('\xD0','\xB6'),
-            o2('\xD0','\xB7'),        o2('\xD0','\xB8'),
-            o2('\xD0','\xB9'),        o2('\xD0','\xBA'),
-            o2('\xD0','\xBB'),        o2('\xD0','\xBC'),
-            o2('\xD0','\xBD'),        o2('\xD0','\xBE'),
-            o2('\xD0','\xBF'),        o2('\xD1','\x80'),
-            o2('\xD1','\x81'),        o2('\xD1','\x82'),
-            o2('\xD1','\x83'),        o2('\xD1','\x84'),
-            o2('\xD1','\x85'),        o2('\xD1','\x86'),
-            o2('\xD1','\x87'),        o2('\xD1','\x88'),
-            o2('\xD1','\x89'),        o2('\xD1','\x8A'),
-            o2('\xD1','\x8B'),        o2('\xD1','\x8C'),
-            o2('\xD1','\x8D'),        o2('\xD1','\x8E'),
-            o2('\xD1','\x8F'), o3('\xE2','\x84','\x96'),
-            o2('\xD1','\x91'),        o2('\xD1','\x92'),
-            o2('\xD1','\x93'),        o2('\xD1','\x94'),
-            o2('\xD1','\x95'),        o2('\xD1','\x96'),
-            o2('\xD1','\x97'),        o2('\xD1','\x98'),
-            o2('\xD1','\x99'),        o2('\xD1','\x9A'),
-            o2('\xD1','\x9B'),        o2('\xD1','\x9C'),
-            o2('\xC2','\xA7'),        o2('\xD1','\x9E'),
-            o2('\xD1','\x9F'),
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+          o2(0xD0,0x81),      o2(0xD0,0x82),
+          o2(0xD0,0x83),      o2(0xD0,0x84),
+          o2(0xD0,0x85),      o2(0xD0,0x86),
+          o2(0xD0,0x87),      o2(0xD0,0x88),
+          o2(0xD0,0x89),      o2(0xD0,0x8A),
+          o2(0xD0,0x8B),      o2(0xD0,0x8C),
+          o2(0xC2,0xAD),      o2(0xD0,0x8E),
+          o2(0xD0,0x8F),      o2(0xD0,0x90),
+          o2(0xD0,0x91),      o2(0xD0,0x92),
+          o2(0xD0,0x93),      o2(0xD0,0x94),
+          o2(0xD0,0x95),      o2(0xD0,0x96),
+          o2(0xD0,0x97),      o2(0xD0,0x98),
+          o2(0xD0,0x99),      o2(0xD0,0x9A),
+          o2(0xD0,0x9B),      o2(0xD0,0x9C),
+          o2(0xD0,0x9D),      o2(0xD0,0x9E),
+          o2(0xD0,0x9F),      o2(0xD0,0xA0),
+          o2(0xD0,0xA1),      o2(0xD0,0xA2),
+          o2(0xD0,0xA3),      o2(0xD0,0xA4),
+          o2(0xD0,0xA5),      o2(0xD0,0xA6),
+          o2(0xD0,0xA7),      o2(0xD0,0xA8),
+          o2(0xD0,0xA9),      o2(0xD0,0xAA),
+          o2(0xD0,0xAB),      o2(0xD0,0xAC),
+          o2(0xD0,0xAD),      o2(0xD0,0xAE),
+          o2(0xD0,0xAF),      o2(0xD0,0xB0),
+          o2(0xD0,0xB1),      o2(0xD0,0xB2),
+          o2(0xD0,0xB3),      o2(0xD0,0xB4),
+          o2(0xD0,0xB5),      o2(0xD0,0xB6),
+          o2(0xD0,0xB7),      o2(0xD0,0xB8),
+          o2(0xD0,0xB9),      o2(0xD0,0xBA),
+          o2(0xD0,0xBB),      o2(0xD0,0xBC),
+          o2(0xD0,0xBD),      o2(0xD0,0xBE),
+          o2(0xD0,0xBF),      o2(0xD1,0x80),
+          o2(0xD1,0x81),      o2(0xD1,0x82),
+          o2(0xD1,0x83),      o2(0xD1,0x84),
+          o2(0xD1,0x85),      o2(0xD1,0x86),
+          o2(0xD1,0x87),      o2(0xD1,0x88),
+          o2(0xD1,0x89),      o2(0xD1,0x8A),
+          o2(0xD1,0x8B),      o2(0xD1,0x8C),
+          o2(0xD1,0x8D),      o2(0xD1,0x8E),
+          o2(0xD1,0x8F), o3(0xE2,0x84,0x96),
+          o2(0xD1,0x91),      o2(0xD1,0x92),
+          o2(0xD1,0x93),      o2(0xD1,0x94),
+          o2(0xD1,0x95),      o2(0xD1,0x96),
+          o2(0xD1,0x97),      o2(0xD1,0x98),
+          o2(0xD1,0x99),      o2(0xD1,0x9A),
+          o2(0xD1,0x9B),      o2(0xD1,0x9C),
+          o2(0xC2,0xA7),      o2(0xD1,0x9E),
+          o2(0xD1,0x9F),
 };
 const BYTE_LOOKUP
 from_ISO_8859_5 = {
-    from_ISO_8859_5_offsets,
+    from_ISO_8859_10_offsets,
     from_ISO_8859_5_infos
 };
 
@@ -988,20 +849,20 @@
 to_ISO_8859_5_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, -1, -1, -1, -1, 33,   -1, -1, -1, -1, -1, 34, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     32, 35, 35, 35, 35, 35, 35, 33,   35, 35, 35, 35, 35, 34, 35, 35,
+     35, 35, 35, 35, 35, 35, 35, 35,   35, 35, 35, 35, 35, 35, 35, 35,
 };
 static const struct byte_lookup* const
-to_ISO_8859_5_C2_infos[35] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xFD'), o1('\xAD'),
+to_ISO_8859_5_C2_infos[36] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xFD), o1(0xAD),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_C2 = {
@@ -1011,29 +872,29 @@
 
 static const unsigned char
 to_ISO_8859_5_D0_offsets[64] = {
-     -1,  0,  1,  2,  3,  4,  5,  6,    7,  8,  9, 10, 11, -1, 12, 13,
+     62,  0,  1,  2,  3,  4,  5,  6,    7,  8,  9, 10, 11, 62, 12, 13,
      14, 15, 16, 17, 18, 19, 20, 21,   22, 23, 24, 25, 26, 27, 28, 29,
      30, 31, 32, 33, 34, 35, 36, 37,   38, 39, 40, 41, 42, 43, 44, 45,
      46, 47, 48, 49, 50, 51, 52, 53,   54, 55, 56, 57, 58, 59, 60, 61,
 };
 static const struct byte_lookup* const
-to_ISO_8859_5_D0_infos[62] = {
-     o1('\xA1'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
-     o1('\xA5'), o1('\xA6'), o1('\xA7'), o1('\xA8'),
-     o1('\xA9'), o1('\xAA'), o1('\xAB'), o1('\xAC'),
-     o1('\xAE'), o1('\xAF'), o1('\xB0'), o1('\xB1'),
-     o1('\xB2'), o1('\xB3'), o1('\xB4'), o1('\xB5'),
-     o1('\xB6'), o1('\xB7'), o1('\xB8'), o1('\xB9'),
-     o1('\xBA'), o1('\xBB'), o1('\xBC'), o1('\xBD'),
-     o1('\xBE'), o1('\xBF'), o1('\xC0'), o1('\xC1'),
-     o1('\xC2'), o1('\xC3'), o1('\xC4'), o1('\xC5'),
-     o1('\xC6'), o1('\xC7'), o1('\xC8'), o1('\xC9'),
-     o1('\xCA'), o1('\xCB'), o1('\xCC'), o1('\xCD'),
-     o1('\xCE'), o1('\xCF'), o1('\xD0'), o1('\xD1'),
-     o1('\xD2'), o1('\xD3'), o1('\xD4'), o1('\xD5'),
-     o1('\xD6'), o1('\xD7'), o1('\xD8'), o1('\xD9'),
-     o1('\xDA'), o1('\xDB'), o1('\xDC'), o1('\xDD'),
-     o1('\xDE'), o1('\xDF'),
+to_ISO_8859_5_D0_infos[63] = {
+     o1(0xA1), o1(0xA2), o1(0xA3), o1(0xA4),
+     o1(0xA5), o1(0xA6), o1(0xA7), o1(0xA8),
+     o1(0xA9), o1(0xAA), o1(0xAB), o1(0xAC),
+     o1(0xAE), o1(0xAF), o1(0xB0), o1(0xB1),
+     o1(0xB2), o1(0xB3), o1(0xB4), o1(0xB5),
+     o1(0xB6), o1(0xB7), o1(0xB8), o1(0xB9),
+     o1(0xBA), o1(0xBB), o1(0xBC), o1(0xBD),
+     o1(0xBE), o1(0xBF), o1(0xC0), o1(0xC1),
+     o1(0xC2), o1(0xC3), o1(0xC4), o1(0xC5),
+     o1(0xC6), o1(0xC7), o1(0xC8), o1(0xC9),
+     o1(0xCA), o1(0xCB), o1(0xCC), o1(0xCD),
+     o1(0xCE), o1(0xCF), o1(0xD0), o1(0xD1),
+     o1(0xD2), o1(0xD3), o1(0xD4), o1(0xD5),
+     o1(0xD6), o1(0xD7), o1(0xD8), o1(0xD9),
+     o1(0xDA), o1(0xDB), o1(0xDC), o1(0xDD),
+     o1(0xDE), o1(0xDF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_D0 = {
@@ -1044,20 +905,20 @@
 static const unsigned char
 to_ISO_8859_5_D1_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     -1, 16, 17, 18, 19, 20, 21, 22,   23, 24, 25, 26, 27, -1, 28, 29,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     30, 16, 17, 18, 19, 20, 21, 22,   23, 24, 25, 26, 27, 30, 28, 29,
+     30, 30, 30, 30, 30, 30, 30, 30,   30, 30, 30, 30, 30, 30, 30, 30,
+     30, 30, 30, 30, 30, 30, 30, 30,   30, 30, 30, 30, 30, 30, 30, 30,
 };
 static const struct byte_lookup* const
-to_ISO_8859_5_D1_infos[30] = {
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
-     o1('\xF1'), o1('\xF2'), o1('\xF3'), o1('\xF4'),
-     o1('\xF5'), o1('\xF6'), o1('\xF7'), o1('\xF8'),
-     o1('\xF9'), o1('\xFA'), o1('\xFB'), o1('\xFC'),
-     o1('\xFE'), o1('\xFF'),
+to_ISO_8859_5_D1_infos[31] = {
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE3),
+     o1(0xE4), o1(0xE5), o1(0xE6), o1(0xE7),
+     o1(0xE8), o1(0xE9), o1(0xEA), o1(0xEB),
+     o1(0xEC), o1(0xED), o1(0xEE), o1(0xEF),
+     o1(0xF1), o1(0xF2), o1(0xF3), o1(0xF4),
+     o1(0xF5), o1(0xF6), o1(0xF7), o1(0xF8),
+     o1(0xF9), o1(0xFA), o1(0xFB), o1(0xFC),
+     o1(0xFE), o1(0xFF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_D1 = {
@@ -1067,14 +928,14 @@
 
 static const unsigned char
 to_ISO_8859_5_E2_84_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1,  0, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  0,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_5_E2_84_infos[1] = {
-     o1('\xF0'),
+to_ISO_8859_5_E2_84_infos[2] = {
+     o1(0xF0),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_E2_84 = {
@@ -1084,14 +945,14 @@
 
 static const unsigned char
 to_ISO_8859_5_E2_offsets[64] = {
-     -1, -1, -1, -1,  0, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      1,  1,  1,  1,  0,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_5_E2_infos[1] = {
-     &to_ISO_8859_5_E2_84,
+to_ISO_8859_5_E2_infos[2] = {
+     &to_ISO_8859_5_E2_84,                UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_E2 = {
@@ -1109,19 +970,20 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-      2,  3, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  4, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  1,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      2,  3,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  4,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
 };
 static const struct byte_lookup* const
-to_ISO_8859_5_infos[5] = {
-                 NOMAP, &to_ISO_8859_5_C2, &to_ISO_8859_5_D0, &to_ISO_8859_5_D1,
-     &to_ISO_8859_5_E2,
+to_ISO_8859_5_infos[6] = {
+                 NOMAP, &to_ISO_8859_5_C2,
+     &to_ISO_8859_5_D0, &to_ISO_8859_5_D1,
+     &to_ISO_8859_5_E2,             UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_5 = {
@@ -1141,57 +1003,37 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
      17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, -1, -1, -1, 34, -1, -1, -1,   -1, -1, -1, -1, 35, 36, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, 37, -1, -1, -1, 38,
-     -1, 39, 40, 41, 42, 43, 44, 45,   46, 47, 48, 49, 50, 51, 52, 53,
-     54, 55, 56, 57, 58, 59, 60, 61,   62, 63, 64, -1, -1, -1, -1, -1,
+     33, 84, 84, 84, 34, 84, 84, 84,   84, 84, 84, 84, 35, 36, 84, 84,
+     84, 84, 84, 84, 84, 84, 84, 84,   84, 84, 84, 37, 84, 84, 84, 38,
+     84, 39, 40, 41, 42, 43, 44, 45,   46, 47, 48, 49, 50, 51, 52, 53,
+     54, 55, 56, 57, 58, 59, 60, 61,   62, 63, 64, 84, 84, 84, 84, 84,
      65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     81, 82, 83, 84, 84, 84, 84, 84,   84, 84, 84, 84, 84, 84, 84, 84,
 };
 static const struct byte_lookup* const
-from_ISO_8859_6_infos[84] = {
-                      NOMAP, o2('\xC2','\x80'),
-     o2('\xC2','\x81'), o2('\xC2','\x82'),
-     o2('\xC2','\x83'), o2('\xC2','\x84'),
-     o2('\xC2','\x85'), o2('\xC2','\x86'),
-     o2('\xC2','\x87'), o2('\xC2','\x88'),
-     o2('\xC2','\x89'), o2('\xC2','\x8A'),
-     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
-     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
-     o2('\xC2','\x8F'), o2('\xC2','\x90'),
-     o2('\xC2','\x91'), o2('\xC2','\x92'),
-     o2('\xC2','\x93'), o2('\xC2','\x94'),
-     o2('\xC2','\x95'), o2('\xC2','\x96'),
-     o2('\xC2','\x97'), o2('\xC2','\x98'),
-     o2('\xC2','\x99'), o2('\xC2','\x9A'),
-     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
-     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
-     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
-     o2('\xC2','\xA4'), o2('\xD8','\x8C'),
-     o2('\xC2','\xAD'), o2('\xD8','\x9B'),
-     o2('\xD8','\x9F'), o2('\xD8','\xA1'),
-     o2('\xD8','\xA2'), o2('\xD8','\xA3'),
-     o2('\xD8','\xA4'), o2('\xD8','\xA5'),
-     o2('\xD8','\xA6'), o2('\xD8','\xA7'),
-     o2('\xD8','\xA8'), o2('\xD8','\xA9'),
-     o2('\xD8','\xAA'), o2('\xD8','\xAB'),
-     o2('\xD8','\xAC'), o2('\xD8','\xAD'),
-     o2('\xD8','\xAE'), o2('\xD8','\xAF'),
-     o2('\xD8','\xB0'), o2('\xD8','\xB1'),
-     o2('\xD8','\xB2'), o2('\xD8','\xB3'),
-     o2('\xD8','\xB4'), o2('\xD8','\xB5'),
-     o2('\xD8','\xB6'), o2('\xD8','\xB7'),
-     o2('\xD8','\xB8'), o2('\xD8','\xB9'),
-     o2('\xD8','\xBA'), o2('\xD9','\x80'),
-     o2('\xD9','\x81'), o2('\xD9','\x82'),
-     o2('\xD9','\x83'), o2('\xD9','\x84'),
-     o2('\xD9','\x85'), o2('\xD9','\x86'),
-     o2('\xD9','\x87'), o2('\xD9','\x88'),
-     o2('\xD9','\x89'), o2('\xD9','\x8A'),
-     o2('\xD9','\x8B'), o2('\xD9','\x8C'),
-     o2('\xD9','\x8D'), o2('\xD9','\x8E'),
-     o2('\xD9','\x8F'), o2('\xD9','\x90'),
-     o2('\xD9','\x91'), o2('\xD9','\x92'),
+from_ISO_8859_6_infos[85] = {
+             NOMAP, o2(0xC2,0x80), o2(0xC2,0x81), o2(0xC2,0x82),
+     o2(0xC2,0x83), o2(0xC2,0x84), o2(0xC2,0x85), o2(0xC2,0x86),
+     o2(0xC2,0x87), o2(0xC2,0x88), o2(0xC2,0x89), o2(0xC2,0x8A),
+     o2(0xC2,0x8B), o2(0xC2,0x8C), o2(0xC2,0x8D), o2(0xC2,0x8E),
+     o2(0xC2,0x8F), o2(0xC2,0x90), o2(0xC2,0x91), o2(0xC2,0x92),
+     o2(0xC2,0x93), o2(0xC2,0x94), o2(0xC2,0x95), o2(0xC2,0x96),
+     o2(0xC2,0x97), o2(0xC2,0x98), o2(0xC2,0x99), o2(0xC2,0x9A),
+     o2(0xC2,0x9B), o2(0xC2,0x9C), o2(0xC2,0x9D), o2(0xC2,0x9E),
+     o2(0xC2,0x9F), o2(0xC2,0xA0), o2(0xC2,0xA4), o2(0xD8,0x8C),
+     o2(0xC2,0xAD), o2(0xD8,0x9B), o2(0xD8,0x9F), o2(0xD8,0xA1),
+     o2(0xD8,0xA2), o2(0xD8,0xA3), o2(0xD8,0xA4), o2(0xD8,0xA5),
+     o2(0xD8,0xA6), o2(0xD8,0xA7), o2(0xD8,0xA8), o2(0xD8,0xA9),
+     o2(0xD8,0xAA), o2(0xD8,0xAB), o2(0xD8,0xAC), o2(0xD8,0xAD),
+     o2(0xD8,0xAE), o2(0xD8,0xAF), o2(0xD8,0xB0), o2(0xD8,0xB1),
+     o2(0xD8,0xB2), o2(0xD8,0xB3), o2(0xD8,0xB4), o2(0xD8,0xB5),
+     o2(0xD8,0xB6), o2(0xD8,0xB7), o2(0xD8,0xB8), o2(0xD8,0xB9),
+     o2(0xD8,0xBA), o2(0xD9,0x80), o2(0xD9,0x81), o2(0xD9,0x82),
+     o2(0xD9,0x83), o2(0xD9,0x84), o2(0xD9,0x85), o2(0xD9,0x86),
+     o2(0xD9,0x87), o2(0xD9,0x88), o2(0xD9,0x89), o2(0xD9,0x8A),
+     o2(0xD9,0x8B), o2(0xD9,0x8C), o2(0xD9,0x8D), o2(0xD9,0x8E),
+     o2(0xD9,0x8F), o2(0xD9,0x90), o2(0xD9,0x91), o2(0xD9,0x92),
+             UNDEF,
 };
 const BYTE_LOOKUP
 from_ISO_8859_6 = {
@@ -1203,20 +1045,20 @@
 to_ISO_8859_6_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, -1, 33, -1, -1, -1,   -1, -1, -1, -1, -1, 34, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     32, 35, 35, 35, 33, 35, 35, 35,   35, 35, 35, 35, 35, 34, 35, 35,
+     35, 35, 35, 35, 35, 35, 35, 35,   35, 35, 35, 35, 35, 35, 35, 35,
 };
 static const struct byte_lookup* const
-to_ISO_8859_6_C2_infos[35] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA4'), o1('\xAD'),
+to_ISO_8859_6_C2_infos[36] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA4), o1(0xAD),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_6_C2 = {
@@ -1226,21 +1068,21 @@
 
 static const unsigned char
 to_ISO_8859_6_D8_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1,  0, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1,  1, -1, -1, -1,  2,
-     -1,  3,  4,  5,  6,  7,  8,  9,   10, 11, 12, 13, 14, 15, 16, 17,
-     18, 19, 20, 21, 22, 23, 24, 25,   26, 27, 28, -1, -1, -1, -1, -1,
+     29, 29, 29, 29, 29, 29, 29, 29,   29, 29, 29, 29,  0, 29, 29, 29,
+     29, 29, 29, 29, 29, 29, 29, 29,   29, 29, 29,  1, 29, 29, 29,  2,
+     29,  3,  4,  5,  6,  7,  8,  9,   10, 11, 12, 13, 14, 15, 16, 17,
+     18, 19, 20, 21, 22, 23, 24, 25,   26, 27, 28, 29, 29, 29, 29, 29,
 };
 static const struct byte_lookup* const
-to_ISO_8859_6_D8_infos[29] = {
-     o1('\xAC'), o1('\xBB'), o1('\xBF'), o1('\xC1'),
-     o1('\xC2'), o1('\xC3'), o1('\xC4'), o1('\xC5'),
-     o1('\xC6'), o1('\xC7'), o1('\xC8'), o1('\xC9'),
-     o1('\xCA'), o1('\xCB'), o1('\xCC'), o1('\xCD'),
-     o1('\xCE'), o1('\xCF'), o1('\xD0'), o1('\xD1'),
-     o1('\xD2'), o1('\xD3'), o1('\xD4'), o1('\xD5'),
-     o1('\xD6'), o1('\xD7'), o1('\xD8'), o1('\xD9'),
-     o1('\xDA'),
+to_ISO_8859_6_D8_infos[30] = {
+     o1(0xAC), o1(0xBB), o1(0xBF), o1(0xC1),
+     o1(0xC2), o1(0xC3), o1(0xC4), o1(0xC5),
+     o1(0xC6), o1(0xC7), o1(0xC8), o1(0xC9),
+     o1(0xCA), o1(0xCB), o1(0xCC), o1(0xCD),
+     o1(0xCE), o1(0xCF), o1(0xD0), o1(0xD1),
+     o1(0xD2), o1(0xD3), o1(0xD4), o1(0xD5),
+     o1(0xD6), o1(0xD7), o1(0xD8), o1(0xD9),
+     o1(0xDA),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_6_D8 = {
@@ -1251,17 +1093,17 @@
 static const unsigned char
 to_ISO_8859_6_D9_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     16, 17, 18, 19, 19, 19, 19, 19,   19, 19, 19, 19, 19, 19, 19, 19,
+     19, 19, 19, 19, 19, 19, 19, 19,   19, 19, 19, 19, 19, 19, 19, 19,
+     19, 19, 19, 19, 19, 19, 19, 19,   19, 19, 19, 19, 19, 19, 19, 19,
 };
 static const struct byte_lookup* const
-to_ISO_8859_6_D9_infos[19] = {
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
-     o1('\xF0'), o1('\xF1'), o1('\xF2'),
+to_ISO_8859_6_D9_infos[20] = {
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE3),
+     o1(0xE4), o1(0xE5), o1(0xE6), o1(0xE7),
+     o1(0xE8), o1(0xE9), o1(0xEA), o1(0xEB),
+     o1(0xEC), o1(0xED), o1(0xEE), o1(0xEF),
+     o1(0xF0), o1(0xF1), o1(0xF2),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_6_D9 = {
@@ -1279,18 +1121,20 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,    2,  3, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  1,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    2,  3,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
 };
 static const struct byte_lookup* const
-to_ISO_8859_6_infos[4] = {
-                 NOMAP, &to_ISO_8859_6_C2, &to_ISO_8859_6_D8, &to_ISO_8859_6_D9,
+to_ISO_8859_6_infos[5] = {
+                 NOMAP, &to_ISO_8859_6_C2,
+     &to_ISO_8859_6_D8, &to_ISO_8859_6_D9,
+                 UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_6 = {
@@ -1310,78 +1154,79 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
      17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, -1, 47,
+     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46,126, 47,
      48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
      64, 65, 66, 67, 68, 69, 70, 71,   72, 73, 74, 75, 76, 77, 78, 79,
-     80, 81, -1, 82, 83, 84, 85, 86,   87, 88, 89, 90, 91, 92, 93, 94,
+     80, 81,126, 82, 83, 84, 85, 86,   87, 88, 89, 90, 91, 92, 93, 94,
      95, 96, 97, 98, 99,100,101,102,  103,104,105,106,107,108,109,110,
-    111,112,113,114,115,116,117,118,  119,120,121,122,123,124,125, -1,
+    111,112,113,114,115,116,117,118,  119,120,121,122,123,124,125,126,
 };
 static const struct byte_lookup* const
-from_ISO_8859_7_infos[126] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-     o3('\xE2','\x80','\x98'), o3('\xE2','\x80','\x99'),
-            o2('\xC2','\xA3'), o3('\xE2','\x82','\xAC'),
-     o3('\xE2','\x82','\xAF'),        o2('\xC2','\xA6'),
-            o2('\xC2','\xA7'),        o2('\xC2','\xA8'),
-            o2('\xC2','\xA9'),        o2('\xCD','\xBA'),
-            o2('\xC2','\xAB'),        o2('\xC2','\xAC'),
-            o2('\xC2','\xAD'), o3('\xE2','\x80','\x95'),
-            o2('\xC2','\xB0'),        o2('\xC2','\xB1'),
-            o2('\xC2','\xB2'),        o2('\xC2','\xB3'),
-            o2('\xCE','\x84'),        o2('\xCE','\x85'),
-            o2('\xCE','\x86'),        o2('\xC2','\xB7'),
-            o2('\xCE','\x88'),        o2('\xCE','\x89'),
-            o2('\xCE','\x8A'),        o2('\xC2','\xBB'),
-            o2('\xCE','\x8C'),        o2('\xC2','\xBD'),
-            o2('\xCE','\x8E'),        o2('\xCE','\x8F'),
-            o2('\xCE','\x90'),        o2('\xCE','\x91'),
-            o2('\xCE','\x92'),        o2('\xCE','\x93'),
-            o2('\xCE','\x94'),        o2('\xCE','\x95'),
-            o2('\xCE','\x96'),        o2('\xCE','\x97'),
-            o2('\xCE','\x98'),        o2('\xCE','\x99'),
-            o2('\xCE','\x9A'),        o2('\xCE','\x9B'),
-            o2('\xCE','\x9C'),        o2('\xCE','\x9D'),
-            o2('\xCE','\x9E'),        o2('\xCE','\x9F'),
-            o2('\xCE','\xA0'),        o2('\xCE','\xA1'),
-            o2('\xCE','\xA3'),        o2('\xCE','\xA4'),
-            o2('\xCE','\xA5'),        o2('\xCE','\xA6'),
-            o2('\xCE','\xA7'),        o2('\xCE','\xA8'),
-            o2('\xCE','\xA9'),        o2('\xCE','\xAA'),
-            o2('\xCE','\xAB'),        o2('\xCE','\xAC'),
-            o2('\xCE','\xAD'),        o2('\xCE','\xAE'),
-            o2('\xCE','\xAF'),        o2('\xCE','\xB0'),
-            o2('\xCE','\xB1'),        o2('\xCE','\xB2'),
-            o2('\xCE','\xB3'),        o2('\xCE','\xB4'),
-            o2('\xCE','\xB5'),        o2('\xCE','\xB6'),
-            o2('\xCE','\xB7'),        o2('\xCE','\xB8'),
-            o2('\xCE','\xB9'),        o2('\xCE','\xBA'),
-            o2('\xCE','\xBB'),        o2('\xCE','\xBC'),
-            o2('\xCE','\xBD'),        o2('\xCE','\xBE'),
-            o2('\xCE','\xBF'),        o2('\xCF','\x80'),
-            o2('\xCF','\x81'),        o2('\xCF','\x82'),
-            o2('\xCF','\x83'),        o2('\xCF','\x84'),
-            o2('\xCF','\x85'),        o2('\xCF','\x86'),
-            o2('\xCF','\x87'),        o2('\xCF','\x88'),
-            o2('\xCF','\x89'),        o2('\xCF','\x8A'),
-            o2('\xCF','\x8B'),        o2('\xCF','\x8C'),
-            o2('\xCF','\x8D'),        o2('\xCF','\x8E'),
+from_ISO_8859_7_infos[127] = {
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+     o3(0xE2,0x80,0x98), o3(0xE2,0x80,0x99),
+          o2(0xC2,0xA3), o3(0xE2,0x82,0xAC),
+     o3(0xE2,0x82,0xAF),      o2(0xC2,0xA6),
+          o2(0xC2,0xA7),      o2(0xC2,0xA8),
+          o2(0xC2,0xA9),      o2(0xCD,0xBA),
+          o2(0xC2,0xAB),      o2(0xC2,0xAC),
+          o2(0xC2,0xAD), o3(0xE2,0x80,0x95),
+          o2(0xC2,0xB0),      o2(0xC2,0xB1),
+          o2(0xC2,0xB2),      o2(0xC2,0xB3),
+          o2(0xCE,0x84),      o2(0xCE,0x85),
+          o2(0xCE,0x86),      o2(0xC2,0xB7),
+          o2(0xCE,0x88),      o2(0xCE,0x89),
+          o2(0xCE,0x8A),      o2(0xC2,0xBB),
+          o2(0xCE,0x8C),      o2(0xC2,0xBD),
+          o2(0xCE,0x8E),      o2(0xCE,0x8F),
+          o2(0xCE,0x90),      o2(0xCE,0x91),
+          o2(0xCE,0x92),      o2(0xCE,0x93),
+          o2(0xCE,0x94),      o2(0xCE,0x95),
+          o2(0xCE,0x96),      o2(0xCE,0x97),
+          o2(0xCE,0x98),      o2(0xCE,0x99),
+          o2(0xCE,0x9A),      o2(0xCE,0x9B),
+          o2(0xCE,0x9C),      o2(0xCE,0x9D),
+          o2(0xCE,0x9E),      o2(0xCE,0x9F),
+          o2(0xCE,0xA0),      o2(0xCE,0xA1),
+          o2(0xCE,0xA3),      o2(0xCE,0xA4),
+          o2(0xCE,0xA5),      o2(0xCE,0xA6),
+          o2(0xCE,0xA7),      o2(0xCE,0xA8),
+          o2(0xCE,0xA9),      o2(0xCE,0xAA),
+          o2(0xCE,0xAB),      o2(0xCE,0xAC),
+          o2(0xCE,0xAD),      o2(0xCE,0xAE),
+          o2(0xCE,0xAF),      o2(0xCE,0xB0),
+          o2(0xCE,0xB1),      o2(0xCE,0xB2),
+          o2(0xCE,0xB3),      o2(0xCE,0xB4),
+          o2(0xCE,0xB5),      o2(0xCE,0xB6),
+          o2(0xCE,0xB7),      o2(0xCE,0xB8),
+          o2(0xCE,0xB9),      o2(0xCE,0xBA),
+          o2(0xCE,0xBB),      o2(0xCE,0xBC),
+          o2(0xCE,0xBD),      o2(0xCE,0xBE),
+          o2(0xCE,0xBF),      o2(0xCF,0x80),
+          o2(0xCF,0x81),      o2(0xCF,0x82),
+          o2(0xCF,0x83),      o2(0xCF,0x84),
+          o2(0xCF,0x85),      o2(0xCF,0x86),
+          o2(0xCF,0x87),      o2(0xCF,0x88),
+          o2(0xCF,0x89),      o2(0xCF,0x8A),
+          o2(0xCF,0x8B),      o2(0xCF,0x8C),
+          o2(0xCF,0x8D),      o2(0xCF,0x8E),
+                  UNDEF,
 };
 const BYTE_LOOKUP
 from_ISO_8859_7 = {
@@ -1393,23 +1238,24 @@
 to_ISO_8859_7_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, 33, -1, -1, 34, 35,   36, 37, -1, 38, 39, 40, -1, -1,
-     41, 42, 43, 44, -1, -1, -1, 45,   -1, -1, -1, 46, -1, 47, -1, -1,
+     32, 48, 48, 33, 48, 48, 34, 35,   36, 37, 48, 38, 39, 40, 48, 48,
+     41, 42, 43, 44, 48, 48, 48, 45,   48, 48, 48, 46, 48, 47, 48, 48,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_C2_infos[48] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA3'), o1('\xA6'), o1('\xA7'),
-     o1('\xA8'), o1('\xA9'), o1('\xAB'), o1('\xAC'),
-     o1('\xAD'), o1('\xB0'), o1('\xB1'), o1('\xB2'),
-     o1('\xB3'), o1('\xB7'), o1('\xBB'), o1('\xBD'),
+to_ISO_8859_7_C2_infos[49] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA3), o1(0xA6), o1(0xA7),
+     o1(0xA8), o1(0xA9), o1(0xAB), o1(0xAC),
+     o1(0xAD), o1(0xB0), o1(0xB1), o1(0xB2),
+     o1(0xB3), o1(0xB7), o1(0xBB), o1(0xBD),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_C2 = {
@@ -1419,14 +1265,14 @@
 
 static const unsigned char
 to_ISO_8859_7_CD_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1,  0, -1, -1, -1, -1, -1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  0,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_CD_infos[1] = {
-     o1('\xAA'),
+to_ISO_8859_7_CD_infos[2] = {
+     o1(0xAA),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_CD = {
@@ -1436,27 +1282,28 @@
 
 static const unsigned char
 to_ISO_8859_7_CE_offsets[64] = {
-     -1, -1, -1, -1,  0,  1,  2, -1,    3,  4,  5, -1,  6, -1,  7,  8,
+     56, 56, 56, 56,  0,  1,  2, 56,    3,  4,  5, 56,  6, 56,  7,  8,
       9, 10, 11, 12, 13, 14, 15, 16,   17, 18, 19, 20, 21, 22, 23, 24,
-     25, 26, -1, 27, 28, 29, 30, 31,   32, 33, 34, 35, 36, 37, 38, 39,
+     25, 26, 56, 27, 28, 29, 30, 31,   32, 33, 34, 35, 36, 37, 38, 39,
      40, 41, 42, 43, 44, 45, 46, 47,   48, 49, 50, 51, 52, 53, 54, 55,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_CE_infos[56] = {
-     o1('\xB4'), o1('\xB5'), o1('\xB6'), o1('\xB8'),
-     o1('\xB9'), o1('\xBA'), o1('\xBC'), o1('\xBE'),
-     o1('\xBF'), o1('\xC0'), o1('\xC1'), o1('\xC2'),
-     o1('\xC3'), o1('\xC4'), o1('\xC5'), o1('\xC6'),
-     o1('\xC7'), o1('\xC8'), o1('\xC9'), o1('\xCA'),
-     o1('\xCB'), o1('\xCC'), o1('\xCD'), o1('\xCE'),
-     o1('\xCF'), o1('\xD0'), o1('\xD1'), o1('\xD3'),
-     o1('\xD4'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
-     o1('\xD8'), o1('\xD9'), o1('\xDA'), o1('\xDB'),
-     o1('\xDC'), o1('\xDD'), o1('\xDE'), o1('\xDF'),
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+to_ISO_8859_7_CE_infos[57] = {
+     o1(0xB4), o1(0xB5), o1(0xB6), o1(0xB8),
+     o1(0xB9), o1(0xBA), o1(0xBC), o1(0xBE),
+     o1(0xBF), o1(0xC0), o1(0xC1), o1(0xC2),
+     o1(0xC3), o1(0xC4), o1(0xC5), o1(0xC6),
+     o1(0xC7), o1(0xC8), o1(0xC9), o1(0xCA),
+     o1(0xCB), o1(0xCC), o1(0xCD), o1(0xCE),
+     o1(0xCF), o1(0xD0), o1(0xD1), o1(0xD3),
+     o1(0xD4), o1(0xD5), o1(0xD6), o1(0xD7),
+     o1(0xD8), o1(0xD9), o1(0xDA), o1(0xDB),
+     o1(0xDC), o1(0xDD), o1(0xDE), o1(0xDF),
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE3),
+     o1(0xE4), o1(0xE5), o1(0xE6), o1(0xE7),
+     o1(0xE8), o1(0xE9), o1(0xEA), o1(0xEB),
+     o1(0xEC), o1(0xED), o1(0xEE), o1(0xEF),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_CE = {
@@ -1466,17 +1313,17 @@
 
 static const unsigned char
 to_ISO_8859_7_CF_offsets[64] = {
-      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
+     15, 15, 15, 15, 15, 15, 15, 15,   15, 15, 15, 15, 15, 15, 15, 15,
+     15, 15, 15, 15, 15, 15, 15, 15,   15, 15, 15, 15, 15, 15, 15, 15,
+     15, 15, 15, 15, 15, 15, 15, 15,   15, 15, 15, 15, 15, 15, 15, 15,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_CF_infos[15] = {
-     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
-     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
-     o1('\xFC'), o1('\xFD'), o1('\xFE'),
+to_ISO_8859_7_CF_infos[16] = {
+     o1(0xF0), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF7),
+     o1(0xF8), o1(0xF9), o1(0xFA), o1(0xFB),
+     o1(0xFC), o1(0xFD), o1(0xFE),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_CF = {
@@ -1486,14 +1333,14 @@
 
 static const unsigned char
 to_ISO_8859_7_E2_80_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1,  0, -1, -1,    1,  2, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  0,  3,  3,    1,  2,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_E2_80_infos[3] = {
-     o1('\xAF'), o1('\xA1'), o1('\xA2'),
+to_ISO_8859_7_E2_80_infos[4] = {
+     o1(0xAF), o1(0xA1), o1(0xA2),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_E2_80 = {
@@ -1503,14 +1350,14 @@
 
 static const unsigned char
 to_ISO_8859_7_E2_82_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1,  0, -1, -1,  1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  0,  2,  2,  1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_E2_82_infos[2] = {
-     o1('\xA4'), o1('\xA5'),
+to_ISO_8859_7_E2_82_infos[3] = {
+     o1(0xA4), o1(0xA5),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_E2_82 = {
@@ -1520,14 +1367,15 @@
 
 static const unsigned char
 to_ISO_8859_7_E2_offsets[64] = {
-      0, -1,  1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      0,  2,  1,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_E2_infos[2] = {
+to_ISO_8859_7_E2_infos[3] = {
      &to_ISO_8859_7_E2_80, &to_ISO_8859_7_E2_82,
+                    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_E2 = {
@@ -1545,19 +1393,21 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1,  2,  3,  4,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  5, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  1,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  2,  3,  4,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  5,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
 };
 static const struct byte_lookup* const
-to_ISO_8859_7_infos[6] = {
-                 NOMAP, &to_ISO_8859_7_C2, &to_ISO_8859_7_CD, &to_ISO_8859_7_CE,
+to_ISO_8859_7_infos[7] = {
+                 NOMAP, &to_ISO_8859_7_C2,
+     &to_ISO_8859_7_CD, &to_ISO_8859_7_CE,
      &to_ISO_8859_7_CF, &to_ISO_8859_7_E2,
+                 UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_7 = {
@@ -1577,62 +1427,62 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
      17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, -1, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
-     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, 63,
+     33, 93, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
+     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 93,
+     93, 93, 93, 93, 93, 93, 93, 93,   93, 93, 93, 93, 93, 93, 93, 93,
+     93, 93, 93, 93, 93, 93, 93, 93,   93, 93, 93, 93, 93, 93, 93, 63,
      64, 65, 66, 67, 68, 69, 70, 71,   72, 73, 74, 75, 76, 77, 78, 79,
-     80, 81, 82, 83, 84, 85, 86, 87,   88, 89, 90, -1, -1, 91, 92, -1,
+     80, 81, 82, 83, 84, 85, 86, 87,   88, 89, 90, 93, 93, 91, 92, 93,
 };
 static const struct byte_lookup* const
-from_ISO_8859_8_infos[93] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-            o2('\xC2','\xA2'),        o2('\xC2','\xA3'),
-            o2('\xC2','\xA4'),        o2('\xC2','\xA5'),
-            o2('\xC2','\xA6'),        o2('\xC2','\xA7'),
-            o2('\xC2','\xA8'),        o2('\xC2','\xA9'),
-            o2('\xC3','\x97'),        o2('\xC2','\xAB'),
-            o2('\xC2','\xAC'),        o2('\xC2','\xAD'),
-            o2('\xC2','\xAE'),        o2('\xC2','\xAF'),
-            o2('\xC2','\xB0'),        o2('\xC2','\xB1'),
-            o2('\xC2','\xB2'),        o2('\xC2','\xB3'),
-            o2('\xC2','\xB4'),        o2('\xC2','\xB5'),
-            o2('\xC2','\xB6'),        o2('\xC2','\xB7'),
-            o2('\xC2','\xB8'),        o2('\xC2','\xB9'),
-            o2('\xC3','\xB7'),        o2('\xC2','\xBB'),
-            o2('\xC2','\xBC'),        o2('\xC2','\xBD'),
-            o2('\xC2','\xBE'), o3('\xE2','\x80','\x97'),
-            o2('\xD7','\x90'),        o2('\xD7','\x91'),
-            o2('\xD7','\x92'),        o2('\xD7','\x93'),
-            o2('\xD7','\x94'),        o2('\xD7','\x95'),
-            o2('\xD7','\x96'),        o2('\xD7','\x97'),
-            o2('\xD7','\x98'),        o2('\xD7','\x99'),
-            o2('\xD7','\x9A'),        o2('\xD7','\x9B'),
-            o2('\xD7','\x9C'),        o2('\xD7','\x9D'),
-            o2('\xD7','\x9E'),        o2('\xD7','\x9F'),
-            o2('\xD7','\xA0'),        o2('\xD7','\xA1'),
-            o2('\xD7','\xA2'),        o2('\xD7','\xA3'),
-            o2('\xD7','\xA4'),        o2('\xD7','\xA5'),
-            o2('\xD7','\xA6'),        o2('\xD7','\xA7'),
-            o2('\xD7','\xA8'),        o2('\xD7','\xA9'),
-            o2('\xD7','\xAA'), o3('\xE2','\x80','\x8E'),
-     o3('\xE2','\x80','\x8F'),
+from_ISO_8859_8_infos[94] = {
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+          o2(0xC2,0xA2),      o2(0xC2,0xA3),
+          o2(0xC2,0xA4),      o2(0xC2,0xA5),
+          o2(0xC2,0xA6),      o2(0xC2,0xA7),
+          o2(0xC2,0xA8),      o2(0xC2,0xA9),
+          o2(0xC3,0x97),      o2(0xC2,0xAB),
+          o2(0xC2,0xAC),      o2(0xC2,0xAD),
+          o2(0xC2,0xAE),      o2(0xC2,0xAF),
+          o2(0xC2,0xB0),      o2(0xC2,0xB1),
+          o2(0xC2,0xB2),      o2(0xC2,0xB3),
+          o2(0xC2,0xB4),      o2(0xC2,0xB5),
+          o2(0xC2,0xB6),      o2(0xC2,0xB7),
+          o2(0xC2,0xB8),      o2(0xC2,0xB9),
+          o2(0xC3,0xB7),      o2(0xC2,0xBB),
+          o2(0xC2,0xBC),      o2(0xC2,0xBD),
+          o2(0xC2,0xBE), o3(0xE2,0x80,0x97),
+          o2(0xD7,0x90),      o2(0xD7,0x91),
+          o2(0xD7,0x92),      o2(0xD7,0x93),
+          o2(0xD7,0x94),      o2(0xD7,0x95),
+          o2(0xD7,0x96),      o2(0xD7,0x97),
+          o2(0xD7,0x98),      o2(0xD7,0x99),
+          o2(0xD7,0x9A),      o2(0xD7,0x9B),
+          o2(0xD7,0x9C),      o2(0xD7,0x9D),
+          o2(0xD7,0x9E),      o2(0xD7,0x9F),
+          o2(0xD7,0xA0),      o2(0xD7,0xA1),
+          o2(0xD7,0xA2),      o2(0xD7,0xA3),
+          o2(0xD7,0xA4),      o2(0xD7,0xA5),
+          o2(0xD7,0xA6),      o2(0xD7,0xA7),
+          o2(0xD7,0xA8),      o2(0xD7,0xA9),
+          o2(0xD7,0xAA), o3(0xE2,0x80,0x8E),
+     o3(0xE2,0x80,0x8F),              UNDEF,
 };
 const BYTE_LOOKUP
 from_ISO_8859_8 = {
@@ -1644,26 +1494,27 @@
 to_ISO_8859_8_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, 33, 34, 35, 36, 37, 38,   39, 40, -1, 41, 42, 43, 44, 45,
-     46, 47, 48, 49, 50, 51, 52, 53,   54, 55, -1, 56, 57, 58, 59, -1,
+     32, 60, 33, 34, 35, 36, 37, 38,   39, 40, 60, 41, 42, 43, 44, 45,
+     46, 47, 48, 49, 50, 51, 52, 53,   54, 55, 60, 56, 57, 58, 59, 60,
 };
 static const struct byte_lookup* const
-to_ISO_8859_8_C2_infos[60] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
-     o1('\xA5'), o1('\xA6'), o1('\xA7'), o1('\xA8'),
-     o1('\xA9'), o1('\xAB'), o1('\xAC'), o1('\xAD'),
-     o1('\xAE'), o1('\xAF'), o1('\xB0'), o1('\xB1'),
-     o1('\xB2'), o1('\xB3'), o1('\xB4'), o1('\xB5'),
-     o1('\xB6'), o1('\xB7'), o1('\xB8'), o1('\xB9'),
-     o1('\xBB'), o1('\xBC'), o1('\xBD'), o1('\xBE'),
+to_ISO_8859_8_C2_infos[61] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA2), o1(0xA3), o1(0xA4),
+     o1(0xA5), o1(0xA6), o1(0xA7), o1(0xA8),
+     o1(0xA9), o1(0xAB), o1(0xAC), o1(0xAD),
+     o1(0xAE), o1(0xAF), o1(0xB0), o1(0xB1),
+     o1(0xB2), o1(0xB3), o1(0xB4), o1(0xB5),
+     o1(0xB6), o1(0xB7), o1(0xB8), o1(0xB9),
+     o1(0xBB), o1(0xBC), o1(0xBD), o1(0xBE),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_C2 = {
@@ -1673,14 +1524,14 @@
 
 static const unsigned char
 to_ISO_8859_8_C3_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1,  0,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1,  1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  0,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  1,    2,  2,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_8_C3_infos[2] = {
-     o1('\xAA'), o1('\xBA'),
+to_ISO_8859_8_C3_infos[3] = {
+     o1(0xAA), o1(0xBA),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_C3 = {
@@ -1690,20 +1541,20 @@
 
 static const unsigned char
 to_ISO_8859_8_D7_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     27, 27, 27, 27, 27, 27, 27, 27,   27, 27, 27, 27, 27, 27, 27, 27,
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 27, 27, 27, 27,
+     27, 27, 27, 27, 27, 27, 27, 27,   27, 27, 27, 27, 27, 27, 27, 27,
 };
 static const struct byte_lookup* const
-to_ISO_8859_8_D7_infos[27] = {
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
-     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
-     o1('\xF8'), o1('\xF9'), o1('\xFA'),
+to_ISO_8859_8_D7_infos[28] = {
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE3),
+     o1(0xE4), o1(0xE5), o1(0xE6), o1(0xE7),
+     o1(0xE8), o1(0xE9), o1(0xEA), o1(0xEB),
+     o1(0xEC), o1(0xED), o1(0xEE), o1(0xEF),
+     o1(0xF0), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF7),
+     o1(0xF8), o1(0xF9), o1(0xFA),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_D7 = {
@@ -1713,14 +1564,14 @@
 
 static const unsigned char
 to_ISO_8859_8_E2_80_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1,  0,  1,
-     -1, -1, -1, -1, -1, -1, -1,  2,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  0,  1,
+      3,  3,  3,  3,  3,  3,  3,  2,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
 };
 static const struct byte_lookup* const
-to_ISO_8859_8_E2_80_infos[3] = {
-     o1('\xFD'), o1('\xFE'), o1('\xDF'),
+to_ISO_8859_8_E2_80_infos[4] = {
+     o1(0xFD), o1(0xFE), o1(0xDF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_E2_80 = {
@@ -1729,19 +1580,21 @@
 };
 
 static const unsigned char
-to_ISO_8859_8_E2_offsets[64] = {
-      0, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+to_ISO_8859_13_E2_offsets[64] = {
+  /* used from to_ISO_8859_13_E2 */
+  /* used from to_ISO_8859_8_E2 */
+      0,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_8_E2_infos[1] = {
-     &to_ISO_8859_8_E2_80,
+to_ISO_8859_8_E2_infos[2] = {
+     &to_ISO_8859_8_E2_80,                UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_E2 = {
-    to_ISO_8859_8_E2_offsets,
+    to_ISO_8859_13_E2_offsets,
     to_ISO_8859_8_E2_infos
 };
 
@@ -1755,19 +1608,20 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1,  3,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  4, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  1,  2,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  3,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  4,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
 };
 static const struct byte_lookup* const
-to_ISO_8859_8_infos[5] = {
-                 NOMAP, &to_ISO_8859_8_C2, &to_ISO_8859_8_C3, &to_ISO_8859_8_D7,
-     &to_ISO_8859_8_E2,
+to_ISO_8859_8_infos[6] = {
+                 NOMAP, &to_ISO_8859_8_C2,
+     &to_ISO_8859_8_C3, &to_ISO_8859_8_D7,
+     &to_ISO_8859_8_E2,             UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_8 = {
@@ -1775,155 +1629,87 @@
     to_ISO_8859_8_infos
 };
 
-static const unsigned char
-from_ISO_8859_9_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
-     17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, 47, 48,
-     49, 50, 51, 52, 53, 54, 55, 56,   57, 58, 59, 60, 61, 62, 63, 64,
-     65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91, 92, 93, 94, 95, 96,
-     97, 98, 99,100,101,102,103,104,  105,106,107,108,109,110,111,112,
-    113,114,115,116,117,118,119,120,  121,122,123,124,125,126,127,128,
-};
 static const struct byte_lookup* const
 from_ISO_8859_9_infos[129] = {
-                      NOMAP, o2('\xC2','\x80'),
-     o2('\xC2','\x81'), o2('\xC2','\x82'),
-     o2('\xC2','\x83'), o2('\xC2','\x84'),
-     o2('\xC2','\x85'), o2('\xC2','\x86'),
-     o2('\xC2','\x87'), o2('\xC2','\x88'),
-     o2('\xC2','\x89'), o2('\xC2','\x8A'),
-     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
-     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
-     o2('\xC2','\x8F'), o2('\xC2','\x90'),
-     o2('\xC2','\x91'), o2('\xC2','\x92'),
-     o2('\xC2','\x93'), o2('\xC2','\x94'),
-     o2('\xC2','\x95'), o2('\xC2','\x96'),
-     o2('\xC2','\x97'), o2('\xC2','\x98'),
-     o2('\xC2','\x99'), o2('\xC2','\x9A'),
-     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
-     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
-     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
-     o2('\xC2','\xA1'), o2('\xC2','\xA2'),
-     o2('\xC2','\xA3'), o2('\xC2','\xA4'),
-     o2('\xC2','\xA5'), o2('\xC2','\xA6'),
-     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
-     o2('\xC2','\xA9'), o2('\xC2','\xAA'),
-     o2('\xC2','\xAB'), o2('\xC2','\xAC'),
-     o2('\xC2','\xAD'), o2('\xC2','\xAE'),
-     o2('\xC2','\xAF'), o2('\xC2','\xB0'),
-     o2('\xC2','\xB1'), o2('\xC2','\xB2'),
-     o2('\xC2','\xB3'), o2('\xC2','\xB4'),
-     o2('\xC2','\xB5'), o2('\xC2','\xB6'),
-     o2('\xC2','\xB7'), o2('\xC2','\xB8'),
-     o2('\xC2','\xB9'), o2('\xC2','\xBA'),
-     o2('\xC2','\xBB'), o2('\xC2','\xBC'),
-     o2('\xC2','\xBD'), o2('\xC2','\xBE'),
-     o2('\xC2','\xBF'), o2('\xC3','\x80'),
-     o2('\xC3','\x81'), o2('\xC3','\x82'),
-     o2('\xC3','\x83'), o2('\xC3','\x84'),
-     o2('\xC3','\x85'), o2('\xC3','\x86'),
-     o2('\xC3','\x87'), o2('\xC3','\x88'),
-     o2('\xC3','\x89'), o2('\xC3','\x8A'),
-     o2('\xC3','\x8B'), o2('\xC3','\x8C'),
-     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
-     o2('\xC3','\x8F'), o2('\xC4','\x9E'),
-     o2('\xC3','\x91'), o2('\xC3','\x92'),
-     o2('\xC3','\x93'), o2('\xC3','\x94'),
-     o2('\xC3','\x95'), o2('\xC3','\x96'),
-     o2('\xC3','\x97'), o2('\xC3','\x98'),
-     o2('\xC3','\x99'), o2('\xC3','\x9A'),
-     o2('\xC3','\x9B'), o2('\xC3','\x9C'),
-     o2('\xC4','\xB0'), o2('\xC5','\x9E'),
-     o2('\xC3','\x9F'), o2('\xC3','\xA0'),
-     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
-     o2('\xC3','\xA3'), o2('\xC3','\xA4'),
-     o2('\xC3','\xA5'), o2('\xC3','\xA6'),
-     o2('\xC3','\xA7'), o2('\xC3','\xA8'),
-     o2('\xC3','\xA9'), o2('\xC3','\xAA'),
-     o2('\xC3','\xAB'), o2('\xC3','\xAC'),
-     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
-     o2('\xC3','\xAF'), o2('\xC4','\x9F'),
-     o2('\xC3','\xB1'), o2('\xC3','\xB2'),
-     o2('\xC3','\xB3'), o2('\xC3','\xB4'),
-     o2('\xC3','\xB5'), o2('\xC3','\xB6'),
-     o2('\xC3','\xB7'), o2('\xC3','\xB8'),
-     o2('\xC3','\xB9'), o2('\xC3','\xBA'),
-     o2('\xC3','\xBB'), o2('\xC3','\xBC'),
-     o2('\xC4','\xB1'), o2('\xC5','\x9F'),
-     o2('\xC3','\xBF'),
+             NOMAP, o2(0xC2,0x80), o2(0xC2,0x81), o2(0xC2,0x82),
+     o2(0xC2,0x83), o2(0xC2,0x84), o2(0xC2,0x85), o2(0xC2,0x86),
+     o2(0xC2,0x87), o2(0xC2,0x88), o2(0xC2,0x89), o2(0xC2,0x8A),
+     o2(0xC2,0x8B), o2(0xC2,0x8C), o2(0xC2,0x8D), o2(0xC2,0x8E),
+     o2(0xC2,0x8F), o2(0xC2,0x90), o2(0xC2,0x91), o2(0xC2,0x92),
+     o2(0xC2,0x93), o2(0xC2,0x94), o2(0xC2,0x95), o2(0xC2,0x96),
+     o2(0xC2,0x97), o2(0xC2,0x98), o2(0xC2,0x99), o2(0xC2,0x9A),
+     o2(0xC2,0x9B), o2(0xC2,0x9C), o2(0xC2,0x9D), o2(0xC2,0x9E),
+     o2(0xC2,0x9F), o2(0xC2,0xA0), o2(0xC2,0xA1), o2(0xC2,0xA2),
+     o2(0xC2,0xA3), o2(0xC2,0xA4), o2(0xC2,0xA5), o2(0xC2,0xA6),
+     o2(0xC2,0xA7), o2(0xC2,0xA8), o2(0xC2,0xA9), o2(0xC2,0xAA),
+     o2(0xC2,0xAB), o2(0xC2,0xAC), o2(0xC2,0xAD), o2(0xC2,0xAE),
+     o2(0xC2,0xAF), o2(0xC2,0xB0), o2(0xC2,0xB1), o2(0xC2,0xB2),
+     o2(0xC2,0xB3), o2(0xC2,0xB4), o2(0xC2,0xB5), o2(0xC2,0xB6),
+     o2(0xC2,0xB7), o2(0xC2,0xB8), o2(0xC2,0xB9), o2(0xC2,0xBA),
+     o2(0xC2,0xBB), o2(0xC2,0xBC), o2(0xC2,0xBD), o2(0xC2,0xBE),
+     o2(0xC2,0xBF), o2(0xC3,0x80), o2(0xC3,0x81), o2(0xC3,0x82),
+     o2(0xC3,0x83), o2(0xC3,0x84), o2(0xC3,0x85), o2(0xC3,0x86),
+     o2(0xC3,0x87), o2(0xC3,0x88), o2(0xC3,0x89), o2(0xC3,0x8A),
+     o2(0xC3,0x8B), o2(0xC3,0x8C), o2(0xC3,0x8D), o2(0xC3,0x8E),
+     o2(0xC3,0x8F), o2(0xC4,0x9E), o2(0xC3,0x91), o2(0xC3,0x92),
+     o2(0xC3,0x93), o2(0xC3,0x94), o2(0xC3,0x95), o2(0xC3,0x96),
+     o2(0xC3,0x97), o2(0xC3,0x98), o2(0xC3,0x99), o2(0xC3,0x9A),
+     o2(0xC3,0x9B), o2(0xC3,0x9C), o2(0xC4,0xB0), o2(0xC5,0x9E),
+     o2(0xC3,0x9F), o2(0xC3,0xA0), o2(0xC3,0xA1), o2(0xC3,0xA2),
+     o2(0xC3,0xA3), o2(0xC3,0xA4), o2(0xC3,0xA5), o2(0xC3,0xA6),
+     o2(0xC3,0xA7), o2(0xC3,0xA8), o2(0xC3,0xA9), o2(0xC3,0xAA),
+     o2(0xC3,0xAB), o2(0xC3,0xAC), o2(0xC3,0xAD), o2(0xC3,0xAE),
+     o2(0xC3,0xAF), o2(0xC4,0x9F), o2(0xC3,0xB1), o2(0xC3,0xB2),
+     o2(0xC3,0xB3), o2(0xC3,0xB4), o2(0xC3,0xB5), o2(0xC3,0xB6),
+     o2(0xC3,0xB7), o2(0xC3,0xB8), o2(0xC3,0xB9), o2(0xC3,0xBA),
+     o2(0xC3,0xBB), o2(0xC3,0xBC), o2(0xC4,0xB1), o2(0xC5,0x9F),
+     o2(0xC3,0xBF),
 };
 const BYTE_LOOKUP
 from_ISO_8859_9 = {
-    from_ISO_8859_9_offsets,
+    from_ISO_8859_1_offsets,
     from_ISO_8859_9_infos
 };
 
 static const unsigned char
-to_ISO_8859_9_C2_offsets[64] = {
+to_ISO_8859_15_C3_offsets[64] = {
+  /* used from to_ISO_8859_15_C3 */
+  /* used from to_ISO_8859_9_C2 */
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
      32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
      48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
 };
-static const struct byte_lookup* const
-to_ISO_8859_9_C2_infos[64] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA1'), o1('\xA2'), o1('\xA3'),
-     o1('\xA4'), o1('\xA5'), o1('\xA6'), o1('\xA7'),
-     o1('\xA8'), o1('\xA9'), o1('\xAA'), o1('\xAB'),
-     o1('\xAC'), o1('\xAD'), o1('\xAE'), o1('\xAF'),
-     o1('\xB0'), o1('\xB1'), o1('\xB2'), o1('\xB3'),
-     o1('\xB4'), o1('\xB5'), o1('\xB6'), o1('\xB7'),
-     o1('\xB8'), o1('\xB9'), o1('\xBA'), o1('\xBB'),
-     o1('\xBC'), o1('\xBD'), o1('\xBE'), o1('\xBF'),
-};
 static const BYTE_LOOKUP
 to_ISO_8859_9_C2 = {
-    to_ISO_8859_9_C2_offsets,
-    to_ISO_8859_9_C2_infos
+    to_ISO_8859_15_C3_offsets,
+    to_ISO_8859_1_C2_infos
 };
 
 static const unsigned char
 to_ISO_8859_9_C3_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     -1, 16, 17, 18, 19, 20, 21, 22,   23, 24, 25, 26, 27, -1, -1, 28,
+     58, 16, 17, 18, 19, 20, 21, 22,   23, 24, 25, 26, 27, 58, 58, 28,
      29, 30, 31, 32, 33, 34, 35, 36,   37, 38, 39, 40, 41, 42, 43, 44,
-     -1, 45, 46, 47, 48, 49, 50, 51,   52, 53, 54, 55, 56, -1, -1, 57,
+     58, 45, 46, 47, 48, 49, 50, 51,   52, 53, 54, 55, 56, 58, 58, 57,
 };
 static const struct byte_lookup* const
-to_ISO_8859_9_C3_infos[58] = {
-     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
-     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
-     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
-     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
-     o1('\xD1'), o1('\xD2'), o1('\xD3'), o1('\xD4'),
-     o1('\xD5'), o1('\xD6'), o1('\xD7'), o1('\xD8'),
-     o1('\xD9'), o1('\xDA'), o1('\xDB'), o1('\xDC'),
-     o1('\xDF'), o1('\xE0'), o1('\xE1'), o1('\xE2'),
-     o1('\xE3'), o1('\xE4'), o1('\xE5'), o1('\xE6'),
-     o1('\xE7'), o1('\xE8'), o1('\xE9'), o1('\xEA'),
-     o1('\xEB'), o1('\xEC'), o1('\xED'), o1('\xEE'),
-     o1('\xEF'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
-     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
-     o1('\xFC'), o1('\xFF'),
+to_ISO_8859_9_C3_infos[59] = {
+     o1(0xC0), o1(0xC1), o1(0xC2), o1(0xC3),
+     o1(0xC4), o1(0xC5), o1(0xC6), o1(0xC7),
+     o1(0xC8), o1(0xC9), o1(0xCA), o1(0xCB),
+     o1(0xCC), o1(0xCD), o1(0xCE), o1(0xCF),
+     o1(0xD1), o1(0xD2), o1(0xD3), o1(0xD4),
+     o1(0xD5), o1(0xD6), o1(0xD7), o1(0xD8),
+     o1(0xD9), o1(0xDA), o1(0xDB), o1(0xDC),
+     o1(0xDF), o1(0xE0), o1(0xE1), o1(0xE2),
+     o1(0xE3), o1(0xE4), o1(0xE5), o1(0xE6),
+     o1(0xE7), o1(0xE8), o1(0xE9), o1(0xEA),
+     o1(0xEB), o1(0xEC), o1(0xED), o1(0xEE),
+     o1(0xEF), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF7),
+     o1(0xF8), o1(0xF9), o1(0xFA), o1(0xFB),
+     o1(0xFC), o1(0xFF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C3 = {
@@ -1933,14 +1719,15 @@
 
 static const unsigned char
 to_ISO_8859_9_C4_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1,  0,  1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-      2,  3, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  0,  1,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      2,  3,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
 };
 static const struct byte_lookup* const
-to_ISO_8859_9_C4_infos[4] = {
-     o1('\xD0'), o1('\xF0'), o1('\xDD'), o1('\xFD'),
+to_ISO_8859_9_C4_infos[5] = {
+     o1(0xD0), o1(0xF0), o1(0xDD), o1(0xFD),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C4 = {
@@ -1950,14 +1737,14 @@
 
 static const unsigned char
 to_ISO_8859_9_C5_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1,  0,  1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  0,  1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_9_C5_infos[2] = {
-     o1('\xDE'), o1('\xFE'),
+to_ISO_8859_9_C5_infos[3] = {
+     o1(0xDE), o1(0xFE),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C5 = {
@@ -1975,19 +1762,20 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  1,  2,  3,  4,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
 };
 static const struct byte_lookup* const
-to_ISO_8859_9_infos[5] = {
-                 NOMAP, &to_ISO_8859_9_C2, &to_ISO_8859_9_C3, &to_ISO_8859_9_C4,
-     &to_ISO_8859_9_C5,
+to_ISO_8859_9_infos[6] = {
+                 NOMAP, &to_ISO_8859_9_C2,
+     &to_ISO_8859_9_C3, &to_ISO_8859_9_C4,
+     &to_ISO_8859_9_C5,             UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_9 = {
@@ -1995,92 +1783,73 @@
     to_ISO_8859_9_infos
 };
 
-static const unsigned char
-from_ISO_8859_10_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
-     17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, 47, 48,
-     49, 50, 51, 52, 53, 54, 55, 56,   57, 58, 59, 60, 61, 62, 63, 64,
-     65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91, 92, 93, 94, 95, 96,
-     97, 98, 99,100,101,102,103,104,  105,106,107,108,109,110,111,112,
-    113,114,115,116,117,118,119,120,  121,122,123,124,125,126,127,128,
-};
 static const struct byte_lookup* const
 from_ISO_8859_10_infos[129] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-            o2('\xC4','\x84'),        o2('\xC4','\x92'),
-            o2('\xC4','\xA2'),        o2('\xC4','\xAA'),
-            o2('\xC4','\xA8'),        o2('\xC4','\xB6'),
-            o2('\xC2','\xA7'),        o2('\xC4','\xBB'),
-            o2('\xC4','\x90'),        o2('\xC5','\xA0'),
-            o2('\xC5','\xA6'),        o2('\xC5','\xBD'),
-            o2('\xC2','\xAD'),        o2('\xC5','\xAA'),
-            o2('\xC5','\x8A'),        o2('\xC2','\xB0'),
-            o2('\xC4','\x85'),        o2('\xC4','\x93'),
-            o2('\xC4','\xA3'),        o2('\xC4','\xAB'),
-            o2('\xC4','\xA9'),        o2('\xC4','\xB7'),
-            o2('\xC2','\xB7'),        o2('\xC4','\xBC'),
-            o2('\xC4','\x91'),        o2('\xC5','\xA1'),
-            o2('\xC5','\xA7'),        o2('\xC5','\xBE'),
-     o3('\xE2','\x80','\x95'),        o2('\xC5','\xAB'),
-            o2('\xC5','\x8B'),        o2('\xC4','\x80'),
-            o2('\xC3','\x81'),        o2('\xC3','\x82'),
-            o2('\xC3','\x83'),        o2('\xC3','\x84'),
-            o2('\xC3','\x85'),        o2('\xC3','\x86'),
-            o2('\xC4','\xAE'),        o2('\xC4','\x8C'),
-            o2('\xC3','\x89'),        o2('\xC4','\x98'),
-            o2('\xC3','\x8B'),        o2('\xC4','\x96'),
-            o2('\xC3','\x8D'),        o2('\xC3','\x8E'),
-            o2('\xC3','\x8F'),        o2('\xC3','\x90'),
-            o2('\xC5','\x85'),        o2('\xC5','\x8C'),
-            o2('\xC3','\x93'),        o2('\xC3','\x94'),
-            o2('\xC3','\x95'),        o2('\xC3','\x96'),
-            o2('\xC5','\xA8'),        o2('\xC3','\x98'),
-            o2('\xC5','\xB2'),        o2('\xC3','\x9A'),
-            o2('\xC3','\x9B'),        o2('\xC3','\x9C'),
-            o2('\xC3','\x9D'),        o2('\xC3','\x9E'),
-            o2('\xC3','\x9F'),        o2('\xC4','\x81'),
-            o2('\xC3','\xA1'),        o2('\xC3','\xA2'),
-            o2('\xC3','\xA3'),        o2('\xC3','\xA4'),
-            o2('\xC3','\xA5'),        o2('\xC3','\xA6'),
-            o2('\xC4','\xAF'),        o2('\xC4','\x8D'),
-            o2('\xC3','\xA9'),        o2('\xC4','\x99'),
-            o2('\xC3','\xAB'),        o2('\xC4','\x97'),
-            o2('\xC3','\xAD'),        o2('\xC3','\xAE'),
-            o2('\xC3','\xAF'),        o2('\xC3','\xB0'),
-            o2('\xC5','\x86'),        o2('\xC5','\x8D'),
-            o2('\xC3','\xB3'),        o2('\xC3','\xB4'),
-            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
-            o2('\xC5','\xA9'),        o2('\xC3','\xB8'),
-            o2('\xC5','\xB3'),        o2('\xC3','\xBA'),
-            o2('\xC3','\xBB'),        o2('\xC3','\xBC'),
-            o2('\xC3','\xBD'),        o2('\xC3','\xBE'),
-            o2('\xC4','\xB8'),
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+          o2(0xC4,0x84),      o2(0xC4,0x92),
+          o2(0xC4,0xA2),      o2(0xC4,0xAA),
+          o2(0xC4,0xA8),      o2(0xC4,0xB6),
+          o2(0xC2,0xA7),      o2(0xC4,0xBB),
+          o2(0xC4,0x90),      o2(0xC5,0xA0),
+          o2(0xC5,0xA6),      o2(0xC5,0xBD),
+          o2(0xC2,0xAD),      o2(0xC5,0xAA),
+          o2(0xC5,0x8A),      o2(0xC2,0xB0),
+          o2(0xC4,0x85),      o2(0xC4,0x93),
+          o2(0xC4,0xA3),      o2(0xC4,0xAB),
+          o2(0xC4,0xA9),      o2(0xC4,0xB7),
+          o2(0xC2,0xB7),      o2(0xC4,0xBC),
+          o2(0xC4,0x91),      o2(0xC5,0xA1),
+          o2(0xC5,0xA7),      o2(0xC5,0xBE),
+     o3(0xE2,0x80,0x95),      o2(0xC5,0xAB),
+          o2(0xC5,0x8B),      o2(0xC4,0x80),
+          o2(0xC3,0x81),      o2(0xC3,0x82),
+          o2(0xC3,0x83),      o2(0xC3,0x84),
+          o2(0xC3,0x85),      o2(0xC3,0x86),
+          o2(0xC4,0xAE),      o2(0xC4,0x8C),
+          o2(0xC3,0x89),      o2(0xC4,0x98),
+          o2(0xC3,0x8B),      o2(0xC4,0x96),
+          o2(0xC3,0x8D),      o2(0xC3,0x8E),
+          o2(0xC3,0x8F),      o2(0xC3,0x90),
+          o2(0xC5,0x85),      o2(0xC5,0x8C),
+          o2(0xC3,0x93),      o2(0xC3,0x94),
+          o2(0xC3,0x95),      o2(0xC3,0x96),
+          o2(0xC5,0xA8),      o2(0xC3,0x98),
+          o2(0xC5,0xB2),      o2(0xC3,0x9A),
+          o2(0xC3,0x9B),      o2(0xC3,0x9C),
+          o2(0xC3,0x9D),      o2(0xC3,0x9E),
+          o2(0xC3,0x9F),      o2(0xC4,0x81),
+          o2(0xC3,0xA1),      o2(0xC3,0xA2),
+          o2(0xC3,0xA3),      o2(0xC3,0xA4),
+          o2(0xC3,0xA5),      o2(0xC3,0xA6),
+          o2(0xC4,0xAF),      o2(0xC4,0x8D),
+          o2(0xC3,0xA9),      o2(0xC4,0x99),
+          o2(0xC3,0xAB),      o2(0xC4,0x97),
+          o2(0xC3,0xAD),      o2(0xC3,0xAE),
+          o2(0xC3,0xAF),      o2(0xC3,0xB0),
+          o2(0xC5,0x86),      o2(0xC5,0x8D),
+          o2(0xC3,0xB3),      o2(0xC3,0xB4),
+          o2(0xC3,0xB5),      o2(0xC3,0xB6),
+          o2(0xC5,0xA9),      o2(0xC3,0xB8),
+          o2(0xC5,0xB3),      o2(0xC3,0xBA),
+          o2(0xC3,0xBB),      o2(0xC3,0xBC),
+          o2(0xC3,0xBD),      o2(0xC3,0xBE),
+          o2(0xC4,0xB8),
 };
 const BYTE_LOOKUP
 from_ISO_8859_10 = {
@@ -2092,21 +1861,21 @@
 to_ISO_8859_10_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, -1, -1, -1, -1, 33,   -1, -1, -1, -1, -1, 34, -1, -1,
-     35, -1, -1, -1, -1, -1, -1, 36,   -1, -1, -1, -1, -1, -1, -1, -1,
+     32, 37, 37, 37, 37, 37, 37, 33,   37, 37, 37, 37, 37, 34, 37, 37,
+     35, 37, 37, 37, 37, 37, 37, 36,   37, 37, 37, 37, 37, 37, 37, 37,
 };
 static const struct byte_lookup* const
-to_ISO_8859_10_C2_infos[37] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA7'), o1('\xAD'), o1('\xB0'),
-     o1('\xB7'),
+to_ISO_8859_10_C2_infos[38] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA7), o1(0xAD), o1(0xB0),
+     o1(0xB7),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C2 = {
@@ -2116,25 +1885,25 @@
 
 static const unsigned char
 to_ISO_8859_10_C3_offsets[64] = {
-     -1,  0,  1,  2,  3,  4,  5, -1,   -1,  6, -1,  7, -1,  8,  9, 10,
-     11, -1, -1, 12, 13, 14, 15, -1,   16, -1, 17, 18, 19, 20, 21, 22,
-     -1, 23, 24, 25, 26, 27, 28, -1,   -1, 29, -1, 30, -1, 31, 32, 33,
-     34, -1, -1, 35, 36, 37, 38, -1,   39, -1, 40, 41, 42, 43, 44, -1,
+     45,  0,  1,  2,  3,  4,  5, 45,   45,  6, 45,  7, 45,  8,  9, 10,
+     11, 45, 45, 12, 13, 14, 15, 45,   16, 45, 17, 18, 19, 20, 21, 22,
+     45, 23, 24, 25, 26, 27, 28, 45,   45, 29, 45, 30, 45, 31, 32, 33,
+     34, 45, 45, 35, 36, 37, 38, 45,   39, 45, 40, 41, 42, 43, 44, 45,
 };
 static const struct byte_lookup* const
-to_ISO_8859_10_C3_infos[45] = {
-     o1('\xC1'), o1('\xC2'), o1('\xC3'), o1('\xC4'),
-     o1('\xC5'), o1('\xC6'), o1('\xC9'), o1('\xCB'),
-     o1('\xCD'), o1('\xCE'), o1('\xCF'), o1('\xD0'),
-     o1('\xD3'), o1('\xD4'), o1('\xD5'), o1('\xD6'),
-     o1('\xD8'), o1('\xDA'), o1('\xDB'), o1('\xDC'),
-     o1('\xDD'), o1('\xDE'), o1('\xDF'), o1('\xE1'),
-     o1('\xE2'), o1('\xE3'), o1('\xE4'), o1('\xE5'),
-     o1('\xE6'), o1('\xE9'), o1('\xEB'), o1('\xED'),
-     o1('\xEE'), o1('\xEF'), o1('\xF0'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF8'),
-     o1('\xFA'), o1('\xFB'), o1('\xFC'), o1('\xFD'),
-     o1('\xFE'),
+to_ISO_8859_10_C3_infos[46] = {
+     o1(0xC1), o1(0xC2), o1(0xC3), o1(0xC4),
+     o1(0xC5), o1(0xC6), o1(0xC9), o1(0xCB),
+     o1(0xCD), o1(0xCE), o1(0xCF), o1(0xD0),
+     o1(0xD3), o1(0xD4), o1(0xD5), o1(0xD6),
+     o1(0xD8), o1(0xDA), o1(0xDB), o1(0xDC),
+     o1(0xDD), o1(0xDE), o1(0xDF), o1(0xE1),
+     o1(0xE2), o1(0xE3), o1(0xE4), o1(0xE5),
+     o1(0xE6), o1(0xE9), o1(0xEB), o1(0xED),
+     o1(0xEE), o1(0xEF), o1(0xF0), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF8),
+     o1(0xFA), o1(0xFB), o1(0xFC), o1(0xFD),
+     o1(0xFE),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C3 = {
@@ -2142,22 +1911,15 @@
     to_ISO_8859_10_C3_infos
 };
 
-static const unsigned char
-to_ISO_8859_10_C4_offsets[64] = {
-      0,  1, -1, -1,  2,  3, -1, -1,   -1, -1, -1, -1,  4,  5, -1, -1,
-      6,  7,  8,  9, -1, -1, 10, 11,   12, 13, -1, -1, -1, -1, -1, -1,
-     -1, -1, 14, 15, -1, -1, -1, -1,   16, 17, 18, 19, -1, -1, 20, 21,
-     -1, -1, -1, -1, -1, -1, 22, 23,   24, -1, -1, 25, 26, -1, -1, -1,
-};
 static const struct byte_lookup* const
-to_ISO_8859_10_C4_infos[27] = {
-     o1('\xC0'), o1('\xE0'), o1('\xA1'), o1('\xB1'),
-     o1('\xC8'), o1('\xE8'), o1('\xA9'), o1('\xB9'),
-     o1('\xA2'), o1('\xB2'), o1('\xCC'), o1('\xEC'),
-     o1('\xCA'), o1('\xEA'), o1('\xA3'), o1('\xB3'),
-     o1('\xA5'), o1('\xB5'), o1('\xA4'), o1('\xB4'),
-     o1('\xC7'), o1('\xE7'), o1('\xA6'), o1('\xB6'),
-     o1('\xFF'), o1('\xA8'), o1('\xB8'),
+to_ISO_8859_10_C4_infos[28] = {
+     o1(0xC0), o1(0xE0), o1(0xA1), o1(0xB1),
+     o1(0xC8), o1(0xE8), o1(0xA9), o1(0xB9),
+     o1(0xA2), o1(0xB2), o1(0xCC), o1(0xEC),
+     o1(0xCA), o1(0xEA), o1(0xA3), o1(0xB3),
+     o1(0xA5), o1(0xB5), o1(0xA4), o1(0xB4),
+     o1(0xC7), o1(0xE7), o1(0xA6), o1(0xB6),
+     o1(0xFF), o1(0xA8), o1(0xB8),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C4 = {
@@ -2167,18 +1929,18 @@
 
 static const unsigned char
 to_ISO_8859_10_C5_offsets[64] = {
-     -1, -1, -1, -1, -1,  0,  1, -1,   -1, -1,  2,  3,  4,  5, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-      6,  7, -1, -1, -1, -1,  8,  9,   10, 11, 12, 13, -1, -1, -1, -1,
-     -1, -1, 14, 15, -1, -1, -1, -1,   -1, -1, -1, -1, -1, 16, 17, -1,
+     18, 18, 18, 18, 18,  0,  1, 18,   18, 18,  2,  3,  4,  5, 18, 18,
+     18, 18, 18, 18, 18, 18, 18, 18,   18, 18, 18, 18, 18, 18, 18, 18,
+      6,  7, 18, 18, 18, 18,  8,  9,   10, 11, 12, 13, 18, 18, 18, 18,
+     18, 18, 14, 15, 18, 18, 18, 18,   18, 18, 18, 18, 18, 16, 17, 18,
 };
 static const struct byte_lookup* const
-to_ISO_8859_10_C5_infos[18] = {
-     o1('\xD1'), o1('\xF1'), o1('\xAF'), o1('\xBF'),
-     o1('\xD2'), o1('\xF2'), o1('\xAA'), o1('\xBA'),
-     o1('\xAB'), o1('\xBB'), o1('\xD7'), o1('\xF7'),
-     o1('\xAE'), o1('\xBE'), o1('\xD9'), o1('\xF9'),
-     o1('\xAC'), o1('\xBC'),
+to_ISO_8859_10_C5_infos[19] = {
+     o1(0xD1), o1(0xF1), o1(0xAF), o1(0xBF),
+     o1(0xD2), o1(0xF2), o1(0xAA), o1(0xBA),
+     o1(0xAB), o1(0xBB), o1(0xD7), o1(0xF7),
+     o1(0xAE), o1(0xBE), o1(0xD9), o1(0xF9),
+     o1(0xAC), o1(0xBC),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C5 = {
@@ -2188,14 +1950,14 @@
 
 static const unsigned char
 to_ISO_8859_10_E2_80_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1,  0, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  0,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_10_E2_80_infos[1] = {
-     o1('\xBD'),
+to_ISO_8859_10_E2_80_infos[2] = {
+     o1(0xBD),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_E2_80 = {
@@ -2205,14 +1967,14 @@
 
 static const unsigned char
 to_ISO_8859_10_E2_offsets[64] = {
-      0, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      0,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_10_E2_infos[1] = {
-     &to_ISO_8859_10_E2_80,
+to_ISO_8859_10_E2_infos[2] = {
+     &to_ISO_8859_10_E2_80,                 UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_E2 = {
@@ -2222,6 +1984,8 @@
 
 static const unsigned char
 to_ISO_8859_10_offsets[256] = {
+  /* used from to_ISO_8859_10 */
+  /* used from to_ISO_8859_13 */
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
@@ -2230,19 +1994,21 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  5, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  1,  2,  3,  4,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  5,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
 };
 static const struct byte_lookup* const
-to_ISO_8859_10_infos[6] = {
-                  NOMAP, &to_ISO_8859_10_C2, &to_ISO_8859_10_C3, &to_ISO_8859_10_C4,
+to_ISO_8859_10_infos[7] = {
+                  NOMAP, &to_ISO_8859_10_C2,
+     &to_ISO_8859_10_C3, &to_ISO_8859_10_C4,
      &to_ISO_8859_10_C5, &to_ISO_8859_10_E2,
+                  UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_10 = {
@@ -2265,73 +2031,73 @@
      33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, 47, 48,
      49, 50, 51, 52, 53, 54, 55, 56,   57, 58, 59, 60, 61, 62, 63, 64,
      65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91, -1, -1, -1, -1, 92,
+     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91,121,121,121,121, 92,
      93, 94, 95, 96, 97, 98, 99,100,  101,102,103,104,105,106,107,108,
-    109,110,111,112,113,114,115,116,  117,118,119,120, -1, -1, -1, -1,
+    109,110,111,112,113,114,115,116,  117,118,119,120,121,121,121,121,
 };
 static const struct byte_lookup* const
-from_ISO_8859_11_infos[121] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-     o3('\xE0','\xB8','\x81'), o3('\xE0','\xB8','\x82'),
-     o3('\xE0','\xB8','\x83'), o3('\xE0','\xB8','\x84'),
-     o3('\xE0','\xB8','\x85'), o3('\xE0','\xB8','\x86'),
-     o3('\xE0','\xB8','\x87'), o3('\xE0','\xB8','\x88'),
-     o3('\xE0','\xB8','\x89'), o3('\xE0','\xB8','\x8A'),
-     o3('\xE0','\xB8','\x8B'), o3('\xE0','\xB8','\x8C'),
-     o3('\xE0','\xB8','\x8D'), o3('\xE0','\xB8','\x8E'),
-     o3('\xE0','\xB8','\x8F'), o3('\xE0','\xB8','\x90'),
-     o3('\xE0','\xB8','\x91'), o3('\xE0','\xB8','\x92'),
-     o3('\xE0','\xB8','\x93'), o3('\xE0','\xB8','\x94'),
-     o3('\xE0','\xB8','\x95'), o3('\xE0','\xB8','\x96'),
-     o3('\xE0','\xB8','\x97'), o3('\xE0','\xB8','\x98'),
-     o3('\xE0','\xB8','\x99'), o3('\xE0','\xB8','\x9A'),
-     o3('\xE0','\xB8','\x9B'), o3('\xE0','\xB8','\x9C'),
-     o3('\xE0','\xB8','\x9D'), o3('\xE0','\xB8','\x9E'),
-     o3('\xE0','\xB8','\x9F'), o3('\xE0','\xB8','\xA0'),
-     o3('\xE0','\xB8','\xA1'), o3('\xE0','\xB8','\xA2'),
-     o3('\xE0','\xB8','\xA3'), o3('\xE0','\xB8','\xA4'),
-     o3('\xE0','\xB8','\xA5'), o3('\xE0','\xB8','\xA6'),
-     o3('\xE0','\xB8','\xA7'), o3('\xE0','\xB8','\xA8'),
-     o3('\xE0','\xB8','\xA9'), o3('\xE0','\xB8','\xAA'),
-     o3('\xE0','\xB8','\xAB'), o3('\xE0','\xB8','\xAC'),
-     o3('\xE0','\xB8','\xAD'), o3('\xE0','\xB8','\xAE'),
-     o3('\xE0','\xB8','\xAF'), o3('\xE0','\xB8','\xB0'),
-     o3('\xE0','\xB8','\xB1'), o3('\xE0','\xB8','\xB2'),
-     o3('\xE0','\xB8','\xB3'), o3('\xE0','\xB8','\xB4'),
-     o3('\xE0','\xB8','\xB5'), o3('\xE0','\xB8','\xB6'),
-     o3('\xE0','\xB8','\xB7'), o3('\xE0','\xB8','\xB8'),
-     o3('\xE0','\xB8','\xB9'), o3('\xE0','\xB8','\xBA'),
-     o3('\xE0','\xB8','\xBF'), o3('\xE0','\xB9','\x80'),
-     o3('\xE0','\xB9','\x81'), o3('\xE0','\xB9','\x82'),
-     o3('\xE0','\xB9','\x83'), o3('\xE0','\xB9','\x84'),
-     o3('\xE0','\xB9','\x85'), o3('\xE0','\xB9','\x86'),
-     o3('\xE0','\xB9','\x87'), o3('\xE0','\xB9','\x88'),
-     o3('\xE0','\xB9','\x89'), o3('\xE0','\xB9','\x8A'),
-     o3('\xE0','\xB9','\x8B'), o3('\xE0','\xB9','\x8C'),
-     o3('\xE0','\xB9','\x8D'), o3('\xE0','\xB9','\x8E'),
-     o3('\xE0','\xB9','\x8F'), o3('\xE0','\xB9','\x90'),
-     o3('\xE0','\xB9','\x91'), o3('\xE0','\xB9','\x92'),
-     o3('\xE0','\xB9','\x93'), o3('\xE0','\xB9','\x94'),
-     o3('\xE0','\xB9','\x95'), o3('\xE0','\xB9','\x96'),
-     o3('\xE0','\xB9','\x97'), o3('\xE0','\xB9','\x98'),
-     o3('\xE0','\xB9','\x99'), o3('\xE0','\xB9','\x9A'),
-     o3('\xE0','\xB9','\x9B'),
+from_ISO_8859_11_infos[122] = {
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+     o3(0xE0,0xB8,0x81), o3(0xE0,0xB8,0x82),
+     o3(0xE0,0xB8,0x83), o3(0xE0,0xB8,0x84),
+     o3(0xE0,0xB8,0x85), o3(0xE0,0xB8,0x86),
+     o3(0xE0,0xB8,0x87), o3(0xE0,0xB8,0x88),
+     o3(0xE0,0xB8,0x89), o3(0xE0,0xB8,0x8A),
+     o3(0xE0,0xB8,0x8B), o3(0xE0,0xB8,0x8C),
+     o3(0xE0,0xB8,0x8D), o3(0xE0,0xB8,0x8E),
+     o3(0xE0,0xB8,0x8F), o3(0xE0,0xB8,0x90),
+     o3(0xE0,0xB8,0x91), o3(0xE0,0xB8,0x92),
+     o3(0xE0,0xB8,0x93), o3(0xE0,0xB8,0x94),
+     o3(0xE0,0xB8,0x95), o3(0xE0,0xB8,0x96),
+     o3(0xE0,0xB8,0x97), o3(0xE0,0xB8,0x98),
+     o3(0xE0,0xB8,0x99), o3(0xE0,0xB8,0x9A),
+     o3(0xE0,0xB8,0x9B), o3(0xE0,0xB8,0x9C),
+     o3(0xE0,0xB8,0x9D), o3(0xE0,0xB8,0x9E),
+     o3(0xE0,0xB8,0x9F), o3(0xE0,0xB8,0xA0),
+     o3(0xE0,0xB8,0xA1), o3(0xE0,0xB8,0xA2),
+     o3(0xE0,0xB8,0xA3), o3(0xE0,0xB8,0xA4),
+     o3(0xE0,0xB8,0xA5), o3(0xE0,0xB8,0xA6),
+     o3(0xE0,0xB8,0xA7), o3(0xE0,0xB8,0xA8),
+     o3(0xE0,0xB8,0xA9), o3(0xE0,0xB8,0xAA),
+     o3(0xE0,0xB8,0xAB), o3(0xE0,0xB8,0xAC),
+     o3(0xE0,0xB8,0xAD), o3(0xE0,0xB8,0xAE),
+     o3(0xE0,0xB8,0xAF), o3(0xE0,0xB8,0xB0),
+     o3(0xE0,0xB8,0xB1), o3(0xE0,0xB8,0xB2),
+     o3(0xE0,0xB8,0xB3), o3(0xE0,0xB8,0xB4),
+     o3(0xE0,0xB8,0xB5), o3(0xE0,0xB8,0xB6),
+     o3(0xE0,0xB8,0xB7), o3(0xE0,0xB8,0xB8),
+     o3(0xE0,0xB8,0xB9), o3(0xE0,0xB8,0xBA),
+     o3(0xE0,0xB8,0xBF), o3(0xE0,0xB9,0x80),
+     o3(0xE0,0xB9,0x81), o3(0xE0,0xB9,0x82),
+     o3(0xE0,0xB9,0x83), o3(0xE0,0xB9,0x84),
+     o3(0xE0,0xB9,0x85), o3(0xE0,0xB9,0x86),
+     o3(0xE0,0xB9,0x87), o3(0xE0,0xB9,0x88),
+     o3(0xE0,0xB9,0x89), o3(0xE0,0xB9,0x8A),
+     o3(0xE0,0xB9,0x8B), o3(0xE0,0xB9,0x8C),
+     o3(0xE0,0xB9,0x8D), o3(0xE0,0xB9,0x8E),
+     o3(0xE0,0xB9,0x8F), o3(0xE0,0xB9,0x90),
+     o3(0xE0,0xB9,0x91), o3(0xE0,0xB9,0x92),
+     o3(0xE0,0xB9,0x93), o3(0xE0,0xB9,0x94),
+     o3(0xE0,0xB9,0x95), o3(0xE0,0xB9,0x96),
+     o3(0xE0,0xB9,0x97), o3(0xE0,0xB9,0x98),
+     o3(0xE0,0xB9,0x99), o3(0xE0,0xB9,0x9A),
+     o3(0xE0,0xB9,0x9B),              UNDEF,
 };
 const BYTE_LOOKUP
 from_ISO_8859_11 = {
@@ -2343,20 +2109,20 @@
 to_ISO_8859_11_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     32, 33, 33, 33, 33, 33, 33, 33,   33, 33, 33, 33, 33, 33, 33, 33,
+     33, 33, 33, 33, 33, 33, 33, 33,   33, 33, 33, 33, 33, 33, 33, 33,
 };
 static const struct byte_lookup* const
-to_ISO_8859_11_C2_infos[33] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'),
+to_ISO_8859_11_C2_infos[34] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_C2 = {
@@ -2366,28 +2132,28 @@
 
 static const unsigned char
 to_ISO_8859_11_E0_B8_offsets[64] = {
-     -1,  0,  1,  2,  3,  4,  5,  6,    7,  8,  9, 10, 11, 12, 13, 14,
+     59,  0,  1,  2,  3,  4,  5,  6,    7,  8,  9, 10, 11, 12, 13, 14,
      15, 16, 17, 18, 19, 20, 21, 22,   23, 24, 25, 26, 27, 28, 29, 30,
      31, 32, 33, 34, 35, 36, 37, 38,   39, 40, 41, 42, 43, 44, 45, 46,
-     47, 48, 49, 50, 51, 52, 53, 54,   55, 56, 57, -1, -1, -1, -1, 58,
+     47, 48, 49, 50, 51, 52, 53, 54,   55, 56, 57, 59, 59, 59, 59, 58,
 };
 static const struct byte_lookup* const
-to_ISO_8859_11_E0_B8_infos[59] = {
-     o1('\xA1'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
-     o1('\xA5'), o1('\xA6'), o1('\xA7'), o1('\xA8'),
-     o1('\xA9'), o1('\xAA'), o1('\xAB'), o1('\xAC'),
-     o1('\xAD'), o1('\xAE'), o1('\xAF'), o1('\xB0'),
-     o1('\xB1'), o1('\xB2'), o1('\xB3'), o1('\xB4'),
-     o1('\xB5'), o1('\xB6'), o1('\xB7'), o1('\xB8'),
-     o1('\xB9'), o1('\xBA'), o1('\xBB'), o1('\xBC'),
-     o1('\xBD'), o1('\xBE'), o1('\xBF'), o1('\xC0'),
-     o1('\xC1'), o1('\xC2'), o1('\xC3'), o1('\xC4'),
-     o1('\xC5'), o1('\xC6'), o1('\xC7'), o1('\xC8'),
-     o1('\xC9'), o1('\xCA'), o1('\xCB'), o1('\xCC'),
-     o1('\xCD'), o1('\xCE'), o1('\xCF'), o1('\xD0'),
-     o1('\xD1'), o1('\xD2'), o1('\xD3'), o1('\xD4'),
-     o1('\xD5'), o1('\xD6'), o1('\xD7'), o1('\xD8'),
-     o1('\xD9'), o1('\xDA'), o1('\xDF'),
+to_ISO_8859_11_E0_B8_infos[60] = {
+     o1(0xA1), o1(0xA2), o1(0xA3), o1(0xA4),
+     o1(0xA5), o1(0xA6), o1(0xA7), o1(0xA8),
+     o1(0xA9), o1(0xAA), o1(0xAB), o1(0xAC),
+     o1(0xAD), o1(0xAE), o1(0xAF), o1(0xB0),
+     o1(0xB1), o1(0xB2), o1(0xB3), o1(0xB4),
+     o1(0xB5), o1(0xB6), o1(0xB7), o1(0xB8),
+     o1(0xB9), o1(0xBA), o1(0xBB), o1(0xBC),
+     o1(0xBD), o1(0xBE), o1(0xBF), o1(0xC0),
+     o1(0xC1), o1(0xC2), o1(0xC3), o1(0xC4),
+     o1(0xC5), o1(0xC6), o1(0xC7), o1(0xC8),
+     o1(0xC9), o1(0xCA), o1(0xCB), o1(0xCC),
+     o1(0xCD), o1(0xCE), o1(0xCF), o1(0xD0),
+     o1(0xD1), o1(0xD2), o1(0xD3), o1(0xD4),
+     o1(0xD5), o1(0xD6), o1(0xD7), o1(0xD8),
+     o1(0xD9), o1(0xDA), o1(0xDF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_E0_B8 = {
@@ -2398,19 +2164,20 @@
 static const unsigned char
 to_ISO_8859_11_E0_B9_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 28, 28, 28,
+     28, 28, 28, 28, 28, 28, 28, 28,   28, 28, 28, 28, 28, 28, 28, 28,
+     28, 28, 28, 28, 28, 28, 28, 28,   28, 28, 28, 28, 28, 28, 28, 28,
 };
 static const struct byte_lookup* const
-to_ISO_8859_11_E0_B9_infos[28] = {
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
-     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
-     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
+to_ISO_8859_11_E0_B9_infos[29] = {
+     o1(0xE0), o1(0xE1), o1(0xE2), o1(0xE3),
+     o1(0xE4), o1(0xE5), o1(0xE6), o1(0xE7),
+     o1(0xE8), o1(0xE9), o1(0xEA), o1(0xEB),
+     o1(0xEC), o1(0xED), o1(0xEE), o1(0xEF),
+     o1(0xF0), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF7),
+     o1(0xF8), o1(0xF9), o1(0xFA), o1(0xFB),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_E0_B9 = {
@@ -2420,14 +2187,15 @@
 
 static const unsigned char
 to_ISO_8859_11_E0_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,    0,  1, -1, -1, -1, -1, -1, -1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    0,  1,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_11_E0_infos[2] = {
+to_ISO_8859_11_E0_infos[3] = {
      &to_ISO_8859_11_E0_B8, &to_ISO_8859_11_E0_B9,
+                     UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_E0 = {
@@ -2445,18 +2213,19 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-      2, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  1,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      2,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
+      3,  3,  3,  3,  3,  3,  3,  3,    3,  3,  3,  3,  3,  3,  3,  3,
 };
 static const struct byte_lookup* const
-to_ISO_8859_11_infos[3] = {
-                  NOMAP, &to_ISO_8859_11_C2, &to_ISO_8859_11_E0,
+to_ISO_8859_11_infos[4] = {
+                  NOMAP, &to_ISO_8859_11_C2,
+     &to_ISO_8859_11_E0,              UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_11 = {
@@ -2464,92 +2233,73 @@
     to_ISO_8859_11_infos
 };
 
-static const unsigned char
-from_ISO_8859_13_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
-     17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, 47, 48,
-     49, 50, 51, 52, 53, 54, 55, 56,   57, 58, 59, 60, 61, 62, 63, 64,
-     65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91, 92, 93, 94, 95, 96,
-     97, 98, 99,100,101,102,103,104,  105,106,107,108,109,110,111,112,
-    113,114,115,116,117,118,119,120,  121,122,123,124,125,126,127,128,
-};
 static const struct byte_lookup* const
 from_ISO_8859_13_infos[129] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-     o3('\xE2','\x80','\x9D'),        o2('\xC2','\xA2'),
-            o2('\xC2','\xA3'),        o2('\xC2','\xA4'),
-     o3('\xE2','\x80','\x9E'),        o2('\xC2','\xA6'),
-            o2('\xC2','\xA7'),        o2('\xC3','\x98'),
-            o2('\xC2','\xA9'),        o2('\xC5','\x96'),
-            o2('\xC2','\xAB'),        o2('\xC2','\xAC'),
-            o2('\xC2','\xAD'),        o2('\xC2','\xAE'),
-            o2('\xC3','\x86'),        o2('\xC2','\xB0'),
-            o2('\xC2','\xB1'),        o2('\xC2','\xB2'),
-            o2('\xC2','\xB3'), o3('\xE2','\x80','\x9C'),
-            o2('\xC2','\xB5'),        o2('\xC2','\xB6'),
-            o2('\xC2','\xB7'),        o2('\xC3','\xB8'),
-            o2('\xC2','\xB9'),        o2('\xC5','\x97'),
-            o2('\xC2','\xBB'),        o2('\xC2','\xBC'),
-            o2('\xC2','\xBD'),        o2('\xC2','\xBE'),
-            o2('\xC3','\xA6'),        o2('\xC4','\x84'),
-            o2('\xC4','\xAE'),        o2('\xC4','\x80'),
-            o2('\xC4','\x86'),        o2('\xC3','\x84'),
-            o2('\xC3','\x85'),        o2('\xC4','\x98'),
-            o2('\xC4','\x92'),        o2('\xC4','\x8C'),
-            o2('\xC3','\x89'),        o2('\xC5','\xB9'),
-            o2('\xC4','\x96'),        o2('\xC4','\xA2'),
-            o2('\xC4','\xB6'),        o2('\xC4','\xAA'),
-            o2('\xC4','\xBB'),        o2('\xC5','\xA0'),
-            o2('\xC5','\x83'),        o2('\xC5','\x85'),
-            o2('\xC3','\x93'),        o2('\xC5','\x8C'),
-            o2('\xC3','\x95'),        o2('\xC3','\x96'),
-            o2('\xC3','\x97'),        o2('\xC5','\xB2'),
-            o2('\xC5','\x81'),        o2('\xC5','\x9A'),
-            o2('\xC5','\xAA'),        o2('\xC3','\x9C'),
-            o2('\xC5','\xBB'),        o2('\xC5','\xBD'),
-            o2('\xC3','\x9F'),        o2('\xC4','\x85'),
-            o2('\xC4','\xAF'),        o2('\xC4','\x81'),
-            o2('\xC4','\x87'),        o2('\xC3','\xA4'),
-            o2('\xC3','\xA5'),        o2('\xC4','\x99'),
-            o2('\xC4','\x93'),        o2('\xC4','\x8D'),
-            o2('\xC3','\xA9'),        o2('\xC5','\xBA'),
-            o2('\xC4','\x97'),        o2('\xC4','\xA3'),
-            o2('\xC4','\xB7'),        o2('\xC4','\xAB'),
-            o2('\xC4','\xBC'),        o2('\xC5','\xA1'),
-            o2('\xC5','\x84'),        o2('\xC5','\x86'),
-            o2('\xC3','\xB3'),        o2('\xC5','\x8D'),
-            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
-            o2('\xC3','\xB7'),        o2('\xC5','\xB3'),
-            o2('\xC5','\x82'),        o2('\xC5','\x9B'),
-            o2('\xC5','\xAB'),        o2('\xC3','\xBC'),
-            o2('\xC5','\xBC'),        o2('\xC5','\xBE'),
-     o3('\xE2','\x80','\x99'),
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+     o3(0xE2,0x80,0x9D),      o2(0xC2,0xA2),
+          o2(0xC2,0xA3),      o2(0xC2,0xA4),
+     o3(0xE2,0x80,0x9E),      o2(0xC2,0xA6),
+          o2(0xC2,0xA7),      o2(0xC3,0x98),
+          o2(0xC2,0xA9),      o2(0xC5,0x96),
+          o2(0xC2,0xAB),      o2(0xC2,0xAC),
+          o2(0xC2,0xAD),      o2(0xC2,0xAE),
+          o2(0xC3,0x86),      o2(0xC2,0xB0),
+          o2(0xC2,0xB1),      o2(0xC2,0xB2),
+          o2(0xC2,0xB3), o3(0xE2,0x80,0x9C),
+          o2(0xC2,0xB5),      o2(0xC2,0xB6),
+          o2(0xC2,0xB7),      o2(0xC3,0xB8),
+          o2(0xC2,0xB9),      o2(0xC5,0x97),
+          o2(0xC2,0xBB),      o2(0xC2,0xBC),
+          o2(0xC2,0xBD),      o2(0xC2,0xBE),
+          o2(0xC3,0xA6),      o2(0xC4,0x84),
+          o2(0xC4,0xAE),      o2(0xC4,0x80),
+          o2(0xC4,0x86),      o2(0xC3,0x84),
+          o2(0xC3,0x85),      o2(0xC4,0x98),
+          o2(0xC4,0x92),      o2(0xC4,0x8C),
+          o2(0xC3,0x89),      o2(0xC5,0xB9),
+          o2(0xC4,0x96),      o2(0xC4,0xA2),
+          o2(0xC4,0xB6),      o2(0xC4,0xAA),
+          o2(0xC4,0xBB),      o2(0xC5,0xA0),
+          o2(0xC5,0x83),      o2(0xC5,0x85),
+          o2(0xC3,0x93),      o2(0xC5,0x8C),
+          o2(0xC3,0x95),      o2(0xC3,0x96),
+          o2(0xC3,0x97),      o2(0xC5,0xB2),
+          o2(0xC5,0x81),      o2(0xC5,0x9A),
+          o2(0xC5,0xAA),      o2(0xC3,0x9C),
+          o2(0xC5,0xBB),      o2(0xC5,0xBD),
+          o2(0xC3,0x9F),      o2(0xC4,0x85),
+          o2(0xC4,0xAF),      o2(0xC4,0x81),
+          o2(0xC4,0x87),      o2(0xC3,0xA4),
+          o2(0xC3,0xA5),      o2(0xC4,0x99),
+          o2(0xC4,0x93),      o2(0xC4,0x8D),
+          o2(0xC3,0xA9),      o2(0xC5,0xBA),
+          o2(0xC4,0x97),      o2(0xC4,0xA3),
+          o2(0xC4,0xB7),      o2(0xC4,0xAB),
+          o2(0xC4,0xBC),      o2(0xC5,0xA1),
+          o2(0xC5,0x84),      o2(0xC5,0x86),
+          o2(0xC3,0xB3),      o2(0xC5,0x8D),
+          o2(0xC3,0xB5),      o2(0xC3,0xB6),
+          o2(0xC3,0xB7),      o2(0xC5,0xB3),
+          o2(0xC5,0x82),      o2(0xC5,0x9B),
+          o2(0xC5,0xAB),      o2(0xC3,0xBC),
+          o2(0xC5,0xBC),      o2(0xC5,0xBE),
+     o3(0xE2,0x80,0x99),
 };
 const BYTE_LOOKUP
 from_ISO_8859_13 = {
@@ -2561,25 +2311,25 @@
 to_ISO_8859_13_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, 33, 34, 35, -1, 36, 37,   -1, 38, -1, 39, 40, 41, 42, -1,
-     43, 44, 45, 46, -1, 47, 48, 49,   -1, 50, -1, 51, 52, 53, 54, -1,
+     32, 55, 33, 34, 35, 55, 36, 37,   55, 38, 55, 39, 40, 41, 42, 55,
+     43, 44, 45, 46, 55, 47, 48, 49,   55, 50, 55, 51, 52, 53, 54, 55,
 };
 static const struct byte_lookup* const
-to_ISO_8859_13_C2_infos[55] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
-     o1('\xA6'), o1('\xA7'), o1('\xA9'), o1('\xAB'),
-     o1('\xAC'), o1('\xAD'), o1('\xAE'), o1('\xB0'),
-     o1('\xB1'), o1('\xB2'), o1('\xB3'), o1('\xB5'),
-     o1('\xB6'), o1('\xB7'), o1('\xB9'), o1('\xBB'),
-     o1('\xBC'), o1('\xBD'), o1('\xBE'),
+to_ISO_8859_13_C2_infos[56] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA2), o1(0xA3), o1(0xA4),
+     o1(0xA6), o1(0xA7), o1(0xA9), o1(0xAB),
+     o1(0xAC), o1(0xAD), o1(0xAE), o1(0xB0),
+     o1(0xB1), o1(0xB2), o1(0xB3), o1(0xB5),
+     o1(0xB6), o1(0xB7), o1(0xB9), o1(0xBB),
+     o1(0xBC), o1(0xBD), o1(0xBE),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C2 = {
@@ -2589,19 +2339,19 @@
 
 static const unsigned char
 to_ISO_8859_13_C3_offsets[64] = {
-     -1, -1, -1, -1,  0,  1,  2, -1,   -1,  3, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1,  4, -1,  5,  6,  7,    8, -1, -1, -1,  9, -1, -1, 10,
-     -1, -1, -1, -1, 11, 12, 13, -1,   -1, 14, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, 15, -1, 16, 17, 18,   19, -1, -1, -1, 20, -1, -1, -1,
+     21, 21, 21, 21,  0,  1,  2, 21,   21,  3, 21, 21, 21, 21, 21, 21,
+     21, 21, 21,  4, 21,  5,  6,  7,    8, 21, 21, 21,  9, 21, 21, 10,
+     21, 21, 21, 21, 11, 12, 13, 21,   21, 14, 21, 21, 21, 21, 21, 21,
+     21, 21, 21, 15, 21, 16, 17, 18,   19, 21, 21, 21, 20, 21, 21, 21,
 };
 static const struct byte_lookup* const
-to_ISO_8859_13_C3_infos[21] = {
-     o1('\xC4'), o1('\xC5'), o1('\xAF'), o1('\xC9'),
-     o1('\xD3'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
-     o1('\xA8'), o1('\xDC'), o1('\xDF'), o1('\xE4'),
-     o1('\xE5'), o1('\xBF'), o1('\xE9'), o1('\xF3'),
-     o1('\xF5'), o1('\xF6'), o1('\xF7'), o1('\xB8'),
-     o1('\xFC'),
+to_ISO_8859_13_C3_infos[22] = {
+     o1(0xC4), o1(0xC5), o1(0xAF), o1(0xC9),
+     o1(0xD3), o1(0xD5), o1(0xD6), o1(0xD7),
+     o1(0xA8), o1(0xDC), o1(0xDF), o1(0xE4),
+     o1(0xE5), o1(0xBF), o1(0xE9), o1(0xF3),
+     o1(0xF5), o1(0xF6), o1(0xF7), o1(0xB8),
+     o1(0xFC),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C3 = {
@@ -2611,19 +2361,20 @@
 
 static const unsigned char
 to_ISO_8859_13_C4_offsets[64] = {
-      0,  1, -1, -1,  2,  3,  4,  5,   -1, -1, -1, -1,  6,  7, -1, -1,
-     -1, -1,  8,  9, -1, -1, 10, 11,   12, 13, -1, -1, -1, -1, -1, -1,
-     -1, -1, 14, 15, -1, -1, -1, -1,   -1, -1, 16, 17, -1, -1, 18, 19,
-     -1, -1, -1, -1, -1, -1, 20, 21,   -1, -1, -1, 22, 23, -1, -1, -1,
+      0,  1, 24, 24,  2,  3,  4,  5,   24, 24, 24, 24,  6,  7, 24, 24,
+     24, 24,  8,  9, 24, 24, 10, 11,   12, 13, 24, 24, 24, 24, 24, 24,
+     24, 24, 14, 15, 24, 24, 24, 24,   24, 24, 16, 17, 24, 24, 18, 19,
+     24, 24, 24, 24, 24, 24, 20, 21,   24, 24, 24, 22, 23, 24, 24, 24,
 };
 static const struct byte_lookup* const
-to_ISO_8859_13_C4_infos[24] = {
-     o1('\xC2'), o1('\xE2'), o1('\xC0'), o1('\xE0'),
-     o1('\xC3'), o1('\xE3'), o1('\xC8'), o1('\xE8'),
-     o1('\xC7'), o1('\xE7'), o1('\xCB'), o1('\xEB'),
-     o1('\xC6'), o1('\xE6'), o1('\xCC'), o1('\xEC'),
-     o1('\xCE'), o1('\xEE'), o1('\xC1'), o1('\xE1'),
-     o1('\xCD'), o1('\xED'), o1('\xCF'), o1('\xEF'),
+to_ISO_8859_13_C4_infos[25] = {
+     o1(0xC2), o1(0xE2), o1(0xC0), o1(0xE0),
+     o1(0xC3), o1(0xE3), o1(0xC8), o1(0xE8),
+     o1(0xC7), o1(0xE7), o1(0xCB), o1(0xEB),
+     o1(0xC6), o1(0xE6), o1(0xCC), o1(0xEC),
+     o1(0xCE), o1(0xEE), o1(0xC1), o1(0xE1),
+     o1(0xCD), o1(0xED), o1(0xCF), o1(0xEF),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C4 = {
@@ -2633,19 +2384,20 @@
 
 static const unsigned char
 to_ISO_8859_13_C5_offsets[64] = {
-     -1,  0,  1,  2,  3,  4,  5, -1,   -1, -1, -1, -1,  6,  7, -1, -1,
-     -1, -1, -1, -1, -1, -1,  8,  9,   -1, -1, 10, 11, -1, -1, -1, -1,
-     12, 13, -1, -1, -1, -1, -1, -1,   -1, -1, 14, 15, -1, -1, -1, -1,
-     -1, -1, 16, 17, -1, -1, -1, -1,   -1, 18, 19, 20, 21, 22, 23, -1,
+     24,  0,  1,  2,  3,  4,  5, 24,   24, 24, 24, 24,  6,  7, 24, 24,
+     24, 24, 24, 24, 24, 24,  8,  9,   24, 24, 10, 11, 24, 24, 24, 24,
+     12, 13, 24, 24, 24, 24, 24, 24,   24, 24, 14, 15, 24, 24, 24, 24,
+     24, 24, 16, 17, 24, 24, 24, 24,   24, 18, 19, 20, 21, 22, 23, 24,
 };
 static const struct byte_lookup* const
-to_ISO_8859_13_C5_infos[24] = {
-     o1('\xD9'), o1('\xF9'), o1('\xD1'), o1('\xF1'),
-     o1('\xD2'), o1('\xF2'), o1('\xD4'), o1('\xF4'),
-     o1('\xAA'), o1('\xBA'), o1('\xDA'), o1('\xFA'),
-     o1('\xD0'), o1('\xF0'), o1('\xDB'), o1('\xFB'),
-     o1('\xD8'), o1('\xF8'), o1('\xCA'), o1('\xEA'),
-     o1('\xDD'), o1('\xFD'), o1('\xDE'), o1('\xFE'),
+to_ISO_8859_13_C5_infos[25] = {
+     o1(0xD9), o1(0xF9), o1(0xD1), o1(0xF1),
+     o1(0xD2), o1(0xF2), o1(0xD4), o1(0xF4),
+     o1(0xAA), o1(0xBA), o1(0xDA), o1(0xFA),
+     o1(0xD0), o1(0xF0), o1(0xDB), o1(0xFB),
+     o1(0xD8), o1(0xF8), o1(0xCA), o1(0xEA),
+     o1(0xDD), o1(0xFD), o1(0xDE), o1(0xFE),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C5 = {
@@ -2655,14 +2407,15 @@
 
 static const unsigned char
 to_ISO_8859_13_E2_80_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1,  0, -1, -1,  1,  2,  3, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  0,  4,  4,  1,  2,  3,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
 };
 static const struct byte_lookup* const
-to_ISO_8859_13_E2_80_infos[4] = {
-     o1('\xFF'), o1('\xB4'), o1('\xA1'), o1('\xA5'),
+to_ISO_8859_13_E2_80_infos[5] = {
+     o1(0xFF), o1(0xB4), o1(0xA1), o1(0xA5),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_E2_80 = {
@@ -2670,16 +2423,9 @@
     to_ISO_8859_13_E2_80_infos
 };
 
-static const unsigned char
-to_ISO_8859_13_E2_offsets[64] = {
-      0, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-};
 static const struct byte_lookup* const
-to_ISO_8859_13_E2_infos[1] = {
-     &to_ISO_8859_13_E2_80,
+to_ISO_8859_13_E2_infos[2] = {
+     &to_ISO_8859_13_E2_80,                 UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_E2 = {
@@ -2687,126 +2433,90 @@
     to_ISO_8859_13_E2_infos
 };
 
-static const unsigned char
-to_ISO_8859_13_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  5, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-};
 static const struct byte_lookup* const
-to_ISO_8859_13_infos[6] = {
-                  NOMAP, &to_ISO_8859_13_C2, &to_ISO_8859_13_C3, &to_ISO_8859_13_C4,
+to_ISO_8859_13_infos[7] = {
+                  NOMAP, &to_ISO_8859_13_C2,
+     &to_ISO_8859_13_C3, &to_ISO_8859_13_C4,
      &to_ISO_8859_13_C5, &to_ISO_8859_13_E2,
+                  UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_13 = {
-    to_ISO_8859_13_offsets,
+    to_ISO_8859_10_offsets,
     to_ISO_8859_13_infos
 };
 
-static const unsigned char
-from_ISO_8859_14_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
-     17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, 47, 48,
-     49, 50, 51, 52, 53, 54, 55, 56,   57, 58, 59, 60, 61, 62, 63, 64,
-     65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91, 92, 93, 94, 95, 96,
-     97, 98, 99,100,101,102,103,104,  105,106,107,108,109,110,111,112,
-    113,114,115,116,117,118,119,120,  121,122,123,124,125,126,127,128,
-};
 static const struct byte_lookup* const
 from_ISO_8859_14_infos[129] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-     o3('\xE1','\xB8','\x82'), o3('\xE1','\xB8','\x83'),
-            o2('\xC2','\xA3'),        o2('\xC4','\x8A'),
-            o2('\xC4','\x8B'), o3('\xE1','\xB8','\x8A'),
-            o2('\xC2','\xA7'), o3('\xE1','\xBA','\x80'),
-            o2('\xC2','\xA9'), o3('\xE1','\xBA','\x82'),
-     o3('\xE1','\xB8','\x8B'), o3('\xE1','\xBB','\xB2'),
-            o2('\xC2','\xAD'),        o2('\xC2','\xAE'),
-            o2('\xC5','\xB8'), o3('\xE1','\xB8','\x9E'),
-     o3('\xE1','\xB8','\x9F'),        o2('\xC4','\xA0'),
-            o2('\xC4','\xA1'), o3('\xE1','\xB9','\x80'),
-     o3('\xE1','\xB9','\x81'),        o2('\xC2','\xB6'),
-     o3('\xE1','\xB9','\x96'), o3('\xE1','\xBA','\x81'),
-     o3('\xE1','\xB9','\x97'), o3('\xE1','\xBA','\x83'),
-     o3('\xE1','\xB9','\xA0'), o3('\xE1','\xBB','\xB3'),
-     o3('\xE1','\xBA','\x84'), o3('\xE1','\xBA','\x85'),
-     o3('\xE1','\xB9','\xA1'),        o2('\xC3','\x80'),
-            o2('\xC3','\x81'),        o2('\xC3','\x82'),
-            o2('\xC3','\x83'),        o2('\xC3','\x84'),
-            o2('\xC3','\x85'),        o2('\xC3','\x86'),
-            o2('\xC3','\x87'),        o2('\xC3','\x88'),
-            o2('\xC3','\x89'),        o2('\xC3','\x8A'),
-            o2('\xC3','\x8B'),        o2('\xC3','\x8C'),
-            o2('\xC3','\x8D'),        o2('\xC3','\x8E'),
-            o2('\xC3','\x8F'),        o2('\xC5','\xB4'),
-            o2('\xC3','\x91'),        o2('\xC3','\x92'),
-            o2('\xC3','\x93'),        o2('\xC3','\x94'),
-            o2('\xC3','\x95'),        o2('\xC3','\x96'),
-     o3('\xE1','\xB9','\xAA'),        o2('\xC3','\x98'),
-            o2('\xC3','\x99'),        o2('\xC3','\x9A'),
-            o2('\xC3','\x9B'),        o2('\xC3','\x9C'),
-            o2('\xC3','\x9D'),        o2('\xC5','\xB6'),
-            o2('\xC3','\x9F'),        o2('\xC3','\xA0'),
-            o2('\xC3','\xA1'),        o2('\xC3','\xA2'),
-            o2('\xC3','\xA3'),        o2('\xC3','\xA4'),
-            o2('\xC3','\xA5'),        o2('\xC3','\xA6'),
-            o2('\xC3','\xA7'),        o2('\xC3','\xA8'),
-            o2('\xC3','\xA9'),        o2('\xC3','\xAA'),
-            o2('\xC3','\xAB'),        o2('\xC3','\xAC'),
-            o2('\xC3','\xAD'),        o2('\xC3','\xAE'),
-            o2('\xC3','\xAF'),        o2('\xC5','\xB5'),
-            o2('\xC3','\xB1'),        o2('\xC3','\xB2'),
-            o2('\xC3','\xB3'),        o2('\xC3','\xB4'),
-            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
-     o3('\xE1','\xB9','\xAB'),        o2('\xC3','\xB8'),
-            o2('\xC3','\xB9'),        o2('\xC3','\xBA'),
-            o2('\xC3','\xBB'),        o2('\xC3','\xBC'),
-            o2('\xC3','\xBD'),        o2('\xC5','\xB7'),
-            o2('\xC3','\xBF'),
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+     o3(0xE1,0xB8,0x82), o3(0xE1,0xB8,0x83),
+          o2(0xC2,0xA3),      o2(0xC4,0x8A),
+          o2(0xC4,0x8B), o3(0xE1,0xB8,0x8A),
+          o2(0xC2,0xA7), o3(0xE1,0xBA,0x80),
+          o2(0xC2,0xA9), o3(0xE1,0xBA,0x82),
+     o3(0xE1,0xB8,0x8B), o3(0xE1,0xBB,0xB2),
+          o2(0xC2,0xAD),      o2(0xC2,0xAE),
+          o2(0xC5,0xB8), o3(0xE1,0xB8,0x9E),
+     o3(0xE1,0xB8,0x9F),      o2(0xC4,0xA0),
+          o2(0xC4,0xA1), o3(0xE1,0xB9,0x80),
+     o3(0xE1,0xB9,0x81),      o2(0xC2,0xB6),
+     o3(0xE1,0xB9,0x96), o3(0xE1,0xBA,0x81),
+     o3(0xE1,0xB9,0x97), o3(0xE1,0xBA,0x83),
+     o3(0xE1,0xB9,0xA0), o3(0xE1,0xBB,0xB3),
+     o3(0xE1,0xBA,0x84), o3(0xE1,0xBA,0x85),
+     o3(0xE1,0xB9,0xA1),      o2(0xC3,0x80),
+          o2(0xC3,0x81),      o2(0xC3,0x82),
+          o2(0xC3,0x83),      o2(0xC3,0x84),
+          o2(0xC3,0x85),      o2(0xC3,0x86),
+          o2(0xC3,0x87),      o2(0xC3,0x88),
+          o2(0xC3,0x89),      o2(0xC3,0x8A),
+          o2(0xC3,0x8B),      o2(0xC3,0x8C),
+          o2(0xC3,0x8D),      o2(0xC3,0x8E),
+          o2(0xC3,0x8F),      o2(0xC5,0xB4),
+          o2(0xC3,0x91),      o2(0xC3,0x92),
+          o2(0xC3,0x93),      o2(0xC3,0x94),
+          o2(0xC3,0x95),      o2(0xC3,0x96),
+     o3(0xE1,0xB9,0xAA),      o2(0xC3,0x98),
+          o2(0xC3,0x99),      o2(0xC3,0x9A),
+          o2(0xC3,0x9B),      o2(0xC3,0x9C),
+          o2(0xC3,0x9D),      o2(0xC5,0xB6),
+          o2(0xC3,0x9F),      o2(0xC3,0xA0),
+          o2(0xC3,0xA1),      o2(0xC3,0xA2),
+          o2(0xC3,0xA3),      o2(0xC3,0xA4),
+          o2(0xC3,0xA5),      o2(0xC3,0xA6),
+          o2(0xC3,0xA7),      o2(0xC3,0xA8),
+          o2(0xC3,0xA9),      o2(0xC3,0xAA),
+          o2(0xC3,0xAB),      o2(0xC3,0xAC),
+          o2(0xC3,0xAD),      o2(0xC3,0xAE),
+          o2(0xC3,0xAF),      o2(0xC5,0xB5),
+          o2(0xC3,0xB1),      o2(0xC3,0xB2),
+          o2(0xC3,0xB3),      o2(0xC3,0xB4),
+          o2(0xC3,0xB5),      o2(0xC3,0xB6),
+     o3(0xE1,0xB9,0xAB),      o2(0xC3,0xB8),
+          o2(0xC3,0xB9),      o2(0xC3,0xBA),
+          o2(0xC3,0xBB),      o2(0xC3,0xBC),
+          o2(0xC3,0xBD),      o2(0xC5,0xB7),
+          o2(0xC3,0xBF),
 };
 const BYTE_LOOKUP
 from_ISO_8859_14 = {
-    from_ISO_8859_14_offsets,
+    from_ISO_8859_13_offsets,
     from_ISO_8859_14_infos
 };
 
@@ -2814,21 +2524,21 @@
 to_ISO_8859_14_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, -1, -1, 33, -1, -1, -1, 34,   -1, 35, -1, -1, -1, 36, 37, -1,
-     -1, -1, -1, -1, -1, -1, 38, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+     32, 39, 39, 33, 39, 39, 39, 34,   39, 35, 39, 39, 39, 36, 37, 39,
+     39, 39, 39, 39, 39, 39, 38, 39,   39, 39, 39, 39, 39, 39, 39, 39,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_C2_infos[39] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA3'), o1('\xA7'), o1('\xA9'),
-     o1('\xAD'), o1('\xAE'), o1('\xB6'),
+to_ISO_8859_14_C2_infos[40] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA3), o1(0xA7), o1(0xA9),
+     o1(0xAD), o1(0xAE), o1(0xB6),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C2 = {
@@ -2839,27 +2549,27 @@
 static const unsigned char
 to_ISO_8859_14_C3_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     -1, 16, 17, 18, 19, 20, 21, -1,   22, 23, 24, 25, 26, 27, -1, 28,
+     58, 16, 17, 18, 19, 20, 21, 58,   22, 23, 24, 25, 26, 27, 58, 28,
      29, 30, 31, 32, 33, 34, 35, 36,   37, 38, 39, 40, 41, 42, 43, 44,
-     -1, 45, 46, 47, 48, 49, 50, -1,   51, 52, 53, 54, 55, 56, -1, 57,
+     58, 45, 46, 47, 48, 49, 50, 58,   51, 52, 53, 54, 55, 56, 58, 57,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_C3_infos[58] = {
-     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
-     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
-     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
-     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
-     o1('\xD1'), o1('\xD2'), o1('\xD3'), o1('\xD4'),
-     o1('\xD5'), o1('\xD6'), o1('\xD8'), o1('\xD9'),
-     o1('\xDA'), o1('\xDB'), o1('\xDC'), o1('\xDD'),
-     o1('\xDF'), o1('\xE0'), o1('\xE1'), o1('\xE2'),
-     o1('\xE3'), o1('\xE4'), o1('\xE5'), o1('\xE6'),
-     o1('\xE7'), o1('\xE8'), o1('\xE9'), o1('\xEA'),
-     o1('\xEB'), o1('\xEC'), o1('\xED'), o1('\xEE'),
-     o1('\xEF'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF8'),
-     o1('\xF9'), o1('\xFA'), o1('\xFB'), o1('\xFC'),
-     o1('\xFD'), o1('\xFF'),
+to_ISO_8859_14_C3_infos[59] = {
+     o1(0xC0), o1(0xC1), o1(0xC2), o1(0xC3),
+     o1(0xC4), o1(0xC5), o1(0xC6), o1(0xC7),
+     o1(0xC8), o1(0xC9), o1(0xCA), o1(0xCB),
+     o1(0xCC), o1(0xCD), o1(0xCE), o1(0xCF),
+     o1(0xD1), o1(0xD2), o1(0xD3), o1(0xD4),
+     o1(0xD5), o1(0xD6), o1(0xD8), o1(0xD9),
+     o1(0xDA), o1(0xDB), o1(0xDC), o1(0xDD),
+     o1(0xDF), o1(0xE0), o1(0xE1), o1(0xE2),
+     o1(0xE3), o1(0xE4), o1(0xE5), o1(0xE6),
+     o1(0xE7), o1(0xE8), o1(0xE9), o1(0xEA),
+     o1(0xEB), o1(0xEC), o1(0xED), o1(0xEE),
+     o1(0xEF), o1(0xF1), o1(0xF2), o1(0xF3),
+     o1(0xF4), o1(0xF5), o1(0xF6), o1(0xF8),
+     o1(0xF9), o1(0xFA), o1(0xFB), o1(0xFC),
+     o1(0xFD), o1(0xFF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C3 = {
@@ -2869,14 +2579,15 @@
 
 static const unsigned char
 to_ISO_8859_14_C4_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1,  0,  1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-      2,  3, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  0,  1,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      2,  3,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_C4_infos[4] = {
-     o1('\xA4'), o1('\xA5'), o1('\xB2'), o1('\xB3'),
+to_ISO_8859_14_C4_infos[5] = {
+     o1(0xA4), o1(0xA5), o1(0xB2), o1(0xB3),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C4 = {
@@ -2886,15 +2597,15 @@
 
 static const unsigned char
 to_ISO_8859_14_C5_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1,  0,  1,  2,  3,    4, -1, -1, -1, -1, -1, -1, -1,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  0,  1,  2,  3,    4,  5,  5,  5,  5,  5,  5,  5,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_C5_infos[5] = {
-     o1('\xD0'), o1('\xF0'), o1('\xDE'), o1('\xFE'),
-     o1('\xAF'),
+to_ISO_8859_14_C5_infos[6] = {
+     o1(0xD0), o1(0xF0), o1(0xDE), o1(0xFE),
+     o1(0xAF),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C5 = {
@@ -2904,15 +2615,15 @@
 
 static const unsigned char
 to_ISO_8859_14_E1_B8_offsets[64] = {
-     -1, -1,  0,  1, -1, -1, -1, -1,   -1, -1,  2,  3, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1,  4,  5,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      6,  6,  0,  1,  6,  6,  6,  6,    6,  6,  2,  3,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  4,  5,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_E1_B8_infos[6] = {
-     o1('\xA1'), o1('\xA2'), o1('\xA6'), o1('\xAB'),
-     o1('\xB0'), o1('\xB1'),
+to_ISO_8859_14_E1_B8_infos[7] = {
+     o1(0xA1), o1(0xA2), o1(0xA6), o1(0xAB),
+     o1(0xB0), o1(0xB1),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_B8 = {
@@ -2922,15 +2633,16 @@
 
 static const unsigned char
 to_ISO_8859_14_E1_B9_offsets[64] = {
-      0,  1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1,  2,  3,   -1, -1, -1, -1, -1, -1, -1, -1,
-      4,  5, -1, -1, -1, -1, -1, -1,   -1, -1,  6,  7, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      0,  1,  8,  8,  8,  8,  8,  8,    8,  8,  8,  8,  8,  8,  8,  8,
+      8,  8,  8,  8,  8,  8,  2,  3,    8,  8,  8,  8,  8,  8,  8,  8,
+      4,  5,  8,  8,  8,  8,  8,  8,    8,  8,  6,  7,  8,  8,  8,  8,
+      8,  8,  8,  8,  8,  8,  8,  8,    8,  8,  8,  8,  8,  8,  8,  8,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_E1_B9_infos[8] = {
-     o1('\xB4'), o1('\xB5'), o1('\xB7'), o1('\xB9'),
-     o1('\xBB'), o1('\xBF'), o1('\xD7'), o1('\xF7'),
+to_ISO_8859_14_E1_B9_infos[9] = {
+     o1(0xB4), o1(0xB5), o1(0xB7), o1(0xB9),
+     o1(0xBB), o1(0xBF), o1(0xD7), o1(0xF7),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_B9 = {
@@ -2940,15 +2652,15 @@
 
 static const unsigned char
 to_ISO_8859_14_E1_BA_offsets[64] = {
-      0,  1,  2,  3,  4,  5, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      0,  1,  2,  3,  4,  5,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_E1_BA_infos[6] = {
-     o1('\xA8'), o1('\xB8'), o1('\xAA'), o1('\xBA'),
-     o1('\xBD'), o1('\xBE'),
+to_ISO_8859_14_E1_BA_infos[7] = {
+     o1(0xA8), o1(0xB8), o1(0xAA), o1(0xBA),
+     o1(0xBD), o1(0xBE),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_BA = {
@@ -2958,14 +2670,14 @@
 
 static const unsigned char
 to_ISO_8859_14_E1_BB_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  0,  1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  2,  2,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
+      2,  2,  0,  1,  2,  2,  2,  2,    2,  2,  2,  2,  2,  2,  2,  2,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_E1_BB_infos[2] = {
-     o1('\xAC'), o1('\xBC'),
+to_ISO_8859_14_E1_BB_infos[3] = {
+     o1(0xAC), o1(0xBC),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_BB = {
@@ -2975,15 +2687,16 @@
 
 static const unsigned char
 to_ISO_8859_14_E1_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,    0,  1,  2,  3, -1, -1, -1, -1,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    4,  4,  4,  4,  4,  4,  4,  4,
+      4,  4,  4,  4,  4,  4,  4,  4,    0,  1,  2,  3,  4,  4,  4,  4,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_E1_infos[4] = {
+to_ISO_8859_14_E1_infos[5] = {
      &to_ISO_8859_14_E1_B8, &to_ISO_8859_14_E1_B9,
      &to_ISO_8859_14_E1_BA, &to_ISO_8859_14_E1_BB,
+                     UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1 = {
@@ -3001,19 +2714,21 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2,  3,  4, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1,  5, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  1,  2,  3,  4,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  5,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
+      6,  6,  6,  6,  6,  6,  6,  6,    6,  6,  6,  6,  6,  6,  6,  6,
 };
 static const struct byte_lookup* const
-to_ISO_8859_14_infos[6] = {
-                  NOMAP, &to_ISO_8859_14_C2, &to_ISO_8859_14_C3, &to_ISO_8859_14_C4,
+to_ISO_8859_14_infos[7] = {
+                  NOMAP, &to_ISO_8859_14_C2,
+     &to_ISO_8859_14_C3, &to_ISO_8859_14_C4,
      &to_ISO_8859_14_C5, &to_ISO_8859_14_E1,
+                  UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_14 = {
@@ -3021,92 +2736,73 @@
     to_ISO_8859_14_infos
 };
 
-static const unsigned char
-from_ISO_8859_15_offsets[256] = {
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-      1,  2,  3,  4,  5,  6,  7,  8,    9, 10, 11, 12, 13, 14, 15, 16,
-     17, 18, 19, 20, 21, 22, 23, 24,   25, 26, 27, 28, 29, 30, 31, 32,
-     33, 34, 35, 36, 37, 38, 39, 40,   41, 42, 43, 44, 45, 46, 47, 48,
-     49, 50, 51, 52, 53, 54, 55, 56,   57, 58, 59, 60, 61, 62, 63, 64,
-     65, 66, 67, 68, 69, 70, 71, 72,   73, 74, 75, 76, 77, 78, 79, 80,
-     81, 82, 83, 84, 85, 86, 87, 88,   89, 90, 91, 92, 93, 94, 95, 96,
-     97, 98, 99,100,101,102,103,104,  105,106,107,108,109,110,111,112,
-    113,114,115,116,117,118,119,120,  121,122,123,124,125,126,127,128,
-};
 static const struct byte_lookup* const
 from_ISO_8859_15_infos[129] = {
-                             NOMAP,        o2('\xC2','\x80'),
-            o2('\xC2','\x81'),        o2('\xC2','\x82'),
-            o2('\xC2','\x83'),        o2('\xC2','\x84'),
-            o2('\xC2','\x85'),        o2('\xC2','\x86'),
-            o2('\xC2','\x87'),        o2('\xC2','\x88'),
-            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
-            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
-            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
-            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
-            o2('\xC2','\x91'),        o2('\xC2','\x92'),
-            o2('\xC2','\x93'),        o2('\xC2','\x94'),
-            o2('\xC2','\x95'),        o2('\xC2','\x96'),
-            o2('\xC2','\x97'),        o2('\xC2','\x98'),
-            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
-            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
-            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
-            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
-            o2('\xC2','\xA1'),        o2('\xC2','\xA2'),
-            o2('\xC2','\xA3'), o3('\xE2','\x82','\xAC'),
-            o2('\xC2','\xA5'),        o2('\xC5','\xA0'),
-            o2('\xC2','\xA7'),        o2('\xC5','\xA1'),
-            o2('\xC2','\xA9'),        o2('\xC2','\xAA'),
-            o2('\xC2','\xAB'),        o2('\xC2','\xAC'),
-            o2('\xC2','\xAD'),        o2('\xC2','\xAE'),
-            o2('\xC2','\xAF'),        o2('\xC2','\xB0'),
-            o2('\xC2','\xB1'),        o2('\xC2','\xB2'),
-            o2('\xC2','\xB3'),        o2('\xC5','\xBD'),
-            o2('\xC2','\xB5'),        o2('\xC2','\xB6'),
-            o2('\xC2','\xB7'),        o2('\xC5','\xBE'),
-            o2('\xC2','\xB9'),        o2('\xC2','\xBA'),
-            o2('\xC2','\xBB'),        o2('\xC5','\x92'),
-            o2('\xC5','\x93'),        o2('\xC5','\xB8'),
-            o2('\xC2','\xBF'),        o2('\xC3','\x80'),
-            o2('\xC3','\x81'),        o2('\xC3','\x82'),
-            o2('\xC3','\x83'),        o2('\xC3','\x84'),
-            o2('\xC3','\x85'),        o2('\xC3','\x86'),
-            o2('\xC3','\x87'),        o2('\xC3','\x88'),
-            o2('\xC3','\x89'),        o2('\xC3','\x8A'),
-            o2('\xC3','\x8B'),        o2('\xC3','\x8C'),
-            o2('\xC3','\x8D'),        o2('\xC3','\x8E'),
-            o2('\xC3','\x8F'),        o2('\xC3','\x90'),
-            o2('\xC3','\x91'),        o2('\xC3','\x92'),
-            o2('\xC3','\x93'),        o2('\xC3','\x94'),
-            o2('\xC3','\x95'),        o2('\xC3','\x96'),
-            o2('\xC3','\x97'),        o2('\xC3','\x98'),
-            o2('\xC3','\x99'),        o2('\xC3','\x9A'),
-            o2('\xC3','\x9B'),        o2('\xC3','\x9C'),
-            o2('\xC3','\x9D'),        o2('\xC3','\x9E'),
-            o2('\xC3','\x9F'),        o2('\xC3','\xA0'),
-            o2('\xC3','\xA1'),        o2('\xC3','\xA2'),
-            o2('\xC3','\xA3'),        o2('\xC3','\xA4'),
-            o2('\xC3','\xA5'),        o2('\xC3','\xA6'),
-            o2('\xC3','\xA7'),        o2('\xC3','\xA8'),
-            o2('\xC3','\xA9'),        o2('\xC3','\xAA'),
-            o2('\xC3','\xAB'),        o2('\xC3','\xAC'),
-            o2('\xC3','\xAD'),        o2('\xC3','\xAE'),
-            o2('\xC3','\xAF'),        o2('\xC3','\xB0'),
-            o2('\xC3','\xB1'),        o2('\xC3','\xB2'),
-            o2('\xC3','\xB3'),        o2('\xC3','\xB4'),
-            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
-            o2('\xC3','\xB7'),        o2('\xC3','\xB8'),
-            o2('\xC3','\xB9'),        o2('\xC3','\xBA'),
-            o2('\xC3','\xBB'),        o2('\xC3','\xBC'),
-            o2('\xC3','\xBD'),        o2('\xC3','\xBE'),
-            o2('\xC3','\xBF'),
+                  NOMAP,      o2(0xC2,0x80),
+          o2(0xC2,0x81),      o2(0xC2,0x82),
+          o2(0xC2,0x83),      o2(0xC2,0x84),
+          o2(0xC2,0x85),      o2(0xC2,0x86),
+          o2(0xC2,0x87),      o2(0xC2,0x88),
+          o2(0xC2,0x89),      o2(0xC2,0x8A),
+          o2(0xC2,0x8B),      o2(0xC2,0x8C),
+          o2(0xC2,0x8D),      o2(0xC2,0x8E),
+          o2(0xC2,0x8F),      o2(0xC2,0x90),
+          o2(0xC2,0x91),      o2(0xC2,0x92),
+          o2(0xC2,0x93),      o2(0xC2,0x94),
+          o2(0xC2,0x95),      o2(0xC2,0x96),
+          o2(0xC2,0x97),      o2(0xC2,0x98),
+          o2(0xC2,0x99),      o2(0xC2,0x9A),
+          o2(0xC2,0x9B),      o2(0xC2,0x9C),
+          o2(0xC2,0x9D),      o2(0xC2,0x9E),
+          o2(0xC2,0x9F),      o2(0xC2,0xA0),
+          o2(0xC2,0xA1),      o2(0xC2,0xA2),
+          o2(0xC2,0xA3), o3(0xE2,0x82,0xAC),
+          o2(0xC2,0xA5),      o2(0xC5,0xA0),
+          o2(0xC2,0xA7),      o2(0xC5,0xA1),
+          o2(0xC2,0xA9),      o2(0xC2,0xAA),
+          o2(0xC2,0xAB),      o2(0xC2,0xAC),
+          o2(0xC2,0xAD),      o2(0xC2,0xAE),
+          o2(0xC2,0xAF),      o2(0xC2,0xB0),
+          o2(0xC2,0xB1),      o2(0xC2,0xB2),
+          o2(0xC2,0xB3),      o2(0xC5,0xBD),
+          o2(0xC2,0xB5),      o2(0xC2,0xB6),
+          o2(0xC2,0xB7),      o2(0xC5,0xBE),
+          o2(0xC2,0xB9),      o2(0xC2,0xBA),
+          o2(0xC2,0xBB),      o2(0xC5,0x92),
+          o2(0xC5,0x93),      o2(0xC5,0xB8),
+          o2(0xC2,0xBF),      o2(0xC3,0x80),
+          o2(0xC3,0x81),      o2(0xC3,0x82),
+          o2(0xC3,0x83),      o2(0xC3,0x84),
+          o2(0xC3,0x85),      o2(0xC3,0x86),
+          o2(0xC3,0x87),      o2(0xC3,0x88),
+          o2(0xC3,0x89),      o2(0xC3,0x8A),
+          o2(0xC3,0x8B),      o2(0xC3,0x8C),
+          o2(0xC3,0x8D),      o2(0xC3,0x8E),
+          o2(0xC3,0x8F),      o2(0xC3,0x90),
+          o2(0xC3,0x91),      o2(0xC3,0x92),
+          o2(0xC3,0x93),      o2(0xC3,0x94),
+          o2(0xC3,0x95),      o2(0xC3,0x96),
+          o2(0xC3,0x97),      o2(0xC3,0x98),
+          o2(0xC3,0x99),      o2(0xC3,0x9A),
+          o2(0xC3,0x9B),      o2(0xC3,0x9C),
+          o2(0xC3,0x9D),      o2(0xC3,0x9E),
+          o2(0xC3,0x9F),      o2(0xC3,0xA0),
+          o2(0xC3,0xA1),      o2(0xC3,0xA2),
+          o2(0xC3,0xA3),      o2(0xC3,0xA4),
+          o2(0xC3,0xA5),      o2(0xC3,0xA6),
+          o2(0xC3,0xA7),      o2(0xC3,0xA8),
+          o2(0xC3,0xA9),      o2(0xC3,0xAA),
+          o2(0xC3,0xAB),      o2(0xC3,0xAC),
+          o2(0xC3,0xAD),      o2(0xC3,0xAE),
+          o2(0xC3,0xAF),      o2(0xC3,0xB0),
+          o2(0xC3,0xB1),      o2(0xC3,0xB2),
+          o2(0xC3,0xB3),      o2(0xC3,0xB4),
+          o2(0xC3,0xB5),      o2(0xC3,0xB6),
+          o2(0xC3,0xB7),      o2(0xC3,0xB8),
+          o2(0xC3,0xB9),      o2(0xC3,0xBA),
+          o2(0xC3,0xBB),      o2(0xC3,0xBC),
+          o2(0xC3,0xBD),      o2(0xC3,0xBE),
+          o2(0xC3,0xBF),
 };
 const BYTE_LOOKUP
 from_ISO_8859_15 = {
@@ -3118,25 +2814,26 @@
 to_ISO_8859_15_C2_offsets[64] = {
       0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
      16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, 33, 34, 35, -1, 36, -1, 37,   -1, 38, 39, 40, 41, 42, 43, 44,
-     45, 46, 47, 48, -1, 49, 50, 51,   -1, 52, 53, 54, -1, -1, -1, 55,
+     32, 33, 34, 35, 56, 36, 56, 37,   56, 38, 39, 40, 41, 42, 43, 44,
+     45, 46, 47, 48, 56, 49, 50, 51,   56, 52, 53, 54, 56, 56, 56, 55,
 };
 static const struct byte_lookup* const
-to_ISO_8859_15_C2_infos[56] = {
-     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
-     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
-     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
-     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
-     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
-     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
-     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
-     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
-     o1('\xA0'), o1('\xA1'), o1('\xA2'), o1('\xA3'),
-     o1('\xA5'), o1('\xA7'), o1('\xA9'), o1('\xAA'),
-     o1('\xAB'), o1('\xAC'), o1('\xAD'), o1('\xAE'),
-     o1('\xAF'), o1('\xB0'), o1('\xB1'), o1('\xB2'),
-     o1('\xB3'), o1('\xB5'), o1('\xB6'), o1('\xB7'),
-     o1('\xB9'), o1('\xBA'), o1('\xBB'), o1('\xBF'),
+to_ISO_8859_15_C2_infos[57] = {
+     o1(0x80), o1(0x81), o1(0x82), o1(0x83),
+     o1(0x84), o1(0x85), o1(0x86), o1(0x87),
+     o1(0x88), o1(0x89), o1(0x8A), o1(0x8B),
+     o1(0x8C), o1(0x8D), o1(0x8E), o1(0x8F),
+     o1(0x90), o1(0x91), o1(0x92), o1(0x93),
+     o1(0x94), o1(0x95), o1(0x96), o1(0x97),
+     o1(0x98), o1(0x99), o1(0x9A), o1(0x9B),
+     o1(0x9C), o1(0x9D), o1(0x9E), o1(0x9F),
+     o1(0xA0), o1(0xA1), o1(0xA2), o1(0xA3),
+     o1(0xA5), o1(0xA7), o1(0xA9), o1(0xAA),
+     o1(0xAB), o1(0xAC), o1(0xAD), o1(0xAE),
+     o1(0xAF), o1(0xB0), o1(0xB1), o1(0xB2),
+     o1(0xB3), o1(0xB5), o1(0xB6), o1(0xB7),
+     o1(0xB9), o1(0xBA), o1(0xBB), o1(0xBF),
+        UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_C2 = {
@@ -3144,49 +2841,23 @@
     to_ISO_8859_15_C2_infos
 };
 
-static const unsigned char
-to_ISO_8859_15_C3_offsets[64] = {
-      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
-     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
-};
-static const struct byte_lookup* const
-to_ISO_8859_15_C3_infos[64] = {
-     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
-     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
-     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
-     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
-     o1('\xD0'), o1('\xD1'), o1('\xD2'), o1('\xD3'),
-     o1('\xD4'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
-     o1('\xD8'), o1('\xD9'), o1('\xDA'), o1('\xDB'),
-     o1('\xDC'), o1('\xDD'), o1('\xDE'), o1('\xDF'),
-     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
-     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
-     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
-     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
-     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
-     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
-     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
-     o1('\xFC'), o1('\xFD'), o1('\xFE'), o1('\xFF'),
-};
 static const BYTE_LOOKUP
 to_ISO_8859_15_C3 = {
     to_ISO_8859_15_C3_offsets,
-    to_ISO_8859_15_C3_infos
+    to_ISO_8859_1_C3_infos
 };
 
 static const unsigned char
 to_ISO_8859_15_C5_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  0,  1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-      2,  3, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,    4, -1, -1, -1, -1,  5,  6, -1,
+      7,  7,  7,  7,  7,  7,  7,  7,    7,  7,  7,  7,  7,  7,  7,  7,
+      7,  7,  0,  1,  7,  7,  7,  7,    7,  7,  7,  7,  7,  7,  7,  7,
+      2,  3,  7,  7,  7,  7,  7,  7,    7,  7,  7,  7,  7,  7,  7,  7,
+      7,  7,  7,  7,  7,  7,  7,  7,    4,  7,  7,  7,  7,  5,  6,  7,
 };
 static const struct byte_lookup* const
-to_ISO_8859_15_C5_infos[7] = {
-     o1('\xBC'), o1('\xBD'), o1('\xA6'), o1('\xA8'),
-     o1('\xBE'), o1('\xB4'), o1('\xB8'),
+to_ISO_8859_15_C5_infos[8] = {
+     o1(0xBC), o1(0xBD), o1(0xA6), o1(0xA8),
+     o1(0xBE), o1(0xB4), o1(0xB8),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_C5 = {
@@ -3196,14 +2867,14 @@
 
 static const unsigned char
 to_ISO_8859_15_E2_82_offsets[64] = {
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1,  0, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  0,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_15_E2_82_infos[1] = {
-     o1('\xA4'),
+to_ISO_8859_15_E2_82_infos[2] = {
+     o1(0xA4),    UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_E2_82 = {
@@ -3213,14 +2884,14 @@
 
 static const unsigned char
 to_ISO_8859_15_E2_offsets[64] = {
-     -1, -1,  0, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      1,  1,  0,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
+      1,  1,  1,  1,  1,  1,  1,  1,    1,  1,  1,  1,  1,  1,  1,  1,
 };
 static const struct byte_lookup* const
-to_ISO_8859_15_E2_infos[1] = {
-     &to_ISO_8859_15_E2_82,
+to_ISO_8859_15_E2_infos[2] = {
+     &to_ISO_8859_15_E2_82,                 UNDEF,
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_E2 = {
@@ -3238,19 +2909,20 @@
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
       0,  0,  0,  0,  0,  0,  0,  0,    0,  0,  0,  0,  0,  0,  0,  0,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  1,  2, -1,  3, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1,  4, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
-     -1, -1, -1, -1, -1, -1, -1, -1,   -1, -1, -1, -1, -1, -1, -1, -1,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  1,  2,  5,  3,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  4,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
+      5,  5,  5,  5,  5,  5,  5,  5,    5,  5,  5,  5,  5,  5,  5,  5,
 };
 static const struct byte_lookup* const
-to_ISO_8859_15_infos[5] = {
-                  NOMAP, &to_ISO_8859_15_C2, &to_ISO_8859_15_C3, &to_ISO_8859_15_C5,
-     &to_ISO_8859_15_E2,
+to_ISO_8859_15_infos[6] = {
+                  NOMAP, &to_ISO_8859_15_C2,
+     &to_ISO_8859_15_C3, &to_ISO_8859_15_C5,
+     &to_ISO_8859_15_E2,              UNDEF,
 };
 const BYTE_LOOKUP
 to_ISO_8859_15 = {
@@ -3258,3 +2930,4 @@
     to_ISO_8859_15_infos
 };
 
+/* Footprint (bytes): gross: 27684, saved: 3712, net: 23972 */
Index: version.h
===================================================================
--- version.h	(revision 14250)
+++ version.h	(revision 14251)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.9.0"
-#define RUBY_RELEASE_DATE "2007-12-16"
+#define RUBY_RELEASE_DATE "2007-12-17"
 #define RUBY_VERSION_CODE 190
-#define RUBY_RELEASE_CODE 20071216
+#define RUBY_RELEASE_CODE 20071217
 #define RUBY_PATCHLEVEL 0
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 0
 #define RUBY_RELEASE_YEAR 2007
 #define RUBY_RELEASE_MONTH 12
-#define RUBY_RELEASE_DAY 16
+#define RUBY_RELEASE_DAY 17
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: test/ruby/test_transcode.rb
===================================================================
--- test/ruby/test_transcode.rb	(revision 14250)
+++ test/ruby/test_transcode.rb	(revision 14251)
@@ -27,6 +27,7 @@
     assert_raise(ArgumentError) { 'abc'.encode!('foo', 'bar') }
     assert_raise(ArgumentError) { 'abc'.force_encoding('utf-8').encode('foo') }
     assert_raise(ArgumentError) { 'abc'.force_encoding('utf-8').encode!('foo') }
+    assert_raise(RuntimeError) { "\xA5".encode('utf-8','iso-8859-3') }
   end
 
   def test_arguments
Index: transcode.c
===================================================================
--- transcode.c	(revision 14250)
+++ transcode.c	(revision 14251)
@@ -191,7 +191,6 @@
 	next_byte = (unsigned char)*in_p++;
       follow_byte:
 	next_offset = next_table->base[next_byte];
-	if (next_offset == (base_element)-1) goto illegal;
 	next_info = (VALUE)next_table->info[next_offset];
 	switch (next_info & 0x1F) {
 	  case NOMAP:
@@ -234,7 +233,7 @@
 	    goto illegal;
 	  case UNDEF:
 	    /* todo: add code for alternative behaviors */
-	    rb_raise(rb_eRuntimeError /*@@@change exception*/, "conversion undefined for byte sequence");
+	    rb_raise(rb_eRuntimeError /*@@@change exception*/, "conversion undefined for byte sequence (maybe illegal byte sequence)");
 	    continue;
 	}
 	continue;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]