]> code.delx.au - gnu-emacs/blobdiff - lisp/international/code-pages.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / international / code-pages.el
index 9e237867c43424ff71891bc44769adaa77a2e5e4..5007a00b16d2bba0927380a704f8308733557b19 100644 (file)
@@ -1,24 +1,30 @@
 ;;; code-pages.el --- coding systems for assorted codepages  -*-coding: utf-8;-*-
 
-;; Copyright (C) 2001  Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;;   Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H14PRO021
 
 ;; Author: Dave Love <fx@gnu.org>
 ;; Keywords: i18n
 
-;; This file is free software; you can redistribute it and/or modify
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 ;; the Free Software Foundation; either version 2, or (at your option)
 ;; any later version.
 
-;; This file is distributed in the hope that it will be useful,
+;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 
 ;; Those covered are: cp437, cp737, cp720, cp775, cp850, cp851, cp852,
 ;; cp855, cp857, cp860, cp861, cp862, cp863, cp864, cp865, cp866,
-;; cp869, cp874, cp1125, windows-1250, windows-1251, windows-1252,
-;; windows-1253, windows-1254, windows-1255, windows-1256,
-;; windows-1257, windows-1258, next, koi8-r, koi8-u, iso-8859-6,
-;; iso-8859-10, iso-8859-12, iso-8859-16, koi8-t, georgian-ps.  This
-;; is meant to include all the single-byte ones relevant to GNU (used
-;; in glibc-defined locales); we don't yet get all the multibyte ones
-;; in base Emacs.
+;; cp869, cp874, cp1125, windows-1250, windows-1253, windows-1254,
+;; windows-1255, windows-1256, windows-1257, windows-1258, next,
+;; iso-8859-6, iso-8859-10, iso-8859-11, iso-8859-16, koi8-t,
+;; georgian-ps.  This is meant to include all the single-byte ones
+;; relevant to GNU (used in glibc-defined locales); we don't yet get
+;; all the multibyte ones in base Emacs.
 
-;; Note that koi8-r and cp866 (alternativnyj) clash with the
-;; iso8859-5-based versions in cyrillic.el (which should be changed),
-;; and others can clash with definitions in codepage.el; we try to
-;; avoid damage from that.  A few CPs from codepage.el (770, 773, 774)
-;; aren't covered (in the absence of translation tables to Unicode).
+;; Note that various of these can clash with definitions in
+;; codepage.el; we try to avoid damage from that.  A few CPs from
+;; codepage.el (770, 773, 774) aren't covered (in the absence of
+;; translation tables to Unicode).
 
 ;; Compile this, to avoid loading `ccl' at runtime.
 
 
 ;;; Code:
 
-(defun cp-make-translation-table (v)
+;; The defsubsts here are just so that language files can use
+;; `cp-make-coding-system' and not require functions from this file
+;; at runtime.
+
+(defsubst cp-make-translation-table (v)
   "Return a translation table made from 128-long vector V.
 V comprises characters encodable by mule-utf-8."
   (let ((encoding-vector (make-vector 256 0)))
@@ -61,9 +69,20 @@ V comprises characters encodable by mule-utf-8."
       (aset encoding-vector i i))
     (dotimes (i 128)
       (aset encoding-vector (+ i 128) (aref v i)))
-    (make-translation-table-from-vector encoding-vector)))
+    ;; Add equivalent characters to the encoder so that we can unify
+    ;; on encoding.
+    (let* ((tab (make-translation-table-from-vector encoding-vector))
+          ;; Translation table used for encoding:
+          (encode-table (char-table-extra-slot tab 0)))
+      (map-char-table (lambda (c v)
+                       (if v
+                           (let ((c1 (aref encode-table v)))
+                             (if c1    ; we encode that unicode
+                                 (aset encode-table c c1)))))
+                     ucs-mule-to-mule-unicode)
+      tab)))
 
-(defun cp-valid-codes (v)
+(defsubst cp-valid-codes (v)
   "Derive a valid-codes list for translation vector V.
 See `make-coding-system'."
   (let (pairs
@@ -82,28 +101,10 @@ See `make-coding-system'."
     (if start (push (cons start end) pairs))
     (nreverse pairs)))
 
-(defun cp-fix-safe-chars (cs)
-  "Remove `char-coding-system-table' entries from previous definition of CS.
-CS is a base coding system or alias."
-  (when (coding-system-p cs)
-    (let ((chars (coding-system-get cs 'safe-chars)))
-      (map-char-table
-       (lambda (k v)
-        (if (and v (not (eq v t)))
-            (aset char-coding-system-table
-                  k
-                  (remq cs (aref char-coding-system-table v)))))
-       chars))))
-
-;; Fix things that have been, or might be done by codepage.el.
+;; Fix things that have been, or might be, done by codepage.el.
 (eval-after-load "codepage"
   '(progn
 
-     (dolist (cs '(cp857 cp861 cp1253 cp852 cp866 cp437 cp855 cp869 cp775
-                  cp862 cp864 cp1250 cp863 cp865 cp1251 cp737 cp1257 cp850
-                  cp860 cp851 720))
-       (cp-fix-safe-chars cs))
-
 ;; Semi-dummy version for the stuff in codepage.el which we don't
 ;; define here.  (Used by mule-diag.)
 (defun cp-supported-codepages ()
@@ -130,7 +131,7 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal."
   (interactive
    (let ((completion-ignore-case t)
         (candidates (cp-supported-codepages)))
-     (list (completing-read "Setup DOS Codepage: (default 437) " candidates
+     (list (completing-read "Setup DOS Codepage (default 437): " candidates
                            nil t nil nil "437"))))
   (let ((cp (format "cp%s" codepage)))
     (unless (coding-system-p (intern cp))
@@ -138,36 +139,16 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal."
        cp (cp-charset-for-codepage cp) (cp-offset-for-codepage cp))))))
 )                                      ; eval-after-load
 
-;; Somewhat amended from the version in mule-diag.el, needed below.
-(defvar non-iso-charset-alist
-  `((mac-roman
-     nil
-     mac-roman-decoder
-     ((0 255)))
-    (viscii
-     (ascii vietnamese-viscii-lower vietnamese-viscii-upper)
-     viet-viscii-nonascii-translation-table
-     ((0 255)))
-    (big5
-     (ascii chinese-big5-1 chinese-big5-2)
-     decode-big5-char
-     ((32 127)
-      ((?\xA1 ?\xFE) . (?\x40 ?\x7E ?\xA1 ?\xFE))))
-    (sjis
-     (ascii katakana-jisx0201 japanese-jisx0208)
-     decode-sjis-char
-     ((32 127 ?\xA1 ?\xDF)
-      ((?\x81 ?\x9F ?\xE0 ?\xEF) . (?\x40 ?\x7E ?\x80 ?\xFC))))))
-
 ;; Macro to allow ccl compilation at byte-compile time, avoiding
 ;; loading ccl.
 ;;;###autoload
 (defmacro cp-make-coding-system (name v &optional doc-string mnemonic)
   "Make coding system NAME for and 8-bit, extended-ASCII character set.
 V is a 128-long vector of characters to translate the upper half of
-the charactert set.  DOC-STRING and MNEMONIC are used as the
+the character set.  DOC-STRING and MNEMONIC are used as the
 corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
-?* is used."
+?* is used.
+Return an updated `non-iso-charset-alist'."
   (let* ((encoder (intern (format "encode-%s" name)))
         (decoder (intern (format "decode-%s" name)))
         (ccl-decoder
@@ -181,6 +162,9 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
                     (r0 = ,(charset-id 'eight-bit-control))
                   (r0 = ,(charset-id 'eight-bit-graphic))))
               (translate-character ,decoder r0 r1)
+              ;; Allow fragmentation on decoding -- relevant for
+              ;; Cyrillic, Greek and, possibly Arabic and Hebrew.
+              (translate-character utf-translation-table-for-decode r0 r1)
               (write-multibyte-character r0 r1)
               (repeat))))))
         (ccl-encoder
@@ -189,30 +173,41 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
             ((loop
               (read-multibyte-character r0 r1)
               (translate-character ,encoder r0 r1)
+              (if (r0 != ,(charset-id 'ascii))
+                  (if (r0 != ,(charset-id 'eight-bit-graphic))
+                      (if (r0 != ,(charset-id 'eight-bit-control))
+                          (r1 = ??))))
               (write-repeat r1)))))))
     `(let ((translation-table (cp-make-translation-table ,v))
           (codes (cp-valid-codes ,v)))
        (define-translation-table ',decoder translation-table)
        (define-translation-table ',encoder
         (char-table-extra-slot translation-table 0))
-       (cp-fix-safe-chars ',name)
        (make-coding-system
        ',name 4 ,(or mnemonic ?*)
        (or ,doc-string (format "%s encoding" ',name))
        (cons ,ccl-decoder ,ccl-encoder)
        (list (cons 'safe-chars (get ',encoder 'translation-table))
              (cons 'valid-codes codes)
-             (cons 'mime-charset ',name)))
-       (push (list ',name
-                  nil                  ; charset list
-                  ',decoder
-                  (let (l)             ; code range
-                    (dolist (elt (reverse codes))
-                      (push (cdr elt) l)
-                      (push (car elt) l))
-                    (list l)))
-            non-iso-charset-alist))))
+             (cons 'mime-charset ',name)
+             ;; For Quail translation.  Fixme: this should really be
+             ;; a separate table that only translates the coding
+             ;; system's safe-chars.
+             (cons 'translation-table-for-input 'ucs-mule-to-mule-unicode)))
+       (let ((slot (assq ',name non-iso-charset-alist))
+            (elt (list nil                     ; charset list
+                       ',decoder
+                       (let (l)                ; code range
+                         (dolist (elt (reverse codes))
+                           (push (cdr elt) l)
+                           (push (car elt) l))
+                         (list l)))))
+        (if (not slot)
+            (push (cons ',name elt) non-iso-charset-alist)
+          (setcdr slot elt)
+          non-iso-charset-alist)))))
 
+(eval-when-compile (defvar non-iso-charset-alist))
 
 ;; These tables were mostly derived by running somthing like
 ;; `recode -f cpxxx/..utf-8' on a binary file filled by
@@ -222,6 +217,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 
 ;; Fixme: Do better for mode-line mnemonics?
 
+;;;###autoload(autoload-coding-system 'cp437 '(require 'code-pages))
 (cp-make-coding-system
  cp437
  [?\Ç
@@ -353,6 +349,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp737 '(require 'code-pages))
 (cp-make-coding-system
  cp737
  [?\Α
@@ -485,6 +482,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ ])
 (coding-system-put 'cp737 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp775 '(require 'code-pages))
 (cp-make-coding-system
  cp775
  [?\Ć
@@ -616,6 +614,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp850 '(require 'code-pages))
 (cp-make-coding-system
  cp850
  [?\Ç
@@ -747,6 +746,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp851 '(require 'code-pages))
 (cp-make-coding-system
  cp851
  [?\Ç
@@ -878,6 +878,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp852 '(require 'code-pages))
 (cp-make-coding-system
  cp852
  [?\Ç
@@ -1009,6 +1010,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp855 '(require 'code-pages))
 (cp-make-coding-system
  cp855
  [?\ђ
@@ -1140,6 +1142,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp857 '(require 'code-pages))
 (cp-make-coding-system
  cp857
  [?\Ç
@@ -1271,6 +1274,139 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp858 '(require 'code-pages))
+(cp-make-coding-system
+ cp858
+ [?\Ç
+  ?\ü
+  ?\é
+  ?\â
+  ?\ä
+  ?\à
+  ?\å
+  ?\ç
+  ?\ê
+  ?\ë
+  ?\è
+  ?\ï
+  ?\î
+  ?\ì
+  ?\Ä
+  ?\Å
+  ?\É
+  ?\æ
+  ?\Æ
+  ?\ô
+  ?\ö
+  ?\ò
+  ?\û
+  ?\ù
+  ?\ÿ
+  ?\Ö
+  ?\Ü
+  ?\ø
+  ?\£
+  ?\Ø
+  ?\×
+  ?\ƒ
+  ?\á
+  ?\í
+  ?\ó
+  ?\ú
+  ?\ñ
+  ?\Ñ
+  ?\ª
+  ?\º
+  ?\¿
+  ?\®
+  ?\¬
+  ?\½
+  ?\¼
+  ?\¡
+  ?\«
+  ?\»
+  ?\░
+  ?\▒
+  ?\▓
+  ?\│
+  ?\┤
+  ?\Á
+  ?\Â
+  ?\À
+  ?\©
+  ?\╣
+  ?\║
+  ?\╗
+  ?\╝
+  ?\¢
+  ?\¥
+  ?\┐
+  ?\└
+  ?\┴
+  ?\┬
+  ?\├
+  ?\─
+  ?\┼
+  ?\ã
+  ?\Ã
+  ?\╚
+  ?\╔
+  ?\╩
+  ?\╦
+  ?\╠
+  ?\═
+  ?\╬
+  ?\¤
+  ?\ð
+  ?\Ð
+  ?\Ê
+  ?\Ë
+  ?\È
+  ?\€
+  ?\Í
+  ?\Î
+  ?\Ï
+  ?\┘
+  ?\┌
+  ?\█
+  ?\▄
+  ?\¦
+  ?\Ì
+  ?\▀
+  ?\Ó
+  ?\ß
+  ?\Ô
+  ?\Ò
+  ?\õ
+  ?\Õ
+  ?\µ
+  ?\þ
+  ?\Þ
+  ?\Ú
+  ?\Û
+  ?\Ù
+  ?\ý
+  ?\Ý
+  ?\¯
+  ?\´
+  ?\­
+  ?\±
+  ?\‗
+  ?\¾
+  ?\¶
+  ?\§
+  ?\÷
+  ?\¸
+  ?\°
+  ?\¨
+  ?\·
+  ?\¹
+  ?\³
+  ?\²
+  ?\■
+  ?\ ])
+
+;;;###autoload(autoload-coding-system 'cp860 '(require 'code-pages))
 (cp-make-coding-system
  cp860
  [?\Ç
@@ -1402,6 +1538,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp861 '(require 'code-pages))
 (cp-make-coding-system
  cp861
  [?\Ç
@@ -1533,6 +1670,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp862 '(require 'code-pages))
 (cp-make-coding-system
  cp862
  [?\א
@@ -1664,6 +1802,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp863 '(require 'code-pages))
 (cp-make-coding-system
  cp863
  [?\Ç
@@ -1795,6 +1934,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp864 '(require 'code-pages))
 (cp-make-coding-system
  cp864
  [?\°
@@ -1926,6 +2066,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp865 '(require 'code-pages))
 (cp-make-coding-system
  cp865
  [?\Ç
@@ -2057,211 +2198,72 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
-;; ;; This should be the same as cyrillic-alternativnyj,
-;; ;; (<URL:http://czyborra.com/charsets/cyrillic.html>), but code point
-;; ;; 255 in the cyrillic.el alternativnyj table is `№', i.e. point 240
-;; ;; in 8859-5, not no-break space as below; `№' should be at point 252.
-;; (cp-make-coding-system
-;;  cp866
-;;  [?\А
-;;   ?\Б
-;;   ?\В
-;;   ?\Г
-;;   ?\Д
-;;   ?\Е
-;;   ?\Ж
-;;   ?\З
-;;   ?\И
-;;   ?\Й
-;;   ?\К
-;;   ?\Л
-;;   ?\М
-;;   ?\Н
-;;   ?\О
-;;   ?\П
-;;   ?\Р
-;;   ?\С
-;;   ?\Т
-;;   ?\У
-;;   ?\Ф
-;;   ?\Х
-;;   ?\Ц
-;;   ?\Ч
-;;   ?\Ш
-;;   ?\Щ
-;;   ?\Ъ
-;;   ?\Ы
-;;   ?\Ь
-;;   ?\Э
-;;   ?\Ю
-;;   ?\Я
-;;   ?\а
-;;   ?\б
-;;   ?\в
-;;   ?\г
-;;   ?\д
-;;   ?\е
-;;   ?\ж
-;;   ?\з
-;;   ?\и
-;;   ?\й
-;;   ?\к
-;;   ?\л
-;;   ?\м
-;;   ?\н
-;;   ?\о
-;;   ?\п
-;;   ?\░
-;;   ?\▒
-;;   ?\▓
-;;   ?\│
-;;   ?\┤
-;;   ?\╡
-;;   ?\╢
-;;   ?\╖
-;;   ?\╕
-;;   ?\╣
-;;   ?\║
-;;   ?\╗
-;;   ?\╝
-;;   ?\╜
-;;   ?\╛
-;;   ?\┐
-;;   ?\└
-;;   ?\┴
-;;   ?\┬
-;;   ?\├
-;;   ?\─
-;;   ?\┼
-;;   ?\╞
-;;   ?\╟
-;;   ?\╚
-;;   ?\╔
-;;   ?\╩
-;;   ?\╦
-;;   ?\╠
-;;   ?\═
-;;   ?\╬
-;;   ?\╧
-;;   ?\╨
-;;   ?\╤
-;;   ?\╥
-;;   ?\╙
-;;   ?\╘
-;;   ?\╒
-;;   ?\╓
-;;   ?\╫
-;;   ?\╪
-;;   ?\┘
-;;   ?\┌
-;;   ?\█
-;;   ?\▄
-;;   ?\▌
-;;   ?\▐
-;;   ?\▀
-;;   ?\р
-;;   ?\с
-;;   ?\т
-;;   ?\у
-;;   ?\ф
-;;   ?\х
-;;   ?\ц
-;;   ?\ч
-;;   ?\ш
-;;   ?\щ
-;;   ?\ъ
-;;   ?\ы
-;;   ?\ь
-;;   ?\э
-;;   ?\ю
-;;   ?\я
-;;   ?\Ё
-;;   ?\ё
-;;   ?\Є
-;;   ?\є
-;;   ?\Ї
-;;   ?\ї
-;;   ?\Ў
-;;   ?\ў
-;;   ?\°
-;;   ?\∙
-;;   ?\·
-;;   ?\√
-;;   ?\№
-;;   ?\¤
-;;   ?\■
-;;   ?\ ]
-;;  "CP866 (Cyrillic Alternativnyj) encoding using Unicode."
-;;  ?A)
-;; (define-coding-system-alias 'alternativnyj 'cp866)
-;; (cp-fix-safe-chars 'cyrillic-alternativnyj)
-;; (define-coding-system-alias 'cyrillic-alternativnyj 'cp866)
-
+;;;###autoload(autoload-coding-system 'cp866 '(require 'code-pages))
 (cp-make-coding-system
- cp869
- [nil
-  nil
-  nil
-  nil
-  nil
-  nil
-  ?\Ά
-  nil
-  ?\·
-  ?\¬
-  ?\¦
-  ?\â\80\9b
-  ?\
-  ?\Έ
-  ?\
-  ?\Ή
-  ?\Ί
-  ?\Ϊ
-  ?\Ό
-  nil
-  nil
-  ?\Ύ
-  ?\Ϋ
-  ?\©
-  ?\Ώ
-  ?\²
-  ?\³
-  ?\ά
-  ?\£
-  ?\έ
-  ?\ή
-  ?\ί
-  ?\ϊ
-  ?\ΐ
-  ?\ό
-  ?\ύ
-  ?\Α
-  ?\Β
-  ?\Γ
-  ?\Δ
-  ?\Ε
-  ?\Ζ
-  ?\Η
-  ?\½
-  ?\Θ
-  ?\Ι
-  ?\«
-  ?\»
+ cp866
+ [?\А
+  ?\Б
+  ?\В
+  ?\Г
+  ?\Д
+  ?\Е
+  ?\Ж
+  ?\З
+  ?\И
+  ?\Й
+  ?\К
+  ?\Ð\9b
+  ?\М
+  ?\Н
+  ?\О
+  ?\П
+  ?\Р
+  ?\С
+  ?\Т
+  ?\У
+  ?\Ф
+  ?\Х
+  ?\Ц
+  ?\Ч
+  ?\Ш
+  ?\Щ
+  ?\Ъ
+  ?\Ы
+  ?\Ь
+  ?\Э
+  ?\Ю
+  ?\Я
+  ?\а
+  ?\б
+  ?\в
+  ?\г
+  ?\д
+  ?\е
+  ?\ж
+  ?\з
+  ?\и
+  ?\й
+  ?\к
+  ?\л
+  ?\м
+  ?\н
+  ?\о
+  ?\п
   ?\░
   ?\▒
   ?\▓
   ?\│
   ?\┤
-  ?\Κ
-  ?\Λ
-  ?\Μ
-  ?\Ν
+  ?\
+  ?\
+  ?\
+  ?\
   ?\╣
   ?\║
   ?\╗
   ?\╝
-  ?\Ξ
-  ?\Ο
+  ?\
+  ?\
   ?\┐
   ?\└
   ?\┴
@@ -2269,8 +2271,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\├
   ?\─
   ?\┼
-  ?\Π
-  ?\Ρ
+  ?\
+  ?\
   ?\╚
   ?\╔
   ?\╩
@@ -2278,13 +2280,147 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\╠
   ?\═
   ?\╬
-  ?\Σ
-  ?\Τ
-  ?\Υ
-  ?\Φ
-  ?\Χ
-  ?\Ψ
-  ?\Ω
+  ?\╧
+  ?\╨
+  ?\╤
+  ?\╥
+  ?\╙
+  ?\╘
+  ?\╒
+  ?\╓
+  ?\╫
+  ?\╪
+  ?\┘
+  ?\┌
+  ?\█
+  ?\▄
+  ?\▌
+  ?\▐
+  ?\▀
+  ?\р
+  ?\с
+  ?\т
+  ?\у
+  ?\ф
+  ?\х
+  ?\ц
+  ?\ч
+  ?\ш
+  ?\щ
+  ?\ъ
+  ?\ы
+  ?\ь
+  ?\э
+  ?\ю
+  ?\я
+  ?\Ё
+  ?\ё
+  ?\Є
+  ?\є
+  ?\Ї
+  ?\ї
+  ?\Ў
+  ?\ў
+  ?\°
+  ?\∙
+  ?\·
+  ?\√
+  ?\№
+  ?\¤
+  ?\■
+  ?\ ]
+ "CP866 (Cyrillic)."
+ ?A)
+
+;;;###autoload(autoload-coding-system 'cp869 '(require 'code-pages))
+(cp-make-coding-system
+ cp869
+ [nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?\Ά
+  nil
+  ?\·
+  ?\¬
+  ?\¦
+  ?\‛
+  ?\’
+  ?\Έ
+  ?\—
+  ?\Ή
+  ?\Ί
+  ?\Ϊ
+  ?\Ό
+  nil
+  nil
+  ?\Ύ
+  ?\Ϋ
+  ?\©
+  ?\Ώ
+  ?\²
+  ?\³
+  ?\ά
+  ?\£
+  ?\έ
+  ?\ή
+  ?\ί
+  ?\ϊ
+  ?\ΐ
+  ?\ό
+  ?\ύ
+  ?\Α
+  ?\Β
+  ?\Γ
+  ?\Δ
+  ?\Ε
+  ?\Ζ
+  ?\Η
+  ?\½
+  ?\Θ
+  ?\Ι
+  ?\«
+  ?\»
+  ?\░
+  ?\▒
+  ?\▓
+  ?\│
+  ?\┤
+  ?\Κ
+  ?\Λ
+  ?\Μ
+  ?\Ν
+  ?\╣
+  ?\║
+  ?\╗
+  ?\╝
+  ?\Ξ
+  ?\Ο
+  ?\┐
+  ?\└
+  ?\┴
+  ?\┬
+  ?\├
+  ?\─
+  ?\┼
+  ?\Π
+  ?\Ρ
+  ?\╚
+  ?\╔
+  ?\╩
+  ?\╦
+  ?\╠
+  ?\═
+  ?\╬
+  ?\Σ
+  ?\Τ
+  ?\Υ
+  ?\Φ
+  ?\Χ
+  ?\Ψ
+  ?\Ω
   ?\α
   ?\β
   ?\γ
@@ -2328,6 +2464,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\■
   ?\ ])
 
+;;;###autoload(autoload-coding-system 'cp874 '(require 'code-pages))
 (cp-make-coding-system
  cp874
  [?\€
@@ -2459,6 +2596,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil
   nil])
 
+;;;###autoload(autoload-coding-system 'windows-1250 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1250 '(require 'code-pages))
 (cp-make-coding-system
  windows-1250
  [?\€
@@ -2590,270 +2729,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ţ
   ?\˙])
 
-;; be_BY, bg_BG
-(cp-make-coding-system
- windows-1251
- [?\Ђ
-  ?\Ѓ
-  ?\‚
-  ?\ѓ
-  ?\„
-  ?\…
-  ?\†
-  ?\‡
-  ?\€
-  ?\‰
-  ?\Љ
-  ?\‹
-  ?\Њ
-  ?\Ќ
-  ?\Ћ
-  ?\Џ
-  ?\ђ
-  ?\‘
-  ?\’
-  ?\“
-  ?\”
-  ?\•
-  ?\–
-  ?\—
-  nil
-  ?\™
-  ?\љ
-  ?\›
-  ?\њ
-  ?\ќ
-  ?\ћ
-  ?\џ
-  ?\ 
-  ?\Ў
-  ?\ў
-  ?\Ј
-  ?\¤
-  ?\Ґ
-  ?\¦
-  ?\§
-  ?\Ё
-  ?\©
-  ?\Є
-  ?\«
-  ?\¬
-  ?\­
-  ?\®
-  ?\Ї
-  ?\°
-  ?\±
-  ?\І
-  ?\і
-  ?\ґ
-  ?\µ
-  ?\¶
-  ?\·
-  ?\ё
-  ?\№
-  ?\є
-  ?\»
-  ?\ј
-  ?\Ѕ
-  ?\ѕ
-  ?\ї
-  ?\А
-  ?\Б
-  ?\В
-  ?\Г
-  ?\Д
-  ?\Е
-  ?\Ж
-  ?\З
-  ?\И
-  ?\Й
-  ?\К
-  ?\Л
-  ?\М
-  ?\Н
-  ?\О
-  ?\П
-  ?\Р
-  ?\С
-  ?\Т
-  ?\У
-  ?\Ф
-  ?\Х
-  ?\Ц
-  ?\Ч
-  ?\Ш
-  ?\Щ
-  ?\Ъ
-  ?\Ы
-  ?\Ь
-  ?\Э
-  ?\Ю
-  ?\Я
-  ?\а
-  ?\б
-  ?\в
-  ?\г
-  ?\д
-  ?\е
-  ?\ж
-  ?\з
-  ?\и
-  ?\й
-  ?\к
-  ?\л
-  ?\м
-  ?\н
-  ?\о
-  ?\п
-  ?\р
-  ?\с
-  ?\т
-  ?\у
-  ?\ф
-  ?\х
-  ?\ц
-  ?\ч
-  ?\ш
-  ?\щ
-  ?\ъ
-  ?\ы
-  ?\ь
-  ?\э
-  ?\ю
-  ?\я]
- nil ?b)
-
-(cp-make-coding-system
- windows-1252
- [?\€
-  nil
-  ?\‚
-  ?\ƒ
-  ?\„
-  ?\…
-  ?\†
-  ?\‡
-  ?\ˆ
-  ?\‰
-  ?\Š
-  ?\‹
-  ?\Œ
-  nil
-  ?\Ž
-  ?\ž
-  nil
-  ?\‘
-  ?\’
-  ?\“
-  ?\”
-  ?\•
-  ?\–
-  ?\—
-  ?\˜
-  ?\™
-  ?\š
-  ?\›
-  ?\œ
-  nil
-  nil
-  ?\Ÿ
-  ?\ 
-  ?\¡
-  ?\¢
-  ?\£
-  ?\¤
-  ?\¥
-  ?\¦
-  ?\§
-  ?\¨
-  ?\©
-  ?\ª
-  ?\«
-  ?\¬
-  ?\­
-  ?\®
-  ?\¯
-  ?\°
-  ?\±
-  ?\²
-  ?\³
-  ?\´
-  ?\µ
-  ?\¶
-  ?\·
-  ?\¸
-  ?\¹
-  ?\º
-  ?\»
-  ?\¼
-  ?\½
-  ?\¾
-  ?\¿
-  ?\À
-  ?\Á
-  ?\Â
-  ?\Ã
-  ?\Ä
-  ?\Å
-  ?\Æ
-  ?\Ç
-  ?\È
-  ?\É
-  ?\Ê
-  ?\Ë
-  ?\Ì
-  ?\Í
-  ?\Î
-  ?\Ï
-  ?\Ð
-  ?\Ñ
-  ?\Ò
-  ?\Ó
-  ?\Ô
-  ?\Õ
-  ?\Ö
-  ?\×
-  ?\Ø
-  ?\Ù
-  ?\Ú
-  ?\Û
-  ?\Ü
-  ?\Ý
-  ?\Þ
-  ?\ß
-  ?\à
-  ?\á
-  ?\â
-  ?\ã
-  ?\ä
-  ?\å
-  ?\æ
-  ?\ç
-  ?\è
-  ?\é
-  ?\ê
-  ?\ë
-  ?\ì
-  ?\í
-  ?\î
-  ?\ï
-  ?\ð
-  ?\ñ
-  ?\ò
-  ?\ó
-  ?\ô
-  ?\õ
-  ?\ö
-  ?\÷
-  ?\ø
-  ?\ù
-  ?\ú
-  ?\û
-  ?\ü
-  ?\ý
-  ?\þ
-  ?\ÿ])
-
+;;;###autoload(autoload-coding-system 'windows-1253 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1253 '(require 'code-pages))
 (cp-make-coding-system
  windows-1253
  [?\€
@@ -2986,6 +2863,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil]
  nil ?g) ;; Greek
 
+;;;###autoload(autoload-coding-system 'windows-1254 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1254 '(require 'code-pages))
 (cp-make-coding-system
  windows-1254
  [?\€
@@ -3118,6 +2997,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ÿ])
 
 ;; yi_US
+;;;###autoload(autoload-coding-system 'windows-1255 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1255 '(require 'code-pages))
 (cp-make-coding-system
  windows-1255
  [?\€
@@ -3250,25 +3131,27 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil]
  nil ?h) ;; Hebrew
 
+;;;###autoload(autoload-coding-system 'windows-1256 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1256 '(require 'code-pages))
 (cp-make-coding-system
  windows-1256
  [?\€
-  ?\Ù 
+  ?\Ù¾
   ?\‚
-  ?\١
+  ?\ƒ
   ?\„
   ?\…
   ?\†
   ?\‡
-  ?\٢
-  ?\٣
-  ?\Ù¤
+  ?\ˆ
+  ?\
+  ?\Ù¹
   ?\‹
-  ?\٥
-  ?\٦
-  ?\٧
-  ?\٨
-  ?\٩
+  ?\Œ
+  ?\چ
+  ?\ژ
+  ?\ڈ
+  ?\گ
   ?\‘
   ?\’
   ?\“
@@ -3276,112 +3159,114 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\•
   ?\–
   ?\—
-  ?\؛
+  ?\ک
   ?\™
-  ?\؟
+  ?\ڑ
   ?\›
-  ?\ء
-  ?\آ
-  ?\أ
-  ?\Ÿ
+  ?\œ
+  ?\
+  ?\
+  ?\ں
   ?\ 
-  ?\ؤ
-  ?\إ
+  ?\Ø\8c
+  ?\¢
   ?\£
   ?\¤
-  ?\ئ
+  ?\¥
   ?\¦
   ?\§
-  ?\ا
+  ?\¨
   ?\©
-  ?\ب
+  ?\ھ
   ?\«
   ?\¬
   ?\­
   ?\®
-  ?\پ
+  ?\¯
   ?\°
   ?\±
-  ?\ة
-  ?\ت
-  ?\ث
+  ?\²
+  ?\³
+  ?\´
   ?\µ
   ?\¶
   ?\·
+  ?\¸
+  ?\¹
+  ?\؛
+  ?\»
+  ?\¼
+  ?\½
+  ?\¾
+  ?\؟
+  ?\ہ
+  ?\ء
+  ?\آ
+  ?\أ
+  ?\ؤ
+  ?\إ
+  ?\ئ
+  ?\ا
+  ?\ب
+  ?\ة
+  ?\ت
+  ?\ث
   ?\ج
-  ?\چ
   ?\ح
-  ?\»
   ?\خ
   ?\د
   ?\ذ
   ?\ر
-  ?\À
   ?\ز
-  ?\Â
-  ?\ژ
   ?\س
   ?\ش
   ?\ص
-  ?\Ç
-  ?\È
-  ?\É
-  ?\Ê
-  ?\Ë
   ?\ض
+  ?\×
   ?\ط
-  ?\Î
-  ?\Ï
-  ?\ㄓ
+  ?\ظ
   ?\ع
   ?\غ
   ?\ـ
-  ?\Ô
   ?\ف
   ?\ق
-  ?\×
   ?\ك
-  ?\Ù
-  ?\گ
-  ?\Û
-  ?\Ü
+  ?\à
   ?\ل
+  ?\â
   ?\م
   ?\ن
-  ?\à
   ?\ه
-  ?\â
-  ?\ځ
   ?\و
-  ?\ى
-  ?\ي
   ?\ç
   ?\è
   ?\é
   ?\ê
   ?\ë
-  ?\Ù\8b
-  ?\Ù\8c
+  ?\Ù\89
+  ?\Ù\8a
   ?\î
   ?\ï
+  ?\ً
+  ?\ٌ
   ?\ٍ
   ?\َ
-  ?\ُ
-  ?\ِ
   ?\ô
-  ?\Ù\91
-  ?\Ù\92
+  ?\Ù\8f
+  ?\Ù\90
   ?\÷
-  nil
+  ?\ّ
   ?\ù
-  nil
+  ?\ْ
   ?\û
   ?\ü
   ?\‎
   ?\‏
-  ?\ÿ]
+  ?\ے]
  nil ?a) ;; Arabic
 
+;;;###autoload(autoload-coding-system 'windows-1257 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1257 '(require 'code-pages))
 (cp-make-coding-system
  windows-1257
  [?\€
@@ -3513,6 +3398,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ž
   nil])
 
+;;;###autoload(autoload-coding-system 'windows-1258 '(require 'code-pages))
+;;;###autoload(autoload-coding-system 'cp1258 '(require 'code-pages))
 (cp-make-coding-system
  windows-1258
  [?\€
@@ -3644,6 +3531,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\₫
   ?\ÿ])
 
+;;;###autoload(autoload-coding-system 'next '(require 'code-pages))
 (cp-make-coding-system
  next
  [?\ 
@@ -3687,11 +3575,11 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ƒ
   ?\§
   ?\¤
-  nil
+  ?\’
   ?\“
   ?\«
-  nil
-  nil
+  ?\‹
+  ?\›
   ?\fi
   ?\fl
   ?\®
@@ -3702,8 +3590,8 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\¦
   ?\¶
   ?\•
-  nil
-  nil
+  ?\‚
+  ?\„
   ?\”
   ?\»
   ?\…
@@ -3776,280 +3664,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   nil]
  "NeXTstep encoding." ?N)
 
-(cp-make-coding-system
- koi8-u
- [?\─
-  ?\│
-  ?\┌
-  ?\┐
-  ?\└
-  ?\┘
-  ?\├
-  ?\┤
-  ?\┬
-  ?\┴
-  ?\┼
-  ?\▀
-  ?\▄
-  ?\█
-  ?\▌
-  ?\▐
-  ?\░
-  ?\▒
-  ?\▓
-  ?\⌠
-  ?\■
-  ?\∙
-  ?\√
-  ?\≈
-  ?\≤
-  ?\≥
-  ?\ 
-  ?\⌡
-  ?\°
-  ?\²
-  ?\·
-  ?\÷
-  ?\═
-  ?\║
-  ?\╒
-  ?\ё
-  ?\є
-  ?\╔
-  ?\і
-  ?\ї
-  ?\╗
-  ?\╘
-  ?\╙
-  ?\╚
-  ?\╛
-  ?\ґ
-  ?\╝
-  ?\╞
-  ?\╟
-  ?\╠
-  ?\╡
-  ?\Ё
-  ?\Є
-  ?\╣
-  ?\І
-  ?\Ї
-  ?\╦
-  ?\╧
-  ?\╨
-  ?\╩
-  ?\╪
-  ?\Ґ
-  ?\╬
-  ?\©
-  ?\ю
-  ?\а
-  ?\б
-  ?\ц
-  ?\д
-  ?\е
-  ?\ф
-  ?\г
-  ?\х
-  ?\и
-  ?\й
-  ?\к
-  ?\л
-  ?\м
-  ?\н
-  ?\о
-  ?\п
-  ?\я
-  ?\р
-  ?\с
-  ?\т
-  ?\у
-  ?\ж
-  ?\в
-  ?\ь
-  ?\ы
-  ?\з
-  ?\ш
-  ?\э
-  ?\щ
-  ?\ч
-  ?\ъ
-  ?\Ю
-  ?\А
-  ?\Б
-  ?\Ц
-  ?\Д
-  ?\Е
-  ?\Ф
-  ?\Г
-  ?\Х
-  ?\И
-  ?\Й
-  ?\К
-  ?\Л
-  ?\М
-  ?\Н
-  ?\О
-  ?\П
-  ?\Я
-  ?\Р
-  ?\С
-  ?\Т
-  ?\У
-  ?\Ж
-  ?\В
-  ?\Ь
-  ?\Ы
-  ?\З
-  ?\Ш
-  ?\Э
-  ?\Щ
-  ?\Ч
-  ?\Ъ]
- "Cyrillic KOI8-U (Ukranian) encoding."
- ?U)
-
-;; ;; Unicode-based, not cyrillic-iso8859-5 based (and thus incomplete)
-;; ;; like the standard version.
-;; (cp-make-coding-system
-;;  ;; The base system uses cyrillic-koi8 as the canonical name, but
-;;  ;; that's not a MIME name.
-;;  koi8-r
-;;  [?\─
-;;   ?\│
-;;   ?\┌
-;;   ?\┐
-;;   ?\└
-;;   ?\┘
-;;   ?\├
-;;   ?\┤
-;;   ?\┬
-;;   ?\┴
-;;   ?\┼
-;;   ?\▀
-;;   ?\▄
-;;   ?\█
-;;   ?\▌
-;;   ?\▐
-;;   ?\░
-;;   ?\▒
-;;   ?\▓
-;;   ?\⌠
-;;   ?\■
-;;   ?\•
-;;   ?\√
-;;   ?\≈
-;;   ?\≤
-;;   ?\≥
-;;   ?\ 
-;;   ?\⌡
-;;   ?\°
-;;   ?\²
-;;   ?\·
-;;   ?\÷
-;;   ?\═
-;;   ?\║
-;;   ?\╒
-;;   ?\ё
-;;   ?\╓
-;;   ?\╔
-;;   ?\╕
-;;   ?\╖
-;;   ?\╗
-;;   ?\╘
-;;   ?\╙
-;;   ?\╚
-;;   ?\╛
-;;   ?\╜
-;;   ?\╝
-;;   ?\╞
-;;   ?\╟
-;;   ?\╠
-;;   ?\╡
-;;   ?\Ё
-;;   ?\╢
-;;   ?\╣
-;;   ?\╤
-;;   ?\╥
-;;   ?\╦
-;;   ?\╧
-;;   ?\╨
-;;   ?\╩
-;;   ?\╪
-;;   ?\╫
-;;   ?\╬
-;;   ?\©
-;;   ?\ю
-;;   ?\а
-;;   ?\б
-;;   ?\ц
-;;   ?\д
-;;   ?\е
-;;   ?\ф
-;;   ?\г
-;;   ?\х
-;;   ?\и
-;;   ?\й
-;;   ?\к
-;;   ?\л
-;;   ?\м
-;;   ?\н
-;;   ?\о
-;;   ?\п
-;;   ?\я
-;;   ?\р
-;;   ?\с
-;;   ?\т
-;;   ?\у
-;;   ?\ж
-;;   ?\в
-;;   ?\ь
-;;   ?\ы
-;;   ?\з
-;;   ?\ш
-;;   ?\э
-;;   ?\щ
-;;   ?\ч
-;;   ?\ъ
-;;   ?\Ю
-;;   ?\А
-;;   ?\Б
-;;   ?\Ц
-;;   ?\Д
-;;   ?\Е
-;;   ?\Ф
-;;   ?\Г
-;;   ?\Х
-;;   ?\И
-;;   ?\Й
-;;   ?\К
-;;   ?\Л
-;;   ?\М
-;;   ?\Н
-;;   ?\О
-;;   ?\П
-;;   ?\Я
-;;   ?\Р
-;;   ?\С
-;;   ?\Т
-;;   ?\У
-;;   ?\Ж
-;;   ?\В
-;;   ?\Ь
-;;   ?\Ы
-;;   ?\З
-;;   ?\Ш
-;;   ?\Э
-;;   ?\Щ
-;;   ?\Ч
-;;   ?\Ъ]
-;;  "Unicode-based KOI8 encoding for Cyrillic (MIME: KOI8-R)"
-;;  ?R)
-;; (cp-fix-safe-chars 'cyrillic-koi8)
-;; (define-coding-system-alias 'cyrillic-koi8 'koi8-r)
-;; (define-coding-system-alias 'koi8 'koi8-r)
-;; (define-coding-system-alias 'cp878 'koi8-r)
-
+;;;###autoload(autoload-coding-system 'koi8-t '(require 'code-pages))
 (cp-make-coding-system
  koi8-t                                        ; used by glibc for tg_TJ
  [?\қ
@@ -4182,10 +3797,11 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\Ъ]
  "Unicode-based KOI8-T encoding for Cyrillic")
 (coding-system-put 'koi8-t 'mime-charset nil) ; not in the IANA list
+(define-coding-system-alias 'cyrillic-koi8-t 'koi8-t)
 
 ;;   Online final ISO draft:
 
-;;     http://www.egt.ie/standards/iso8859/fdis8859-16-en.pdf
+;;     http://www.evertype.com/standards/iso8859/fdis8859-16-en.pdf
 
 ;;   Equivalent National Standard:
 ;;     Romanian Standard SR 14111:1998, Romanian Standards Institution
@@ -4208,6 +3824,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 ;;   ISO 8859-16 was primarily designed for single-byte encoding the Romanian
 ;;   language. The UTF-8 charset is the preferred and in today's MIME software
 ;;   more widely implemented encoding suitable for Romanian.
+;;;###autoload(autoload-coding-system 'iso-8859-16 '(require 'code-pages))
 (cp-make-coding-system
  iso-latin-10                          ; consistent with, e.g. Latin-1
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
@@ -4316,69 +3933,101 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 
 ;; Unicode-based alternative which has the possible advantage of
 ;; having its relative sparseness specified.
+;;;###autoload(autoload-coding-system 'iso-8859-6 '(require 'code-pages))
 (cp-make-coding-system
  ;; The base system uses arabic-iso-8bit, but that's not a MIME charset.
  iso-8859-6
- [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
-  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+ [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
   ?\ 
-  ?\¤
-  ?\،
-  ?\­
-  ?\؛
-  ?\؟
-  ?\ء
-  ?\آ
-  ?\أ
-  ?\ؤ
-  ?\إ
-  ?\ئ
-  ?\ا
-  ?\ب
-  ?\ة
-  ?\ت
-  ?\ث
-  ?\ج
-  ?\ح
-  ?\خ
-  ?\د
-  ?\ذ
-  ?\ر
-  ?\ز
-  ?\س
-  ?\ش
-  ?\ص
-  ?\ض
-  ?\ط
-  ?\ظ
-  ?\ع
-  ?\غ
-  ?\ـ
-  ?\ف
-  ?\ق
-  ?\ك
-  ?\ل
-  ?\م
-  ?\ن
-  ?\ه
-  ?\و
-  ?\ى
-  ?\ي
-  ?\ً
-  ?\ٌ
-  ?\ٍ
-  ?\َ
-  ?\ُ
-  ?\ِ
-  ?\ّ
-  ?\ْ
-  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
-  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
-  nil nil nil nil nil nil nil nil nil nil nil]
+  nil
+  nil
+  nil
+  ?¤
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?،
+  ?­
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?؛
+  nil
+  nil
+  nil
+  ?؟
+  nil
+  ?ء
+  ?آ
+  ?أ
+  ?ؤ
+  ?إ
+  ?ئ
+  ?ا
+  ?ب
+  ?ة
+  ?ت
+  ?ث
+  ?ج
+  ?ح
+  ?خ
+  ?د
+  ?ذ
+  ?ر
+  ?ز
+  ?س
+  ?ش
+  ?ص
+  ?ض
+  ?ط
+  ?ظ
+  ?ع
+  ?غ
+  nil
+  nil
+  nil
+  nil
+  nil
+  ?ـ
+  ?ف
+  ?ق
+  ?ك
+  ?ل
+  ?م
+  ?ن
+  ?ه
+  ?و
+  ?ى
+  ?ي
+  ?ً
+  ?ٌ
+  ?ٍ
+  ?َ
+  ?ُ
+  ?ِ
+  ?ّ
+  ?ْ
+  nil nil nil nil nil nil nil nil nil nil nil nil nil]
  "Unicode-based Arabic ISO/IEC 8859-6 (MIME: ISO-8859-6)"
  ?6)
 (define-coding-system-alias 'arabic-iso-8bit 'iso-8859-6)
 
+;;;###autoload(autoload-coding-system 'iso-8859-10 '(require 'code-pages))
 (cp-make-coding-system
  iso-latin-6
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
@@ -4485,26 +4134,27 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 (define-coding-system-alias 'latin-6 'iso-latin-6)
 
 ;; used by lt_LT, lv_LV, mi_NZ
+;;;###autoload(autoload-coding-system 'iso-8859-13 '(require 'code-pages))
 (cp-make-coding-system
  iso-latin-7
  [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
   nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
   ?\ 
-  ?\¡
+  ?\
   ?\¢
   ?\£
   ?\¤
   ?\„
   ?\¦
   ?\§
-  ?\¨
+  ?\Ø
   ?\©
-  ?\ª
+  ?\Ŗ
   ?\«
   ?\¬
   ?\­
   ?\®
-  ?\¯
+  ?\Æ
   ?\°
   ?\±
   ?\²
@@ -4513,14 +4163,14 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\µ
   ?\¶
   ?\·
-  ?\¸
+  ?\ø
   ?\¹
-  ?\º
+  ?\ŗ
   ?\»
   ?\¼
   ?\½
   ?\¾
-  ?\¿
+  ?\æ
   ?\Ą
   ?\Į
   ?\Ā
@@ -4592,6 +4242,10 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
 (define-coding-system-alias 'iso-8859-13 'iso-latin-7)
 (define-coding-system-alias 'latin-7 'iso-latin-7)
 
+;; Fixme: check on the C1 characters which libiconv includes.  They
+;; are reproduced below, but are probably wrong.  I can't find an
+;; official definition of georgian-ps.
+;;;###autoload(autoload-coding-system 'georgian-ps '(require 'code-pages))
 (cp-make-coding-system
  georgian-ps                           ; used by glibc for ka_GE
  [?\\80
@@ -4725,6 +4379,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
  nil ?G)
 (coding-system-put 'georgian-ps 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp720 '(require 'code-pages))
 ;; From http://www.microsoft.com/globaldev/reference/oem/720.htm
 (cp-make-coding-system
  cp720
@@ -4858,6 +4513,7 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\ ])
 (coding-system-put 'cp720 'mime-charset nil) ; not in IANA list
 
+;;;###autoload(autoload-coding-system 'cp1125 '(require 'code-pages))
 ;; http://oss.software.ibm.com/cvs/icu/charset/data/ucm/ibm-1125_P100-2000.ucm
 (cp-make-coding-system
  cp1125
@@ -4983,28 +4639,75 @@ corresponding args of `make-coding-system'.  If MNEMONIC isn't given,
   ?\і
   ?\Ї
   ?\ї
-  ?\÷
-  ?\±
+  ?\·
+  ?\
   ?\№
   ?\¤
-  ?\
+  ?\
   ?\ ])
-;; Original ;name for cp1125, says Serhii Hlodin <hlodin@lutsk.bank.gov.ua>
+(define-coding-system-alias 'ruscii 'cp1125)
+;; Original name for cp1125, says Serhii Hlodin <hlodin@lutsk.bank.gov.ua>
 (define-coding-system-alias 'cp866u 'cp1125)
+(coding-system-put 'cp1125 'mime-charset nil)
+
+;; Suggested by Anton Zinoviev <anton@lml.bas.bg>: Bulgarian DOS
+;; codepage.  Table at
+;; <http://en.wikipedia.org/wiki/MIK_Code_page>.
+;;;###autoload(autoload-coding-system 'mik '(require 'code-pages))
+(cp-make-coding-system
+ mik
+ [?А ?Б ?В ?Г ?Д ?Е ?Ж ?З ?И ?Й ?К ?Л ?М ?Н ?О ?П ?Р ?С ?Т ?У ?Ф ?Х ?Ц
+  ?Ч ?Ш ?Щ ?Ъ ?Ы ?Ь ?Э ?Ю ?Я ?а ?б ?в ?г ?д ?е ?ж ?з ?и ?й ?к ?л ?м ?н
+  ?о ?п ?р ?с ?т ?у ?ф ?х ?ц ?ч ?ш ?щ ?ъ ?ы ?ь ?э ?ю ?я ?└ ?┴ ?┬ ?├ ?─
+  ?┼ ?╣ ?║ ?╚ ?╔ ?╩ ?╦ ?╠ ?═ ?╬ ?┐ ?░ ?▒ ?▓ ?│ ?┤ ?№ ?§ ?╗ ?╝ ?┘ ?┌ ?█
+  ?▄ ?▌ ?▐ ?▀ ?α ?ß ?Γ ?π ?Σ ?σ ?µ ?τ ?Φ ?Θ ?Ω ?δ ?∞ ?φ ?ε ?∩ ?≡ ?± ?≥
+  ?≤ ?⌠ ?⌡ ?÷ ?≈ ?° ?∙ ?· ?√ ?ⁿ ?² ?■ ? ])
+(coding-system-put 'mik 'mime-charset nil)
+
+;; Suggested by Anton Zinoviev <anton@lml.bas.bg>: similar to CP1251
+;; and used for some non-Slavic Cyrillic languages.  Table found at
+;; <URL:ftp://ftp.logic.ru/pub/logic/linux/cyr-asian/PT154>.  See also
+;; <URL:http://lists.w3.org/Archives/Public/ietf-charsets/2002AprJun/0092.html,
+;; which suggests it's used in an Asian Cyrillic context.
+;;;###autoload(autoload-coding-system 'pt154 '(require 'code-pages))
+(cp-make-coding-system
+ pt154
+ [?Җ ?Ғ ?Ӯ ?ғ ?„ ?… ?Ҷ ?Ү ?Ҳ ?ү ?Ҡ ?Ӣ ?Ң ?Қ ?Һ ?Ҹ ?җ ?‘ ?’ ?“ ?” ?• ?–
+  ?— ?ҳ ?ҷ ?ҡ ?ӣ ?ң ?қ ?һ ?ҹ ?  ?Ў ?ў ?Ј ?Ө ?Ҙ ?Ұ ?§ ?Ё ?© ?Ә ?\« ?¬ ?ӯ
+  ?® ?Ҝ ?° ?ұ ?І ?і ?ҙ ?ө ?¶ ?· ?ё ?№ ?ә ?\» ?ј ?Ҫ ?ҫ ?ҝ ?А ?Б ?В ?Г ?Д
+  ?Е ?Ж ?З ?И ?Й ?К ?Л ?М ?Н ?О ?П ?Р ?С ?Т ?У ?Ф ?Х ?Ц ?Ч ?Ш ?Щ ?Ъ ?Ы
+  ?Ь ?Э ?Ю ?Я ?а ?б ?в ?г ?д ?е ?ж ?з ?и ?й ?к ?л ?м ?н ?о ?п ?р ?с ?т
+  ?у ?ф ?х ?ц ?ч ?ш ?щ ?ъ ?ы ?ь ?э ?ю ?я])
+  
+;;;###autoload(autoload-coding-system 'iso-8859-11 '(require 'code-pages))
+(cp-make-coding-system
+ iso-8859-11
+ [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+  nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+  ?   ?ก  ?ข  ?ฃ  ?ค  ?ฅ  ?ฆ  ?ง  ?จ  ?ฉ  ?ช  ?ซ  ?ฌ  ?ญ  ?ฎ  ?ฏ
+  ?ฐ  ?ฑ  ?ฒ  ?ณ  ?ด  ?ต  ?ถ  ?ท  ?ธ  ?น  ?บ  ?ป  ?ผ  ?ฝ  ?พ  ?ฟ
+  ?ภ  ?ม  ?ย  ?ร  ?ฤ  ?ล  ?ฦ  ?ว  ?ศ  ?ษ  ?ส  ?ห  ?ฬ  ?อ  ?ฮ  ?ฯ
+  ?ะ  ?ั  ?า  ?ำ  ?ิ  ?ี  ?ึ  ?ื  ?ุ  ?ู  ?ฺ  nil nil nil nil ?฿
+  ?เ  ?แ  ?โ  ?ใ  ?ไ  ?ๅ  ?ๆ  ?็  ?่  ?้  ?๊  ?๋  ?์  ?ํ  ?๎  ?๏
+  ?๐  ?๑  ?๒  ?๓  ?๔  ?๕  ?๖  ?๗  ?๘  ?๙  ?๚  ?๛   nil nil nil nil]
+ "ISO-8859-11.  This is `thai-tis620' with the addition of no-break-space.")
 
-(dotimes (i 8)
+(dotimes (i 9)
   (let ((w (intern (format "windows-125%d" i)))
        (c (intern (format "cp125%d" i))))
-    (define-coding-system-alias c w)
-    ;; Compatibility with codepage.el, though cp... are not the
-    ;; canonical names.
-    (push (assoc w non-iso-charset-alist) non-iso-charset-alist)))
-
-;; Use Unicode font under Windows.  Jason Rumney fecit.
-(if (and (fboundp 'w32-add-charset-info)
-        (not (boundp 'w32-unicode-charset-defined)))
-    (w32-add-charset-info "iso10646-1" 'w32-charset-ansi t))
+    ;; Define cp125* as aliases for all windows-125*, so on Windows
+    ;; we can just concat "cp" to the ANSI codepage we get from the system
+    ;; and not have to worry about whether it should be "cp" or "windows-".
+    (when (coding-system-p w)
+      (define-coding-system-alias c w)
+      ;; Compatibility with codepage.el, though cp... are not the
+      ;; canonical names.
+      (if (not (assq c non-iso-charset-alist))
+         (let ((slot (assq w non-iso-charset-alist)))
+           (if slot
+               (push (cons c (cdr slot)) non-iso-charset-alist)))))))
 
 (provide 'code-pages)
 
+;;; arch-tag: 8b6e3c73-b271-4198-866d-ea6d0ceff1b2
 ;;; code-pages.el ends here