]> git.eshelyaron.com Git - emacs.git/commitdiff
Add tables for non-8859 cases.
authorDave Love <fx@gnu.org>
Tue, 20 Nov 2001 16:57:43 +0000 (16:57 +0000)
committerDave Love <fx@gnu.org>
Tue, 20 Nov 2001 16:57:43 +0000 (16:57 +0000)
(ucs-unify-8859): New arg encode-only.  Make it interactive.
Comment out Cyrillic special cases.
(ucs-fragment-8859): New function.
(unify-8859-on-encoding-mode, unify-8859-on-decoding-mode): New
minor modes.
(ucs-mule-to-mule-unicode): New variable.

lisp/international/ucs-tables.el

index 62076706563c6f39914366fd36a0f8df9a2cf6cd..99a68229b0818afeabf90a89b8eec874ca1fa9d0 100644 (file)
@@ -23,8 +23,8 @@
 ;;; Commentary:
 
 ;; This file provides tables mapping between Unicode numbers and
-;; emacs-mule characters from the iso8859 charsets, and some auxiliary
-;; functions.
+;; emacs-mule characters from the iso-8859 charsets (and others).  It
+;; also provides some auxiliary functions.
 
 ;; These tables are used to construct other mappings between the Mule
 ;; iso8859 charsets and the emacs-unicode charsets and a table that
 ;; mule-unicode-0100-24ff on decoding, with the corresponding
 ;; adjustments on encoding; see `ucs-unify-8859'.  Be wary of using
 ;; unification when, for instance, editing Lisp files such as this one
-;; which are supposed to contain distinct 8859 charsets.  ALso, it can
+;; which are supposed to contain distinct 8859 charsets.  Also, it can
 ;; make reading and writing of emacs-mule and iso-2022-based encodings
 ;; not idempotent.
 
+;; Global minor modes are provided to unify on encoding and decoding.
+
+;; The translation table `ucs-mule-to-mule-unicode' is populated.
+;; This is used by the `mule-utf-8' coding system to encode extra
+;; characters.
+
 ;; Command `ucs-insert' is convenient for inserting a given Unicode.
-;; Probably something like that should be available as an input
-;; method.
+;; (See also the `ucs' input method.)
 
 ;;; Code:
 
@@ -118,8 +123,14 @@ Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
   "Used as `translation-table-for-encode' for iso-8859-15.
 Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
 
+;; Probably defined by utf-8.el.
+(defvar ucs-mule-to-mule-unicode (make-translation-table))
+(unless (get 'ucs-mule-to-mule-unicode 'translation-table)
+  (define-translation-table 'ucs-mule-to-mule-unicode ucs-mule-to-mule-unicode))
 ;;; Set up the tables.
 
+;; Most of these tables were derived from ones in Mule-UCS.
+
 ;; There doesn't seem to be a need to make these let bindings into
 ;; defvars, so we'll let the data get GC'ed.
 (let ((ucs-8859-2-alist
@@ -518,53 +529,53 @@ Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
         (?\e,G$\e(B . ?\x00A4)   ;; CURRENCY SIGN
         (?\e,G,\e(B . ?\x060C)   ;; ARABIC COMMA
         (?\e,G-\e(B . ?\x00AD)   ;; SOFT HYPHEN
-        (?\e,G;\e(B . ?\x061B) ;; ARABIC SEMICOLON
-        (?\e,G?\e(B . ?\x061F) ;; ARABIC QUESTION MARK
-        (?\e,GA\e(B . ?\x0621) ;; ARABIC LETTER HAMZA
-        (?\e,GB\e(B . ?\x0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
-        (?\e,GC\e(B . ?\x0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
-        (?\e,GD\e(B . ?\x0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
-        (?\e,GE\e(B . ?\x0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
-        (?\e,GF\e(B . ?\x0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
-        (?\e,GG\e(B . ?\x0627) ;; ARABIC LETTER ALEF
-        (?\e,GH\e(B . ?\x0628) ;; ARABIC LETTER BEH
-        (?\e,GI\e(B . ?\x0629) ;; ARABIC LETTER TEH MARBUTA
-        (?\e,GJ\e(B . ?\x062A) ;; ARABIC LETTER TEH
-        (?\e,GK\e(B . ?\x062B) ;; ARABIC LETTER THEH
-        (?\e,GL\e(B . ?\x062C) ;; ARABIC LETTER JEEM
-        (?\e,GM\e(B . ?\x062D) ;; ARABIC LETTER HAH
-        (?\e,GN\e(B . ?\x062E) ;; ARABIC LETTER KHAH
-        (?\e,GO\e(B . ?\x062F) ;; ARABIC LETTER DAL
-        (?\e,GP\e(B . ?\x0630) ;; ARABIC LETTER THAL
-        (?\e,GQ\e(B . ?\x0631) ;; ARABIC LETTER REH
-        (?\e,GR\e(B . ?\x0632) ;; ARABIC LETTER ZAIN
-        (?\e,GS\e(B . ?\x0633) ;; ARABIC LETTER SEEN
-        (?\e,GT\e(B . ?\x0634) ;; ARABIC LETTER SHEEN
-        (?\e,GU\e(B . ?\x0635) ;; ARABIC LETTER SAD
-        (?\e,GV\e(B . ?\x0636) ;; ARABIC LETTER DAD
-        (?\e,GW\e(B . ?\x0637) ;; ARABIC LETTER TAH
-        (?\e,GX\e(B . ?\x0638) ;; ARABIC LETTER ZAH
-        (?\e,GY\e(B . ?\x0639) ;; ARABIC LETTER AIN
-        (?\e,GZ\e(B . ?\x063A) ;; ARABIC LETTER GHAIN
-        (?\e,G`\e(B . ?\x0640) ;; ARABIC TATWEEL
-        (?\e,Ga\e(B . ?\x0641) ;; ARABIC LETTER FEH
-        (?\e,Gb\e(B . ?\x0642) ;; ARABIC LETTER QAF
-        (?\e,Gc\e(B . ?\x0643) ;; ARABIC LETTER KAF
-        (?\e,Gd\e(B . ?\x0644) ;; ARABIC LETTER LAM
-        (?\e,Ge\e(B . ?\x0645) ;; ARABIC LETTER MEEM
-        (?\e,Gf\e(B . ?\x0646) ;; ARABIC LETTER NOON
-        (?\e,Gg\e(B . ?\x0647) ;; ARABIC LETTER HEH
-        (?\e,Gh\e(B . ?\x0648) ;; ARABIC LETTER WAW
-        (?\e,Gi\e(B . ?\x0649) ;; ARABIC LETTER ALEF MAKSURA
-        (?\e,Gj\e(B . ?\x064A) ;; ARABIC LETTER YEH
-        (?\e,Gk\e(B . ?\x064B) ;; ARABIC FATHATAN
-        (?\e,Gl\e(B . ?\x064C) ;; ARABIC DAMMATAN
-        (?\e,Gm\e(B . ?\x064D) ;; ARABIC KASRATAN
-        (?\e,Gn\e(B . ?\x064E) ;; ARABIC FATHA
-        (?\e,Go\e(B . ?\x064F) ;; ARABIC DAMMA
-        (?\e,Gp\e(B . ?\x0650) ;; ARABIC KASRA
-        (?\e,Gq\e(B . ?\x0651) ;; ARABIC SHADDA
-        (?\e,Gr\e(B . ?\x0652) ;; ARABIC SUKUN
+        (?\e,G;\e(B . ?\x061B)   ;; ARABIC SEMICOLON
+        (?\e,G?\e(B . ?\x061F)   ;; ARABIC QUESTION MARK
+        (?\e,GA\e(B . ?\x0621)   ;; ARABIC LETTER HAMZA
+        (?\e,GB\e(B . ?\x0622)   ;; ARABIC LETTER ALEF WITH MADDA ABOVE
+        (?\e,GC\e(B . ?\x0623)   ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
+        (?\e,GD\e(B . ?\x0624)   ;; ARABIC LETTER WAW WITH HAMZA ABOVE
+        (?\e,GE\e(B . ?\x0625)   ;; ARABIC LETTER ALEF WITH HAMZA BELOW
+        (?\e,GF\e(B . ?\x0626)   ;; ARABIC LETTER YEH WITH HAMZA ABOVE
+        (?\e,GG\e(B . ?\x0627)   ;; ARABIC LETTER ALEF
+        (?\e,GH\e(B . ?\x0628)   ;; ARABIC LETTER BEH
+        (?\e,GI\e(B . ?\x0629)   ;; ARABIC LETTER TEH MARBUTA
+        (?\e,GJ\e(B . ?\x062A)   ;; ARABIC LETTER TEH
+        (?\e,GK\e(B . ?\x062B)   ;; ARABIC LETTER THEH
+        (?\e,GL\e(B . ?\x062C)   ;; ARABIC LETTER JEEM
+        (?\e,GM\e(B . ?\x062D)   ;; ARABIC LETTER HAH
+        (?\e,GN\e(B . ?\x062E)   ;; ARABIC LETTER KHAH
+        (?\e,GO\e(B . ?\x062F)   ;; ARABIC LETTER DAL
+        (?\e,GP\e(B . ?\x0630)   ;; ARABIC LETTER THAL
+        (?\e,GQ\e(B . ?\x0631)   ;; ARABIC LETTER REH
+        (?\e,GR\e(B . ?\x0632)   ;; ARABIC LETTER ZAIN
+        (?\e,GS\e(B . ?\x0633)   ;; ARABIC LETTER SEEN
+        (?\e,GT\e(B . ?\x0634)   ;; ARABIC LETTER SHEEN
+        (?\e,GU\e(B . ?\x0635)   ;; ARABIC LETTER SAD
+        (?\e,GV\e(B . ?\x0636)   ;; ARABIC LETTER DAD
+        (?\e,GW\e(B . ?\x0637)   ;; ARABIC LETTER TAH
+        (?\e,GX\e(B . ?\x0638)   ;; ARABIC LETTER ZAH
+        (?\e,GY\e(B . ?\x0639)   ;; ARABIC LETTER AIN
+        (?\e,GZ\e(B . ?\x063A)   ;; ARABIC LETTER GHAIN
+        (?\e,G`\e(B . ?\x0640)   ;; ARABIC TATWEEL
+        (?\e,Ga\e(B . ?\x0641)   ;; ARABIC LETTER FEH
+        (?\e,Gb\e(B . ?\x0642)   ;; ARABIC LETTER QAF
+        (?\e,Gc\e(B . ?\x0643)   ;; ARABIC LETTER KAF
+        (?\e,Gd\e(B . ?\x0644)   ;; ARABIC LETTER LAM
+        (?\e,Ge\e(B . ?\x0645)   ;; ARABIC LETTER MEEM
+        (?\e,Gf\e(B . ?\x0646)   ;; ARABIC LETTER NOON
+        (?\e,Gg\e(B . ?\x0647)   ;; ARABIC LETTER HEH
+        (?\e,Gh\e(B . ?\x0648)   ;; ARABIC LETTER WAW
+        (?\e,Gi\e(B . ?\x0649)   ;; ARABIC LETTER ALEF MAKSURA
+        (?\e,Gj\e(B . ?\x064A)   ;; ARABIC LETTER YEH
+        (?\e,Gk\e(B . ?\x064B)   ;; ARABIC FATHATAN
+        (?\e,Gl\e(B . ?\x064C)   ;; ARABIC DAMMATAN
+        (?\e,Gm\e(B . ?\x064D)   ;; ARABIC KASRATAN
+        (?\e,Gn\e(B . ?\x064E)   ;; ARABIC FATHA
+        (?\e,Go\e(B . ?\x064F)   ;; ARABIC DAMMA
+        (?\e,Gp\e(B . ?\x0650)   ;; ARABIC KASRA
+        (?\e,Gq\e(B . ?\x0651)   ;; ARABIC SHADDA
+        (?\e,Gr\e(B . ?\x0652)   ;; ARABIC SUKUN
         ))
 
       (ucs-8859-7-alist
@@ -1029,8 +1040,8 @@ Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
           (setq i (1+ i)))
         (nreverse l)))
       
-      ;;(case-table (standard-case-table))
-      ;;(syntax-table (standard-syntax-table))
+;;       (case-table (standard-case-table))
+;;       (syntax-table (standard-syntax-table))
       )
 
   ;; Convert the lists to the basic char tables.
@@ -1043,7 +1054,8 @@ Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
          (aset ucs-mule-8859-to-ucs-table mule uc)
          ;;      (aset ucs-ucs-to-mule-8859-table uc mule)
          ;;      (aset ucs-mule-unicode-to-mule-8859 mu mule)
-         (aset ucs-mule-8859-to-mule-unicode mule mu)))
+         (aset ucs-mule-8859-to-mule-unicode mule mu)
+         (aset ucs-mule-to-mule-unicode mule mu)))
 ;; I think this is actually done OK in characters.el.
 ;; Probably things like accents shouldn't have word syntax, but the
 ;; Latin-N syntax tables currently aren't consistent for such
@@ -1082,9 +1094,9 @@ Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
   ;; `translation-table-for-encode's.
   (dolist (n (list 15 14 9 8 7 5 4 3 2 1))
     (let* ((alist (symbol-value (intern (format "ucs-8859-%d-alist" n))))
-          (encode-translator
-           (set (intern (format "ucs-8859-%d-encode-table" n))
-                (make-translation-table)))
+          (encode-translator (set (intern (format "ucs-8859-%d-encode-table"
+                                                  n))
+                                  (make-translation-table)))
           elt)
       ;; Start with the mule-unicode component.
       (dolist (pair alist)
@@ -1093,29 +1105,33 @@ Translates from the iso8859 charsets and `mule-unicode-0100-24ff'.")
          (aset encode-translator mu mule)))
       ;; Find characters from other 8859 sets which map to the same
       ;; unicode as some character in this set.
-      (map-char-table
-       (lambda (k v)
-        (if (and (setq elt (rassq v alist))
-                 (not (assq k alist)))
-            (aset encode-translator k (car elt))))
-       ucs-mule-8859-to-ucs-table))))
+      (map-char-table (lambda (k v)
+                       (if (and (setq elt (rassq v alist))
+                                (not (assq k alist)))
+                           (aset encode-translator k (car elt))))
+                     ucs-mule-8859-to-ucs-table))))
 
 ;; Register for use in CCL.
 (define-translation-table 'ucs-mule-8859-to-mule-unicode
   ucs-mule-8859-to-mule-unicode)
 
 ;; Fixme: Make this reversible, which means frobbing
-;; `char-coding-system-table' directly to remove what we added.
-(defun ucs-unify-8859 ()
+;; `char-coding-system-table' directly to remove what we added -- see
+;; codepages.el.  Also make it a user option.
+(defun ucs-unify-8859 (&optional encode-only)
   "Set up translation tables for unifying characters from ISO 8859.
-The non-8859 Cyrillic character sets are also covered.
 
 On decoding, non-ASCII characters are mapped into the `iso-latin-1'
 and `mule-unicode-0100-24ff' charsets.  On encoding, these are mapped
-back appropriate for the coding system."
-  ;; Unify 8859 on decoding.  (Non-CCL coding systems only.)
-  (set-char-table-parent standard-translation-table-for-decode
-                        ucs-mule-8859-to-mule-unicode)
+back appropriate for the coding system.
+
+With prefix arg, do unification on encoding only, i.e. don't unify
+everything on input operations."
+  (interactive "P")
+  (unless encode-only
+    ;; Unify 8859 on decoding.  (Non-CCL coding systems only.)
+    (set-char-table-parent standard-translation-table-for-decode
+                          ucs-mule-8859-to-mule-unicode))
   ;; Adjust the 8859 coding systems to fragment the unified characters
   ;; on encoding.
   (dolist (n '(1 2 3 4 5 7 8 9 14 15))
@@ -1132,52 +1148,130 @@ back appropriate for the coding system."
       (register-char-codings coding-system table)
       (coding-system-put coding-system 'translation-table-for-encode table)))
 
-  ;; Update the Cyrillic special cases.
-  ;; `translation-table-for-encode' doesn't work for CCL coding
-  ;; systems, and `standard-translation-table-for-decode' isn't
-  ;; applied.
-  (let ((table (get 'cyrillic-koi8-r-encode-table 'translation-table)))
-    (map-char-table
-     (lambda (k v)
-       (aset table
-            (or (aref ucs-8859-5-encode-table k)
-                k)
-            v))
-     table)
-    (register-char-codings 'cyrillic-koi8 table))
-  (let ((table (get 'cyrillic-koi8-r-nonascii-translation-table
-                   'translation-table)))
-    (map-char-table
-     (lambda (k v)
-       (if v (aset table k (or (aref ucs-mule-8859-to-mule-unicode v)
-                              v))))
-     table))
-  ;; Redefine this, since the orginal only translated 8859-5.
-  (define-ccl-program ccl-encode-koi8
-    `(1
-      ((loop
-       (read-multibyte-character r0 r1)
-       (translate-character cyrillic-koi8-r-encode-table r0 r1)
-       (write-repeat r1))))
-    "CCL program to encode KOI8.")
-  (let ((table (get 'cyrillic-alternativnyj-encode-table 'translation-table)))
-    (map-char-table
-     (lambda (k v)
-       (aset table
-            (or (aref ucs-8859-5-encode-table k)
-                k)
-            v))
-     table)
-    (register-char-codings 'cyrillic-alternativnyj table))
-  (let ((table (get 'cyrillic-alternativnyj-nonascii-translation-table
-                   'translation-table)))
-    (map-char-table
-     (lambda (k v)
-       (if v (aset table
-                  k
-                  (or (aref ucs-mule-8859-to-mule-unicode v)
-                      v))))
-     table)))
+;;; The following works for the bundled coding systems, but it's
+;;; better to use the Unicode-based ones and make it irrelevant.
+
+;;;   ;; Update the Cyrillic special cases.
+;;;   ;; `translation-table-for-encode' doesn't work for CCL coding
+;;;   ;; systems, and `standard-translation-table-for-decode' isn't
+;;;   ;; applied.
+;;;   (let ((table (get 'cyrillic-koi8-r-encode-table 'translation-table)))
+;;;     (map-char-table
+;;;      (lambda (k v)
+;;;        (aset table
+;;;         (or (aref ucs-8859-5-encode-table k)
+;;;             k)
+;;;         v))
+;;;      table)
+;;;     (register-char-codings 'cyrillic-koi8 table))
+;;;   (let ((table (get 'cyrillic-koi8-r-nonascii-translation-table
+;;;                'translation-table)))
+;;;     (map-char-table
+;;;      (lambda (k v)
+;;;        (if v (aset table k (or (aref ucs-mule-8859-to-mule-unicode v)
+;;;                           v))))
+;;;      table))
+;;;   ;; Redefine this, since the orginal only translated 8859-5.
+;;;   (define-ccl-program ccl-encode-koi8
+;;;     `(1
+;;;       ((loop
+;;;    (read-multibyte-character r0 r1)
+;;;    (translate-character cyrillic-koi8-r-encode-table r0 r1)
+;;;    (write-repeat r1))))
+;;;     "CCL program to encode KOI8.")
+;;;   (let ((table (get 'cyrillic-alternativnyj-encode-table 'translation-table)))
+;;;     (map-char-table
+;;;      (lambda (k v)
+;;;        (aset table
+;;;         (or (aref ucs-8859-5-encode-table k)
+;;;             k)
+;;;         v))
+;;;      table)
+;;;     (register-char-codings 'cyrillic-alternativnyj table))
+;;;   (let ((table (get 'cyrillic-alternativnyj-nonascii-translation-table
+;;;                'translation-table)))
+;;;     (map-char-table
+;;;      (lambda (k v)
+;;;        (if v (aset table
+;;;               k
+;;;               (or (aref ucs-mule-8859-to-mule-unicode v)
+;;;                   v))))
+;;;      table))
+  )
+
+(defun ucs-fragment-8859 (&optional encode-only)
+  "Undo the unification done by `ucs-unify-8859'.
+With prefix arg, undo unification on encoding only, i.e. don't undo
+unification on input operations."
+  (interactive "P")
+  ;; Maybe fix decoding.
+  (unless encode-only
+    ;; Unify 8859 on decoding.  (Non-CCL coding systems only.)
+    (set-char-table-parent standard-translation-table-for-decode nil))
+  ;; Fix encoding.  For each charset, remove the entries in
+  ;; `char-coding-system-table' added to its safe-chars table (as its
+  ;; parent).
+  (dolist (n '(1 2 3 4 5 7 8 9 14 15))
+    (let* ((coding-system
+           (coding-system-base (intern (format "iso-8859-%d" n))))
+          (table (symbol-value
+                  (intern (format "ucs-8859-%d-encode-table" n))))
+          (safe (coding-system-get coding-system 'safe-chars)))
+      (map-char-table
+       (lambda (key val)
+        (if (and (>= key 128) val)
+            (let ((codings (aref char-coding-system-table key)))
+              (aset char-coding-system-table key
+                    (delq coding-system codings)))))
+       (char-table-parent safe))
+      (set-char-table-parent safe nil)
+      (coding-system-put coding-system 'translation-table-for-encode nil))))
+
+;;;###autoload
+(define-minor-mode unify-8859-on-encoding-mode
+  "Set up translation tables for unifying ISO 8859 characters on encoding.
+
+The ISO 8859 characters sets overlap, e.g. 8859-1 (Latin-1) and
+8859-15 (Latin-9) differ only in a few characters.  Emacs normally
+distinguishes equivalent characters from those ISO-8859 character sets
+which are built in to Emacs.  This behaviour is essentially inherited
+from the European-originated international standards.  Treating them
+equivalently, by translating to and from a single representation is
+called `unification'.  (The `utf-8' coding system treats the
+characters of European scripts in a unified manner.)
+
+In this mode, on encoding -- i.e. output operations -- non-ASCII
+characters from the built-in ISO 8859 and `mule-unicode-0100-24ff'
+charsets are handled automatically by the coding system used if it can
+represent them.  Thus, say, an e-acute from the Latin-1 charset (the
+unified representation) in a buffer saved as Latin-9 will be encoded
+directly to a byte value 233.  By default, in contrast, you would be
+promtped for a general coding system to use for saving the file, which
+can cope with separate Latin-1 and Latin-9 representations of e-acute.
+
+See also command `unify-8859-on-decoding-mode'."
+  :group 'mule
+  :global t
+  :init-value nil
+  (if unify-8859-on-encoding-mode
+      (set-char-table-parent standard-translation-table-for-decode
+                        ucs-mule-8859-to-mule-unicode)
+    (set-char-table-parent standard-translation-table-for-decode nil)))
+
+;;;###autoload
+(define-minor-mode unify-8859-on-decoding-mode
+  "Set up translation tables for unifying ISO 8859 characters on decoding.
+On decoding, i.e. input operations, non-ASCII characters from the
+built-in ISO 8859 charsets are unified by mapping them into the
+`iso-latin-1' and `mule-unicode-0100-24ff' charsets.
+
+See also command `unify-8859-on-encoding-mode'."
+  :group 'mule
+  :global t
+  :init-value nil
+  (if unify-8859-on-decoding-mode
+      (ucs-unify-8859 t)
+    (ucs-fragment-8859 t)))
 
 (defun ucs-insert (arg)
   "Insert the Emacs character representation of the given Unicode.
@@ -1187,6 +1281,1163 @@ Interactively, prompts for a hex string giving the code."
                                arg
                              (string-to-number arg 16)))))
 
+;;; Dealing with non-8859 character sets.
+
+;; We only set up translation on encoding to utf-8.  Also translation
+;; tables ucs-CS-encode-table are constructed for some coding systems
+;; CS which could be used as `translation-table-for-encode', currently
+;; for in-is13194-devanagari, lao, thai, tibetan-iso-8bit and
+;; vietnamese-viscii.
+
+;; The alists here cover both coding systems (external charsets), like
+;; VISCII, and individual Emacs charsets, like `ipa'.
+(let ((vietnamese-viscii
+       '((?\e,1!\e(B . ?\e$,1o/\e(B)
+        (?\e,1"\e(B . ?\e$,1o1\e(B)
+        (?\e,1#\e(B . ?\e$,1o7\e(B)
+        (?\e,1$\e(B . ?\e$,1o%\e(B)
+        (?\e,1%\e(B . ?\e$,1o'\e(B)
+        (?\e,1&\e(B . ?\e$,1o)\e(B)
+        (?\e,1'\e(B . ?\e$,1o-\e(B)
+        (?\e,1(\e(B . ?\e$,1o=\e(B)
+        (?\e,1)\e(B . ?\e$,1o9\e(B)
+        (?\e,1*\e(B . ?\e$,1o?\e(B)
+        (?\e,1+\e(B . ?\e$,1oA\e(B)
+        (?\e,1,\e(B . ?\e$,1oC\e(B)
+        (?\e,1-\e(B . ?\e$,1oE\e(B)
+        (?\e,1.\e(B . ?\e$,1oG\e(B)
+        (?\e,1/\e(B . ?\e$,1oQ\e(B)
+        (?\e,10\e(B . ?\e$,1oS\e(B)
+        (?\e,11\e(B . ?\e$,1oU\e(B)
+        (?\e,12\e(B . ?\e$,1oW\e(B)
+        (?\e,15\e(B . ?\e$,1oY\e(B)
+        (?\e,16\e(B . ?\e$,1o]\e(B)
+        (?\e,17\e(B . ?\e$,1o_\e(B)
+        (?\e,18\e(B . ?\e$,1oK\e(B)
+        (?\e,1=\e(B . ?\e$,1!a\e(B)
+        (?\e,1>\e(B . ?\e$,1o[\e(B)
+        (?\e,1F\e(B . ?\e$,1o3\e(B)
+        (?\e,1G\e(B . ?\e$,1o5\e(B)
+        (?\e,1O\e(B . ?\e$,1os\e(B)
+        (?\e,1Q\e(B . ?\e$,1oi\e(B)
+        (?\e,1U\e(B . ?\e$,1o!\e(B)
+        (?\e,1V\e(B . ?\e$,1ow\e(B)
+        (?\e,1W\e(B . ?\e$,1ok\e(B)
+        (?\e,1X\e(B . ?\e$,1om\e(B)
+        (?\e,1[\e(B . ?\e$,1oy\e(B)
+        (?\e,1\\e(B . ?\e$,1ou\e(B)
+        (?\e,1^\e(B . ?\e$,1oa\e(B)
+        (?\e,1_\e(B . ?\e$,1!p\e(B)
+        (?\e,1`\e(B . ?\e,A`\e(B)
+        (?\e,1a\e(B . ?\e,Aa\e(B)
+        (?\e,1b\e(B . ?\e,Ab\e(B)
+        (?\e,1c\e(B . ?\e,Ac\e(B)
+        (?\e,1d\e(B . ?\e$,1o#\e(B)
+        (?\e,1e\e(B . ?\e$,1 #\e(B)
+        (?\e,1f\e(B . ?\e$,1oo\e(B)
+        (?\e,1g\e(B . ?\e$,1o+\e(B)
+        (?\e,1h\e(B . ?\e,Ah\e(B)
+        (?\e,1i\e(B . ?\e,Ai\e(B)
+        (?\e,1j\e(B . ?\e,Aj\e(B)
+        (?\e,1k\e(B . ?\e$,1o;\e(B)
+        (?\e,1l\e(B . ?\e,Al\e(B)
+        (?\e,1m\e(B . ?\e,Am\e(B)
+        (?\e,1n\e(B . ?\e$,1 I\e(B)
+        (?\e,1o\e(B . ?\e$,1oI\e(B)
+        (?\e,1p\e(B . ?\e$,1 1\e(B)
+        (?\e,1q\e(B . ?\e$,1oq\e(B)
+        (?\e,1r\e(B . ?\e,Ar\e(B)
+        (?\e,1s\e(B . ?\e,As\e(B)
+        (?\e,1t\e(B . ?\e,At\e(B)
+        (?\e,1u\e(B . ?\e,Au\e(B)
+        (?\e,1v\e(B . ?\e$,1oO\e(B)
+        (?\e,1w\e(B . ?\e$,1oM\e(B)
+        (?\e,1x\e(B . ?\e$,1oe\e(B)
+        (?\e,1y\e(B . ?\e,Ay\e(B)
+        (?\e,1z\e(B . ?\e,Az\e(B)
+        (?\e,1{\e(B . ?\e$,1!)\e(B)
+        (?\e,1|\e(B . ?\e$,1og\e(B)
+        (?\e,1}\e(B . ?\e,A}\e(B)
+        (?\e,1~\e(B . ?\e$,1oc\e(B)
+
+        (?\e,2!\e(B . ?\e$,1o.\e(B)
+        (?\e,2"\e(B . ?\e$,1o0\e(B)
+        (?\e,2#\e(B . ?\e$,1o6\e(B)
+        (?\e,2$\e(B . ?\e$,1o$\e(B)
+        (?\e,2%\e(B . ?\e$,1o&\e(B)
+        (?\e,2&\e(B . ?\e$,1o(\e(B)
+        (?\e,2'\e(B . ?\e$,1o,\e(B)
+        (?\e,2(\e(B . ?\e$,1o<\e(B)
+        (?\e,2)\e(B . ?\e$,1o8\e(B)
+        (?\e,2*\e(B . ?\e$,1o>\e(B)
+        (?\e,2+\e(B . ?\e$,1o@\e(B)
+        (?\e,2,\e(B . ?\e$,1oB\e(B)
+        (?\e,2-\e(B . ?\e$,1oD\e(B)
+        (?\e,2.\e(B . ?\e$,1oF\e(B)
+        (?\e,2/\e(B . ?\e$,1oP\e(B)
+        (?\e,20\e(B . ?\e$,1oR\e(B)
+        (?\e,21\e(B . ?\e$,1oT\e(B)
+        (?\e,22\e(B . ?\e$,1oV\e(B)
+        (?\e,25\e(B . ?\e$,1oX\e(B)
+        (?\e,26\e(B . ?\e$,1o\\e(B)
+        (?\e,27\e(B . ?\e$,1o^\e(B)
+        (?\e,28\e(B . ?\e$,1oJ\e(B)
+        (?\e,2=\e(B . ?\e$,1!`\e(B)
+        (?\e,2>\e(B . ?\e$,1oZ\e(B)
+        (?\e,2F\e(B . ?\e$,1o2\e(B)
+        (?\e,2G\e(B . ?\e$,1o4\e(B)
+        (?\e,2O\e(B . ?\e$,1or\e(B)
+        (?\e,2Q\e(B . ?\e$,1oh\e(B)
+        (?\e,2U\e(B . ?\e$,1o \e(B)
+        (?\e,2V\e(B . ?\e$,1ov\e(B)
+        (?\e,2W\e(B . ?\e$,1oj\e(B)
+        (?\e,2X\e(B . ?\e$,1ol\e(B)
+        (?\e,2[\e(B . ?\e$,1ox\e(B)
+        (?\e,2\\e(B . ?\e$,1ot\e(B)
+        (?\e,2^\e(B . ?\e$,1o`\e(B)
+        (?\e,2_\e(B . ?\e$,1!o\e(B)
+        (?\e,2`\e(B . ?\e,A@\e(B)
+        (?\e,2a\e(B . ?\e,AA\e(B)
+        (?\e,2b\e(B . ?\e,AB\e(B)
+        (?\e,2c\e(B . ?\e,AC\e(B)
+        (?\e,2d\e(B . ?\e$,1o"\e(B)
+        (?\e,2e\e(B . ?\e$,1 "\e(B)
+        (?\e,2f\e(B . ?\e$,1on\e(B)
+        (?\e,2g\e(B . ?\e$,1o*\e(B)
+        (?\e,2h\e(B . ?\e,AH\e(B)
+        (?\e,2i\e(B . ?\e,AI\e(B)
+        (?\e,2j\e(B . ?\e,AJ\e(B)
+        (?\e,2k\e(B . ?\e$,1o:\e(B)
+        (?\e,2l\e(B . ?\e,AL\e(B)
+        (?\e,2m\e(B . ?\e,AM\e(B)
+        (?\e,2n\e(B . ?\e$,1 H\e(B)
+        (?\e,2o\e(B . ?\e$,1oH\e(B)
+        (?\e,2p\e(B . ?\e$,1 0\e(B)
+        (?\e,2q\e(B . ?\e$,1op\e(B)
+        (?\e,2r\e(B . ?\e,AR\e(B)
+        (?\e,2s\e(B . ?\e,AS\e(B)
+        (?\e,2t\e(B . ?\e,AT\e(B)
+        (?\e,2u\e(B . ?\e,AU\e(B)
+        (?\e,2v\e(B . ?\e$,1oN\e(B)
+        (?\e,2w\e(B . ?\e$,1oL\e(B)
+        (?\e,2x\e(B . ?\e$,1od\e(B)
+        (?\e,2y\e(B . ?\e,AY\e(B)
+        (?\e,2z\e(B . ?\e,AZ\e(B)
+        (?\e,2{\e(B . ?\e$,1!(\e(B)
+        (?\e,2|\e(B . ?\e$,1of\e(B)
+        (?\e,2}\e(B . ?\e,A]\e(B)
+        (?\e,2~\e(B . ?\e$,1ob\e(B)))
+
+      (thai-tis620
+       '((?\e,T!\e(B . ?\e$,1Ba\e(B)
+        (?\e,T"\e(B . ?\e$,1Bb\e(B)
+        (?\e,T#\e(B . ?\e$,1Bc\e(B)
+        (?\e,T$\e(B . ?\e$,1Bd\e(B)
+        (?\e,T%\e(B . ?\e$,1Be\e(B)
+        (?\e,T&\e(B . ?\e$,1Bf\e(B)
+        (?\e,T'\e(B . ?\e$,1Bg\e(B)
+        (?\e,T(\e(B . ?\e$,1Bh\e(B)
+        (?\e,T)\e(B . ?\e$,1Bi\e(B)
+        (?\e,T*\e(B . ?\e$,1Bj\e(B)
+        (?\e,T+\e(B . ?\e$,1Bk\e(B)
+        (?\e,T,\e(B . ?\e$,1Bl\e(B)
+        (?\e,T-\e(B . ?\e$,1Bm\e(B)
+        (?\e,T.\e(B . ?\e$,1Bn\e(B)
+        (?\e,T/\e(B . ?\e$,1Bo\e(B)
+        (?\e,T0\e(B . ?\e$,1Bp\e(B)
+        (?\e,T1\e(B . ?\e$,1Bq\e(B)
+        (?\e,T2\e(B . ?\e$,1Br\e(B)
+        (?\e,T3\e(B . ?\e$,1Bs\e(B)
+        (?\e,T4\e(B . ?\e$,1Bt\e(B)
+        (?\e,T5\e(B . ?\e$,1Bu\e(B)
+        (?\e,T6\e(B . ?\e$,1Bv\e(B)
+        (?\e,T7\e(B . ?\e$,1Bw\e(B)
+        (?\e,T8\e(B . ?\e$,1Bx\e(B)
+        (?\e,T9\e(B . ?\e$,1By\e(B)
+        (?\e,T:\e(B . ?\e$,1Bz\e(B)
+        (?\e,T;\e(B . ?\e$,1B{\e(B)
+        (?\e,T<\e(B . ?\e$,1B|\e(B)
+        (?\e,T=\e(B . ?\e$,1B}\e(B)
+        (?\e,T>\e(B . ?\e$,1B~\e(B)
+        (?\e,T?\e(B . ?\e$,1B\7f\e(B)
+        (?\e,T@\e(B . ?\e$,1C \e(B)
+        (?\e,TA\e(B . ?\e$,1C!\e(B)
+        (?\e,TB\e(B . ?\e$,1C"\e(B)
+        (?\e,TC\e(B . ?\e$,1C#\e(B)
+        (?\e,TD\e(B . ?\e$,1C$\e(B)
+        (?\e,TE\e(B . ?\e$,1C%\e(B)
+        (?\e,TF\e(B . ?\e$,1C&\e(B)
+        (?\e,TG\e(B . ?\e$,1C'\e(B)
+        (?\e,TH\e(B . ?\e$,1C(\e(B)
+        (?\e,TI\e(B . ?\e$,1C)\e(B)
+        (?\e,TJ\e(B . ?\e$,1C*\e(B)
+        (?\e,TK\e(B . ?\e$,1C+\e(B)
+        (?\e,TL\e(B . ?\e$,1C,\e(B)
+        (?\e,TM\e(B . ?\e$,1C-\e(B)
+        (?\e,TN\e(B . ?\e$,1C.\e(B)
+        (?\e,TO\e(B . ?\e$,1C/\e(B)
+        (?\e,TP\e(B . ?\e$,1C0\e(B)
+        (?\e,TQ\e(B . ?\e$,1C1\e(B)
+        (?\e,TR\e(B . ?\e$,1C2\e(B)
+        (?\e,TS\e(B . ?\e$,1C3\e(B)
+        (?\e,TT\e(B . ?\e$,1C4\e(B)
+        (?\e,TU\e(B . ?\e$,1C5\e(B)
+        (?\e,TV\e(B . ?\e$,1C6\e(B)
+        (?\e,TW\e(B . ?\e$,1C7\e(B)
+        (?\e,TX\e(B . ?\e$,1C8\e(B)
+        (?\e,TY\e(B . ?\e$,1C9\e(B)
+        (?\e,TZ\e(B . ?\e$,1C:\e(B)
+        (?\e,T_\e(B . ?\e$,1C?\e(B)
+        (?\e,T`\e(B . ?\e$,1C@\e(B)
+        (?\e,Ta\e(B . ?\e$,1CA\e(B)
+        (?\e,Tb\e(B . ?\e$,1CB\e(B)
+        (?\e,Tc\e(B . ?\e$,1CC\e(B)
+        (?\e,Td\e(B . ?\e$,1CD\e(B)
+        (?\e,Te\e(B . ?\e$,1CE\e(B)
+        (?\e,Tf\e(B . ?\e$,1CF\e(B)
+        (?\e,Tg\e(B . ?\e$,1CG\e(B)
+        (?\e,Th\e(B . ?\e$,1CH\e(B)
+        (?\e,Ti\e(B . ?\e$,1CI\e(B)
+        (?\e,Tj\e(B . ?\e$,1CJ\e(B)
+        (?\e,Tk\e(B . ?\e$,1CK\e(B)
+        (?\e,Tl\e(B . ?\e$,1CL\e(B)
+        (?\e,Tm\e(B . ?\e$,1CM\e(B)
+        (?\e,Tn\e(B . ?\e$,1CN\e(B)
+        (?\e,To\e(B . ?\e$,1CO\e(B)
+        (?\e,Tp\e(B . ?\e$,1CP\e(B)
+        (?\e,Tq\e(B . ?\e$,1CQ\e(B)
+        (?\e,Tr\e(B . ?\e$,1CR\e(B)
+        (?\e,Ts\e(B . ?\e$,1CS\e(B)
+        (?\e,Tt\e(B . ?\e$,1CT\e(B)
+        (?\e,Tu\e(B . ?\e$,1CU\e(B)
+        (?\e,Tv\e(B . ?\e$,1CV\e(B)
+        (?\e,Tw\e(B . ?\e$,1CW\e(B)
+        (?\e,Tx\e(B . ?\e$,1CX\e(B)
+        (?\e,Ty\e(B . ?\e$,1CY\e(B)
+        (?\e,Tz\e(B . ?\e$,1CZ\e(B)
+        (?\e,T{\e(B . ?\e$,1C[\e(B)))
+
+      (tibetan-iso-8bit
+       '((?\e$(7!0\e(B . ?\e$,1E@\e(B)
+        (?\e$(7!1\e(B . ?\e$,1EA\e(B)
+        (?\e$(7!2\e(B . ?\e$,1EB\e(B)
+        (?\e$(7!3\e(B . ?\e$,1EC\e(B)
+        (?\e$(7!4\e(B . ?\e$,1ED\e(B)
+        (?\e$(7!5\e(B . ?\e$,1EE\e(B)
+        (?\e$(7!6\e(B . ?\e$,1EF\e(B)
+        (?\e$(7!7\e(B . ?\e$,1EG\e(B)
+        (?\e$(7!8\e(B . ?\e$,1EH\e(B)
+        (?\e$(7!9\e(B . ?\e$,1EI\e(B)
+        (?\e$(7!:\e(B . ?\e$,1EJ\e(B)
+        (?\e$(7!;\e(B . ?\e$,1EK\e(B)
+        (?\e$(7!<\e(B . ?\e$,1EL\e(B)
+        (?\e$(7!=\e(B . ?\e$,1EM\e(B)
+        (?\e$(7!>\e(B . ?\e$,1EN\e(B)
+        (?\e$(7!?\e(B . ?\e$,1EO\e(B)
+        (?\e$(7!@\e(B . ?\e$,1EP\e(B)
+        (?\e$(7!A\e(B . ?\e$,1EQ\e(B)
+        (?\e$(7!B\e(B . ?\e$,1ER\e(B)
+        (?\e$(7!C\e(B . ?\e$,1ES\e(B)
+        (?\e$(7!D\e(B . ?\e$,1ET\e(B)
+        (?\e$(7!E\e(B . ?\e$,1EU\e(B)
+        (?\e$(7!F\e(B . ?\e$,1EV\e(B)
+        (?\e$(7!G\e(B . ?\e$,1EW\e(B)
+        (?\e$(7!H\e(B . ?\e$,1EX\e(B)
+        (?\e$(7!I\e(B . ?\e$,1EY\e(B)
+        (?\e$(7!J\e(B . ?\e$,1EZ\e(B)
+        (?\e$(7!K\e(B . ?\e$,1E[\e(B)
+        (?\e$(7!L\e(B . ?\e$,1E\\e(B)
+        (?\e$(7!M\e(B . ?\e$,1E]\e(B)
+        (?\e$(7!N\e(B . ?\e$,1E^\e(B)
+        (?\e$(7!O\e(B . ?\e$,1E_\e(B)
+        (?\e$(7!P\e(B . ?\e$,1E`\e(B)
+        (?\e$(7!Q\e(B . ?\e$,1Ea\e(B)
+        (?\e$(7!R\e(B . ?\e$,1Eb\e(B)
+        (?\e$(7!S\e(B . ?\e$,1Ec\e(B)
+        (?\e$(7!T\e(B . ?\e$,1Ed\e(B)
+        (?\e$(7!U\e(B . ?\e$,1Ee\e(B)
+        (?\e$(7!V\e(B . ?\e$,1Ef\e(B)
+        (?\e$(7!W\e(B . ?\e$,1Eg\e(B)
+        (?\e$(7!X\e(B . ?\e$,1Eh\e(B)
+        (?\e$(7!Y\e(B . ?\e$,1Ei\e(B)
+        (?\e$(7!Z\e(B . ?\e$,1Ej\e(B)
+        (?\e$(7![\e(B . ?\e$,1Ek\e(B)
+        (?\e$(7!\\e(B . ?\e$,1El\e(B)
+        (?\e$(7!]\e(B . ?\e$,1Em\e(B)
+        (?\e$(7!^\e(B . ?\e$,1En\e(B)
+        (?\e$(7!_\e(B . ?\e$,1Eo\e(B)
+        (?\e$(7!`\e(B . ?\e$,1Ep\e(B)
+        (?\e$(7!a\e(B . ?\e$,1Eq\e(B)
+        (?\e$(7!b\e(B . ?\e$,1Er\e(B)
+        (?\e$(7!c\e(B . ?\e$,1Es\e(B)
+        (?\e$(7!d\e(B . ?\e$,1Et\e(B)
+        (?\e$(7!e\e(B . ?\e$,1Eu\e(B)
+        (?\e$(7!f\e(B . ?\e$,1Ev\e(B)
+        (?\e$(7!g\e(B . ?\e$,1Ew\e(B)
+        (?\e$(7!h\e(B . ?\e$,1Ex\e(B)
+        (?\e$(7!i\e(B . ?\e$,1Ey\e(B)
+        (?\e$(7!j\e(B . ?\e$,1Ez\e(B)
+        (?\e$(7!k\e(B . ?\e$,1E{\e(B)
+        (?\e$(7!l\e(B . ?\e$,1E|\e(B)
+        (?\e$(7!m\e(B . ?\e$,1E}\e(B)
+        (?\e$(7!n\e(B . ?\e$,1E~\e(B)
+        (?\e$(7!o\e(B . ?\e$,1E\7f\e(B)
+        (?\e$(7"!\e(B . ?\e$,1F \e(B)
+        (?\e$(7""\e(B . ?\e$,1F!\e(B)
+        (?\e$(7"#\e(B . ?\e$,1F"\e(B)
+        (?\e$(7"$\e(B . ?\e$,1F#\e(B)
+        (?\e$(7"%\e(B . ?\e$,1F$\e(B)
+        (?\e$(7"&\e(B . ?\e$,1F%\e(B)
+        (?\e$(7"'\e(B . ?\e$,1F&\e(B)
+        (?\e$(7"(\e(B . ?\e$,1F'\e(B)
+        (?\e$(7"*\e(B . ?\e$,1F)\e(B)
+        (?\e$(7"+\e(B . ?\e$,1F*\e(B)
+        (?\e$(7",\e(B . ?\e$,1F+\e(B)
+        (?\e$(7"-\e(B . ?\e$,1F,\e(B)
+        (?\e$(7".\e(B . ?\e$,1F-\e(B)
+        (?\e$(7"/\e(B . ?\e$,1F.\e(B)
+        (?\e$(7"0\e(B . ?\e$,1F/\e(B)
+        (?\e$(7"1\e(B . ?\e$,1F0\e(B)
+        (?\e$(7"2\e(B . ?\e$,1F1\e(B)
+        (?\e$(7"3\e(B . ?\e$,1F2\e(B)
+        (?\e$(7"4\e(B . ?\e$,1F3\e(B)
+        (?\e$(7"5\e(B . ?\e$,1F4\e(B)
+        (?\e$(7"6\e(B . ?\e$,1F5\e(B)
+        (?\e$(7"7\e(B . ?\e$,1F6\e(B)
+        (?\e$(7"8\e(B . ?\e$,1F7\e(B)
+        (?\e$(7"9\e(B . ?\e$,1F8\e(B)
+        (?\e$(7":\e(B . ?\e$,1F9\e(B)
+        (?\e$(7";\e(B . ?\e$,1F:\e(B)
+        (?\e$(7"<\e(B . ?\e$,1F;\e(B)
+        (?\e$(7"=\e(B . ?\e$,1F<\e(B)
+        (?\e$(7">\e(B . ?\e$,1F=\e(B)
+        (?\e$(7"?\e(B . ?\e$,1F>\e(B)
+        (?\e$(7"@\e(B . ?\e$,1F?\e(B)
+        (?\e$(7"A\e(B . ?\e$,1F@\e(B)
+        (?\e$(7"B\e(B . ?\e$,1FA\e(B)
+        (?\e$(7"C\e(B . ?\e$,1FB\e(B)
+        (?\e$(7"D\e(B . ?\e$,1FC\e(B)
+        (?\e$(7"E\e(B . ?\e$,1FD\e(B)
+        (?\e$(7"F\e(B . ?\e$,1FE\e(B)
+        (?\e$(7"G\e(B . ?\e$,1FF\e(B)
+        (?\e$(7"H\e(B . ?\e$,1FG\e(B)
+        (?\e$(7"I\e(B . ?\e$,1FH\e(B)
+        (?\e$(7"J\e(B . ?\e$,1FI\e(B)
+        (?\e$(7"K\e(B . ?\e$,1FJ\e(B)
+        (?\e$(7"R\e(B . ?\e$,1FQ\e(B)
+        (?\e$(7"S\e(B . ?\e$,1FR\e(B)
+        (?\e$(7"T\e(B . ?\e$,1FS\e(B)
+        (?\e$(7"U\e(B . ?\e$,1FT\e(B)
+        (?\e$(7"V\e(B . ?\e$,1FU\e(B)
+        (?\e$(7"W\e(B . ?\e$,1FV\e(B)
+        (?\e$(7"X\e(B . ?\e$,1FW\e(B)
+        (?\e$(7"Y\e(B . ?\e$,1FX\e(B)
+        (?\e$(7"Z\e(B . ?\e$,1FY\e(B)
+        (?\e$(7"[\e(B . ?\e$,1FZ\e(B)
+        (?\e$(7"\\e(B . ?\e$,1F[\e(B)
+        (?\e$(7"]\e(B . ?\e$,1F\\e(B)
+        (?\e$(7"^\e(B . ?\e$,1F]\e(B)
+        (?\e$(7"_\e(B . ?\e$,1F^\e(B)
+        (?\e$(7"`\e(B . ?\e$,1F_\e(B)
+        (?\e$(7"a\e(B . ?\e$,1F`\e(B)
+        (?\e$(7"b\e(B . ?\e$,1Fa\e(B)
+        (?\e$(7"c\e(B . ?\e$,1Fb\e(B)
+        (?\e$(7"d\e(B . ?\e$,1Fc\e(B)
+        (?\e$(7"e\e(B . ?\e$,1Fd\e(B)
+        (?\e$(7"f\e(B . ?\e$,1Fe\e(B)
+        (?\e$(7"g\e(B . ?\e$,1Ff\e(B)
+        (?\e$(7"h\e(B . ?\e$,1Fg\e(B)
+        (?\e$(7"i\e(B . ?\e$,1Fh\e(B)
+        (?\e$(7"j\e(B . ?\e$,1Fi\e(B)
+        (?\e$(7"k\e(B . ?\e$,1Fj\e(B)
+        (?\e$(7"l\e(B . ?\e$,1Fk\e(B)
+        (?\e$(7#!\e(B . ?\e$,1Fp\e(B)
+        (?\e$(7#"\e(B . ?\e$,1Fq\e(B)
+        (?\e$(7##\e(B . ?\e$,1Fr\e(B)
+        (?\e$(7#$\e(B . ?\e$,1Fs\e(B)
+        (?\e$(7#%\e(B . ?\e$,1Ft\e(B)
+        (?\e$(7#&\e(B . ?\e$,1Fu\e(B)
+        (?\e$(7#'\e(B . ?\e$,1Fv\e(B)
+        (?\e$(7#(\e(B . ?\e$,1Fw\e(B)
+        (?\e$(7#*\e(B . ?\e$,1Fy\e(B)
+        (?\e$(7#+\e(B . ?\e$,1Fz\e(B)
+        (?\e$(7#,\e(B . ?\e$,1F{\e(B)
+        (?\e$(7#-\e(B . ?\e$,1F|\e(B)
+        (?\e$(7#.\e(B . ?\e$,1F}\e(B)
+        (?\e$(7#/\e(B . ?\e$,1F~\e(B)
+        (?\e$(7#0\e(B . ?\e$,1F\7f\e(B)
+        (?\e$(7#1\e(B . ?\e$,1G \e(B)
+        (?\e$(7#2\e(B . ?\e$,1G!\e(B)
+        (?\e$(7#3\e(B . ?\e$,1G"\e(B)
+        (?\e$(7#4\e(B . ?\e$,1G#\e(B)
+        (?\e$(7#5\e(B . ?\e$,1G$\e(B)
+        (?\e$(7#6\e(B . ?\e$,1G%\e(B)
+        (?\e$(7#7\e(B . ?\e$,1G&\e(B)
+        (?\e$(7#8\e(B . ?\e$,1G'\e(B)
+        (?\e$(7#9\e(B . ?\e$,1G(\e(B)
+        (?\e$(7#:\e(B . ?\e$,1G)\e(B)
+        (?\e$(7#;\e(B . ?\e$,1G*\e(B)
+        (?\e$(7#<\e(B . ?\e$,1G+\e(B)
+        (?\e$(7#=\e(B . ?\e$,1G,\e(B)
+        (?\e$(7#>\e(B . ?\e$,1G-\e(B)
+        (?\e$(7#?\e(B . ?\e$,1G.\e(B)
+        (?\e$(7#@\e(B . ?\e$,1G/\e(B)
+        (?\e$(7#A\e(B . ?\e$,1G0\e(B)
+        (?\e$(7#B\e(B . ?\e$,1G1\e(B)
+        (?\e$(7#C\e(B . ?\e$,1G2\e(B)
+        (?\e$(7#D\e(B . ?\e$,1G3\e(B)
+        (?\e$(7#E\e(B . ?\e$,1G4\e(B)
+        (?\e$(7#F\e(B . ?\e$,1G5\e(B)
+        (?\e$(7#G\e(B . ?\e$,1G6\e(B)
+        (?\e$(7#H\e(B . ?\e$,1G7\e(B)
+        (?\e$(7#I\e(B . ?\e$,1G8\e(B)
+        (?\e$(7#J\e(B . ?\e$,1G9\e(B)
+        (?\e$(7#K\e(B . ?\e$,1G:\e(B)
+        (?\e$(7#L\e(B . ?\e$,1G;\e(B)
+        (?\e$(7#M\e(B . ?\e$,1G<\e(B)
+        (?\e$(7#O\e(B . ?\e$,1G>\e(B)
+        (?\e$(7#P\e(B . ?\e$,1G?\e(B)
+        (?\e$(7#Q\e(B . ?\e$,1G@\e(B)
+        (?\e$(7#R\e(B . ?\e$,1GA\e(B)
+        (?\e$(7#S\e(B . ?\e$,1GB\e(B)
+        (?\e$(7#T\e(B . ?\e$,1GC\e(B)
+        (?\e$(7#U\e(B . ?\e$,1GD\e(B)
+        (?\e$(7#V\e(B . ?\e$,1GE\e(B)
+        (?\e$(7#W\e(B . ?\e$,1GF\e(B)
+        (?\e$(7#X\e(B . ?\e$,1GG\e(B)
+        (?\e$(7#Y\e(B . ?\e$,1GH\e(B)
+        (?\e$(7#Z\e(B . ?\e$,1GI\e(B)
+        (?\e$(7#[\e(B . ?\e$,1GJ\e(B)
+        (?\e$(7#\\e(B . ?\e$,1GK\e(B)
+        (?\e$(7#]\e(B . ?\e$,1GL\e(B)
+        (?\e$(7#`\e(B . ?\e$,1GO\e(B)))
+
+      (ipa
+       '((?\e,0 \e(B . ?i)
+        (?\e,0!\e(B . ?\e$,1#j\e(B)
+        (?\e,0"\e(B . ?e)
+        (?\e,0#\e(B . ?\e$,1#[\e(B)
+        (?\e,0$\e(B . ?\e,Af\e(B)
+        (?\e,0%\e(B . ?a)
+        (?\e,0&\e(B . ?\e$,1#h\e(B)
+        (?\e,0'\e(B . ?\e$,1#Y\e(B)
+        (?\e,0(\e(B . ?\e$,1#P\e(B)
+        (?\e,0)\e(B . ?\e$,1#o\e(B)
+        (?\e,0*\e(B . ?\e$,1#d\e(B)
+        (?\e,0+\e(B . ?\e$,1$,\e(B)
+        (?\e,0,\e(B . ?\e$,1#Q\e(B)
+        (?\e,0-\e(B . ?y)
+        (?\e,0.\e(B . ?\e$,1$/\e(B)
+        (?\e,0/\e(B . ?\e,Ax\e(B)
+        (?\e,00\e(B . ?\e$,1 s\e(B)
+        (?\e,01\e(B . ?\e$,1#v\e(B)
+        (?\e,02\e(B . ?\e$,1$)\e(B)
+        (?\e,03\e(B . ?\e$,1#u\e(B)
+        (?\e,04\e(B . ?u)
+        (?\e,05\e(B . ?\e$,1$*\e(B)
+        (?\e,06\e(B . ?o)
+        (?\e,07\e(B . ?\e$,1#T\e(B)
+        (?\e,08\e(B . ?\e$,1#R\e(B)
+        (?\e,0:\e(B . ?\e$,1#Z\e(B)
+        (?\e,0@\e(B . ?p)
+        (?\e,0A\e(B . ?b)
+        (?\e,0B\e(B . ?t)
+        (?\e,0C\e(B . ?d)
+        (?\e,0D\e(B . ?k)
+        (?\e,0E\e(B . ?g)
+        (?\e,0F\e(B . ?f)
+        (?\e,0G\e(B . ?v)
+        (?\e,0H\e(B . ?\e$,1'8\e(B)
+        (?\e,0I\e(B . ?\e,Ap\e(B)
+        (?\e,0J\e(B . ?s)
+        (?\e,0K\e(B . ?z)
+        (?\e,0L\e(B . ?\e$,1$#\e(B)
+        (?\e,0M\e(B . ?\e$,1$2\e(B)
+        (?\e,0N\e(B . ?\e,Ag\e(B)
+        (?\e,0O\e(B . ?x)
+        (?\e,0P\e(B . ?\e$,1$!\e(B)
+        (?\e,0Q\e(B . ?h)
+        (?\e,0R\e(B . ?m)
+        (?\e,0S\e(B . ?n)
+        (?\e,0T\e(B . ?\e$,1#r\e(B)
+        (?\e,0U\e(B . ?\e$,1 k\e(B)
+        (?\e,0V\e(B . ?r)
+        (?\e,0W\e(B . ?\e$,1$ \e(B)
+        (?\e,0X\e(B . ?\e$,1#y\e(B)
+        (?\e,0Y\e(B . ?j)
+        (?\e,0Z\e(B . ?l)
+        (?\e,0[\e(B . ?\e$,1$.\e(B)
+        (?\e,0\\e(B . ?\e$,1$?\e(B)
+        (?\e,0]\e(B . ?\e$,1#e\e(B)
+        (?\e,0^\e(B . ?w)
+        (?\e,0_\e(B . ?\e$,1$-\e(B)
+        (?\e,0p\e(B . ?\e$,1$h\e(B)
+        (?\e,0q\e(B . ?\e$,1$l\e(B)
+        (?\e,0r\e(B . ?\e$,1$p\e(B)))
+
+      (ethiopic
+       '((?\e$(3!!\e(B . ?\e$,1M@\e(B)
+        (?\e$(3!"\e(B . ?\e$,1MA\e(B)
+        (?\e$(3!#\e(B . ?\e$,1MB\e(B)
+        (?\e$(3!$\e(B . ?\e$,1MC\e(B)
+        (?\e$(3!%\e(B . ?\e$,1MD\e(B)
+        (?\e$(3!&\e(B . ?\e$,1ME\e(B)
+        (?\e$(3!'\e(B . ?\e$,1MF\e(B)
+        (?\e$(3!)\e(B . ?\e$,1MH\e(B)
+        (?\e$(3!*\e(B . ?\e$,1MI\e(B)
+        (?\e$(3!+\e(B . ?\e$,1MJ\e(B)
+        (?\e$(3!,\e(B . ?\e$,1MK\e(B)
+        (?\e$(3!-\e(B . ?\e$,1ML\e(B)
+        (?\e$(3!.\e(B . ?\e$,1MM\e(B)
+        (?\e$(3!/\e(B . ?\e$,1MN\e(B)
+        (?\e$(3!0\e(B . ?\e$,1MO\e(B)
+        (?\e$(3!1\e(B . ?\e$,1MP\e(B)
+        (?\e$(3!2\e(B . ?\e$,1MQ\e(B)
+        (?\e$(3!3\e(B . ?\e$,1MR\e(B)
+        (?\e$(3!4\e(B . ?\e$,1MS\e(B)
+        (?\e$(3!5\e(B . ?\e$,1MT\e(B)
+        (?\e$(3!6\e(B . ?\e$,1MU\e(B)
+        (?\e$(3!7\e(B . ?\e$,1MV\e(B)
+        (?\e$(3!8\e(B . ?\e$,1MW\e(B)
+        (?\e$(3!9\e(B . ?\e$,1MX\e(B)
+        (?\e$(3!:\e(B . ?\e$,1MY\e(B)
+        (?\e$(3!;\e(B . ?\e$,1MZ\e(B)
+        (?\e$(3!<\e(B . ?\e$,1M[\e(B)
+        (?\e$(3!=\e(B . ?\e$,1M\\e(B)
+        (?\e$(3!>\e(B . ?\e$,1M]\e(B)
+        (?\e$(3!?\e(B . ?\e$,1M^\e(B)
+        (?\e$(3!@\e(B . ?\e$,1M_\e(B)
+        (?\e$(3!A\e(B . ?\e$,1M`\e(B)
+        (?\e$(3!B\e(B . ?\e$,1Ma\e(B)
+        (?\e$(3!C\e(B . ?\e$,1Mb\e(B)
+        (?\e$(3!D\e(B . ?\e$,1Mc\e(B)
+        (?\e$(3!E\e(B . ?\e$,1Md\e(B)
+        (?\e$(3!F\e(B . ?\e$,1Me\e(B)
+        (?\e$(3!G\e(B . ?\e$,1Mf\e(B)
+        (?\e$(3!H\e(B . ?\e$,1Mg\e(B)
+        (?\e$(3!I\e(B . ?\e$,1Mh\e(B)
+        (?\e$(3!J\e(B . ?\e$,1Mi\e(B)
+        (?\e$(3!K\e(B . ?\e$,1Mj\e(B)
+        (?\e$(3!L\e(B . ?\e$,1Mk\e(B)
+        (?\e$(3!M\e(B . ?\e$,1Ml\e(B)
+        (?\e$(3!N\e(B . ?\e$,1Mm\e(B)
+        (?\e$(3!O\e(B . ?\e$,1Mn\e(B)
+        (?\e$(3!P\e(B . ?\e$,1Mo\e(B)
+        (?\e$(3!Q\e(B . ?\e$,1Mp\e(B)
+        (?\e$(3!R\e(B . ?\e$,1Mq\e(B)
+        (?\e$(3!S\e(B . ?\e$,1Mr\e(B)
+        (?\e$(3!T\e(B . ?\e$,1Ms\e(B)
+        (?\e$(3!U\e(B . ?\e$,1Mt\e(B)
+        (?\e$(3!V\e(B . ?\e$,1Mu\e(B)
+        (?\e$(3!W\e(B . ?\e$,1Mv\e(B)
+        (?\e$(3!X\e(B . ?\e$,1Mw\e(B)
+        (?\e$(3!Y\e(B . ?\e$,1Mx\e(B)
+        (?\e$(3!Z\e(B . ?\e$,1My\e(B)
+        (?\e$(3![\e(B . ?\e$,1Mz\e(B)
+        (?\e$(3!\\e(B . ?\e$,1M{\e(B)
+        (?\e$(3!]\e(B . ?\e$,1M|\e(B)
+        (?\e$(3!^\e(B . ?\e$,1M}\e(B)
+        (?\e$(3!_\e(B . ?\e$,1M~\e(B)
+        (?\e$(3!`\e(B . ?\e$,1M\7f\e(B)
+        (?\e$(3!a\e(B . ?\e$,1N \e(B)
+        (?\e$(3!b\e(B . ?\e$,1N!\e(B)
+        (?\e$(3!c\e(B . ?\e$,1N"\e(B)
+        (?\e$(3!d\e(B . ?\e$,1N#\e(B)
+        (?\e$(3!e\e(B . ?\e$,1N$\e(B)
+        (?\e$(3!f\e(B . ?\e$,1N%\e(B)
+        (?\e$(3!g\e(B . ?\e$,1N&\e(B)
+        (?\e$(3!i\e(B . ?\e$,1N(\e(B)
+        (?\e$(3!k\e(B . ?\e$,1N*\e(B)
+        (?\e$(3!l\e(B . ?\e$,1N+\e(B)
+        (?\e$(3!m\e(B . ?\e$,1N,\e(B)
+        (?\e$(3!n\e(B . ?\e$,1N-\e(B)
+        (?\e$(3!q\e(B . ?\e$,1N0\e(B)
+        (?\e$(3!r\e(B . ?\e$,1N1\e(B)
+        (?\e$(3!s\e(B . ?\e$,1N2\e(B)
+        (?\e$(3!t\e(B . ?\e$,1N3\e(B)
+        (?\e$(3!u\e(B . ?\e$,1N4\e(B)
+        (?\e$(3!v\e(B . ?\e$,1N5\e(B)
+        (?\e$(3!w\e(B . ?\e$,1N6\e(B)
+        (?\e$(3!y\e(B . ?\e$,1N8\e(B)
+        (?\e$(3!{\e(B . ?\e$,1N:\e(B)
+        (?\e$(3!|\e(B . ?\e$,1N;\e(B)
+        (?\e$(3!}\e(B . ?\e$,1N<\e(B)
+        (?\e$(3!~\e(B . ?\e$,1N=\e(B)
+        (?\e$(3"#\e(B . ?\e$,1N@\e(B)
+        (?\e$(3"$\e(B . ?\e$,1NA\e(B)
+        (?\e$(3"%\e(B . ?\e$,1NB\e(B)
+        (?\e$(3"&\e(B . ?\e$,1NC\e(B)
+        (?\e$(3"'\e(B . ?\e$,1ND\e(B)
+        (?\e$(3"(\e(B . ?\e$,1NE\e(B)
+        (?\e$(3")\e(B . ?\e$,1NF\e(B)
+        (?\e$(3"*\e(B . ?\e$,1NG\e(B)
+        (?\e$(3"+\e(B . ?\e$,1NH\e(B)
+        (?\e$(3",\e(B . ?\e$,1NI\e(B)
+        (?\e$(3"-\e(B . ?\e$,1NJ\e(B)
+        (?\e$(3".\e(B . ?\e$,1NK\e(B)
+        (?\e$(3"/\e(B . ?\e$,1NL\e(B)
+        (?\e$(3"0\e(B . ?\e$,1NM\e(B)
+        (?\e$(3"1\e(B . ?\e$,1NN\e(B)
+        (?\e$(3"2\e(B . ?\e$,1NO\e(B)
+        (?\e$(3"3\e(B . ?\e$,1NP\e(B)
+        (?\e$(3"4\e(B . ?\e$,1NQ\e(B)
+        (?\e$(3"5\e(B . ?\e$,1NR\e(B)
+        (?\e$(3"6\e(B . ?\e$,1NS\e(B)
+        (?\e$(3"7\e(B . ?\e$,1NT\e(B)
+        (?\e$(3"8\e(B . ?\e$,1NU\e(B)
+        (?\e$(3"9\e(B . ?\e$,1NV\e(B)
+        (?\e$(3":\e(B . ?\e$,1NW\e(B)
+        (?\e$(3";\e(B . ?\e$,1NX\e(B)
+        (?\e$(3"<\e(B . ?\e$,1NY\e(B)
+        (?\e$(3"=\e(B . ?\e$,1NZ\e(B)
+        (?\e$(3">\e(B . ?\e$,1N[\e(B)
+        (?\e$(3"?\e(B . ?\e$,1N\\e(B)
+        (?\e$(3"@\e(B . ?\e$,1N]\e(B)
+        (?\e$(3"A\e(B . ?\e$,1N^\e(B)
+        (?\e$(3"B\e(B . ?\e$,1N_\e(B)
+        (?\e$(3"C\e(B . ?\e$,1N`\e(B)
+        (?\e$(3"D\e(B . ?\e$,1Na\e(B)
+        (?\e$(3"E\e(B . ?\e$,1Nb\e(B)
+        (?\e$(3"F\e(B . ?\e$,1Nc\e(B)
+        (?\e$(3"G\e(B . ?\e$,1Nd\e(B)
+        (?\e$(3"H\e(B . ?\e$,1Ne\e(B)
+        (?\e$(3"I\e(B . ?\e$,1Nf\e(B)
+        (?\e$(3"K\e(B . ?\e$,1Nh\e(B)
+        (?\e$(3"M\e(B . ?\e$,1Nj\e(B)
+        (?\e$(3"N\e(B . ?\e$,1Nk\e(B)
+        (?\e$(3"O\e(B . ?\e$,1Nl\e(B)
+        (?\e$(3"P\e(B . ?\e$,1Nm\e(B)
+        (?\e$(3"S\e(B . ?\e$,1Np\e(B)
+        (?\e$(3"T\e(B . ?\e$,1Nq\e(B)
+        (?\e$(3"U\e(B . ?\e$,1Nr\e(B)
+        (?\e$(3"V\e(B . ?\e$,1Ns\e(B)
+        (?\e$(3"W\e(B . ?\e$,1Nt\e(B)
+        (?\e$(3"X\e(B . ?\e$,1Nu\e(B)
+        (?\e$(3"Y\e(B . ?\e$,1Nv\e(B)
+        (?\e$(3"Z\e(B . ?\e$,1Nw\e(B)
+        (?\e$(3"[\e(B . ?\e$,1Nx\e(B)
+        (?\e$(3"\\e(B . ?\e$,1Ny\e(B)
+        (?\e$(3"]\e(B . ?\e$,1Nz\e(B)
+        (?\e$(3"^\e(B . ?\e$,1N{\e(B)
+        (?\e$(3"_\e(B . ?\e$,1N|\e(B)
+        (?\e$(3"`\e(B . ?\e$,1N}\e(B)
+        (?\e$(3"a\e(B . ?\e$,1N~\e(B)
+        (?\e$(3"b\e(B . ?\e$,1N\7f\e(B)
+        (?\e$(3"c\e(B . ?\e$,1O \e(B)
+        (?\e$(3"d\e(B . ?\e$,1O!\e(B)
+        (?\e$(3"e\e(B . ?\e$,1O"\e(B)
+        (?\e$(3"f\e(B . ?\e$,1O#\e(B)
+        (?\e$(3"g\e(B . ?\e$,1O$\e(B)
+        (?\e$(3"h\e(B . ?\e$,1O%\e(B)
+        (?\e$(3"i\e(B . ?\e$,1O&\e(B)
+        (?\e$(3"j\e(B . ?\e$,1O'\e(B)
+        (?\e$(3"k\e(B . ?\e$,1O(\e(B)
+        (?\e$(3"l\e(B . ?\e$,1O)\e(B)
+        (?\e$(3"m\e(B . ?\e$,1O*\e(B)
+        (?\e$(3"n\e(B . ?\e$,1O+\e(B)
+        (?\e$(3"o\e(B . ?\e$,1O,\e(B)
+        (?\e$(3"p\e(B . ?\e$,1O-\e(B)
+        (?\e$(3"q\e(B . ?\e$,1O.\e(B)
+        (?\e$(3"s\e(B . ?\e$,1O0\e(B)
+        (?\e$(3"u\e(B . ?\e$,1O2\e(B)
+        (?\e$(3"v\e(B . ?\e$,1O3\e(B)
+        (?\e$(3"w\e(B . ?\e$,1O4\e(B)
+        (?\e$(3"x\e(B . ?\e$,1O5\e(B)
+        (?\e$(3"{\e(B . ?\e$,1O8\e(B)
+        (?\e$(3"|\e(B . ?\e$,1O9\e(B)
+        (?\e$(3"}\e(B . ?\e$,1O:\e(B)
+        (?\e$(3"~\e(B . ?\e$,1O;\e(B)
+        (?\e$(3#!\e(B . ?\e$,1O<\e(B)
+        (?\e$(3#"\e(B . ?\e$,1O=\e(B)
+        (?\e$(3##\e(B . ?\e$,1O>\e(B)
+        (?\e$(3#%\e(B . ?\e$,1O@\e(B)
+        (?\e$(3#'\e(B . ?\e$,1OB\e(B)
+        (?\e$(3#(\e(B . ?\e$,1OC\e(B)
+        (?\e$(3#)\e(B . ?\e$,1OD\e(B)
+        (?\e$(3#*\e(B . ?\e$,1OE\e(B)
+        (?\e$(3#-\e(B . ?\e$,1OH\e(B)
+        (?\e$(3#.\e(B . ?\e$,1OI\e(B)
+        (?\e$(3#/\e(B . ?\e$,1OJ\e(B)
+        (?\e$(3#0\e(B . ?\e$,1OK\e(B)
+        (?\e$(3#1\e(B . ?\e$,1OL\e(B)
+        (?\e$(3#2\e(B . ?\e$,1OM\e(B)
+        (?\e$(3#3\e(B . ?\e$,1ON\e(B)
+        (?\e$(3#5\e(B . ?\e$,1OP\e(B)
+        (?\e$(3#6\e(B . ?\e$,1OQ\e(B)
+        (?\e$(3#7\e(B . ?\e$,1OR\e(B)
+        (?\e$(3#8\e(B . ?\e$,1OS\e(B)
+        (?\e$(3#9\e(B . ?\e$,1OT\e(B)
+        (?\e$(3#:\e(B . ?\e$,1OU\e(B)
+        (?\e$(3#;\e(B . ?\e$,1OV\e(B)
+        (?\e$(3#=\e(B . ?\e$,1OX\e(B)
+        (?\e$(3#>\e(B . ?\e$,1OY\e(B)
+        (?\e$(3#?\e(B . ?\e$,1OZ\e(B)
+        (?\e$(3#@\e(B . ?\e$,1O[\e(B)
+        (?\e$(3#A\e(B . ?\e$,1O\\e(B)
+        (?\e$(3#B\e(B . ?\e$,1O]\e(B)
+        (?\e$(3#C\e(B . ?\e$,1O^\e(B)
+        (?\e$(3#D\e(B . ?\e$,1O_\e(B)
+        (?\e$(3#E\e(B . ?\e$,1O`\e(B)
+        (?\e$(3#F\e(B . ?\e$,1Oa\e(B)
+        (?\e$(3#G\e(B . ?\e$,1Ob\e(B)
+        (?\e$(3#H\e(B . ?\e$,1Oc\e(B)
+        (?\e$(3#I\e(B . ?\e$,1Od\e(B)
+        (?\e$(3#J\e(B . ?\e$,1Oe\e(B)
+        (?\e$(3#K\e(B . ?\e$,1Of\e(B)
+        (?\e$(3#L\e(B . ?\e$,1Og\e(B)
+        (?\e$(3#M\e(B . ?\e$,1Oh\e(B)
+        (?\e$(3#N\e(B . ?\e$,1Oi\e(B)
+        (?\e$(3#O\e(B . ?\e$,1Oj\e(B)
+        (?\e$(3#P\e(B . ?\e$,1Ok\e(B)
+        (?\e$(3#Q\e(B . ?\e$,1Ol\e(B)
+        (?\e$(3#R\e(B . ?\e$,1Om\e(B)
+        (?\e$(3#S\e(B . ?\e$,1On\e(B)
+        (?\e$(3#U\e(B . ?\e$,1Op\e(B)
+        (?\e$(3#V\e(B . ?\e$,1Oq\e(B)
+        (?\e$(3#W\e(B . ?\e$,1Or\e(B)
+        (?\e$(3#X\e(B . ?\e$,1Os\e(B)
+        (?\e$(3#Y\e(B . ?\e$,1Ot\e(B)
+        (?\e$(3#Z\e(B . ?\e$,1Ou\e(B)
+        (?\e$(3#[\e(B . ?\e$,1Ov\e(B)
+        (?\e$(3#\\e(B . ?\e$,1Ow\e(B)
+        (?\e$(3#]\e(B . ?\e$,1Ox\e(B)
+        (?\e$(3#^\e(B . ?\e$,1Oy\e(B)
+        (?\e$(3#_\e(B . ?\e$,1Oz\e(B)
+        (?\e$(3#`\e(B . ?\e$,1O{\e(B)
+        (?\e$(3#a\e(B . ?\e$,1O|\e(B)
+        (?\e$(3#b\e(B . ?\e$,1O}\e(B)
+        (?\e$(3#c\e(B . ?\e$,1O~\e(B)
+        (?\e$(3#d\e(B . ?\e$,1O\7f\e(B)
+        (?\e$(3#e\e(B . ?\e$,1P \e(B)
+        (?\e$(3#f\e(B . ?\e$,1P!\e(B)
+        (?\e$(3#g\e(B . ?\e$,1P"\e(B)
+        (?\e$(3#h\e(B . ?\e$,1P#\e(B)
+        (?\e$(3#i\e(B . ?\e$,1P$\e(B)
+        (?\e$(3#j\e(B . ?\e$,1P%\e(B)
+        (?\e$(3#k\e(B . ?\e$,1P&\e(B)
+        (?\e$(3#l\e(B . ?\e$,1P'\e(B)
+        (?\e$(3#m\e(B . ?\e$,1P(\e(B)
+        (?\e$(3#n\e(B . ?\e$,1P)\e(B)
+        (?\e$(3#o\e(B . ?\e$,1P*\e(B)
+        (?\e$(3#p\e(B . ?\e$,1P+\e(B)
+        (?\e$(3#q\e(B . ?\e$,1P,\e(B)
+        (?\e$(3#r\e(B . ?\e$,1P-\e(B)
+        (?\e$(3#s\e(B . ?\e$,1P.\e(B)
+        (?\e$(3#u\e(B . ?\e$,1P0\e(B)
+        (?\e$(3#w\e(B . ?\e$,1P2\e(B)
+        (?\e$(3#x\e(B . ?\e$,1P3\e(B)
+        (?\e$(3#y\e(B . ?\e$,1P4\e(B)
+        (?\e$(3#z\e(B . ?\e$,1P5\e(B)
+        (?\e$(3#}\e(B . ?\e$,1P8\e(B)
+        (?\e$(3#~\e(B . ?\e$,1P9\e(B)
+        (?\e$(3$!\e(B . ?\e$,1P:\e(B)
+        (?\e$(3$"\e(B . ?\e$,1P;\e(B)
+        (?\e$(3$#\e(B . ?\e$,1P<\e(B)
+        (?\e$(3$$\e(B . ?\e$,1P=\e(B)
+        (?\e$(3$%\e(B . ?\e$,1P>\e(B)
+        (?\e$(3$'\e(B . ?\e$,1P@\e(B)
+        (?\e$(3$(\e(B . ?\e$,1PA\e(B)
+        (?\e$(3$)\e(B . ?\e$,1PB\e(B)
+        (?\e$(3$*\e(B . ?\e$,1PC\e(B)
+        (?\e$(3$+\e(B . ?\e$,1PD\e(B)
+        (?\e$(3$,\e(B . ?\e$,1PE\e(B)
+        (?\e$(3$-\e(B . ?\e$,1PF\e(B)
+        (?\e$(3$.\e(B . ?\e$,1PG\e(B)
+        (?\e$(3$/\e(B . ?\e$,1PH\e(B)
+        (?\e$(3$0\e(B . ?\e$,1PI\e(B)
+        (?\e$(3$1\e(B . ?\e$,1PJ\e(B)
+        (?\e$(3$2\e(B . ?\e$,1PK\e(B)
+        (?\e$(3$3\e(B . ?\e$,1PL\e(B)
+        (?\e$(3$4\e(B . ?\e$,1PM\e(B)
+        (?\e$(3$5\e(B . ?\e$,1PN\e(B)
+        (?\e$(3$6\e(B . ?\e$,1PO\e(B)
+        (?\e$(3$7\e(B . ?\e$,1PP\e(B)
+        (?\e$(3$8\e(B . ?\e$,1PQ\e(B)
+        (?\e$(3$9\e(B . ?\e$,1PR\e(B)
+        (?\e$(3$:\e(B . ?\e$,1PS\e(B)
+        (?\e$(3$;\e(B . ?\e$,1PT\e(B)
+        (?\e$(3$<\e(B . ?\e$,1PU\e(B)
+        (?\e$(3$=\e(B . ?\e$,1PV\e(B)
+        (?\e$(3$>\e(B . ?\e$,1PW\e(B)
+        (?\e$(3$?\e(B . ?\e$,1PX\e(B)
+        (?\e$(3$@\e(B . ?\e$,1PY\e(B)
+        (?\e$(3$A\e(B . ?\e$,1PZ\e(B)
+        (?\e$(3$B\e(B . ?\e$,1P[\e(B)
+        (?\e$(3$C\e(B . ?\e$,1P\\e(B)
+        (?\e$(3$D\e(B . ?\e$,1P]\e(B)
+        (?\e$(3$E\e(B . ?\e$,1P^\e(B)
+        (?\e$(3$F\e(B . ?\e$,1P_\e(B)
+        (?\e$(3$G\e(B . ?\e$,1P`\e(B)
+        (?\e$(3$H\e(B . ?\e$,1Pa\e(B)
+        (?\e$(3$I\e(B . ?\e$,1Pb\e(B)
+        (?\e$(3$J\e(B . ?\e$,1Pc\e(B)
+        (?\e$(3$K\e(B . ?\e$,1Pd\e(B)
+        (?\e$(3$L\e(B . ?\e$,1Pe\e(B)
+        (?\e$(3$M\e(B . ?\e$,1Pf\e(B)
+        (?\e$(3$O\e(B . ?\e$,1Ph\e(B)
+        (?\e$(3$P\e(B . ?\e$,1Pi\e(B)
+        (?\e$(3$Q\e(B . ?\e$,1Pj\e(B)
+        (?\e$(3$R\e(B . ?\e$,1Pk\e(B)
+        (?\e$(3$S\e(B . ?\e$,1Pl\e(B)
+        (?\e$(3$T\e(B . ?\e$,1Pm\e(B)
+        (?\e$(3$U\e(B . ?\e$,1Pn\e(B)
+        (?\e$(3$V\e(B . ?\e$,1Po\e(B)
+        (?\e$(3$W\e(B . ?\e$,1Pp\e(B)
+        (?\e$(3$X\e(B . ?\e$,1Pq\e(B)
+        (?\e$(3$Y\e(B . ?\e$,1Pr\e(B)
+        (?\e$(3$Z\e(B . ?\e$,1Ps\e(B)
+        (?\e$(3$[\e(B . ?\e$,1Pt\e(B)
+        (?\e$(3$\\e(B . ?\e$,1Pu\e(B)
+        (?\e$(3$]\e(B . ?\e$,1Pv\e(B)
+        (?\e$(3$^\e(B . ?\e$,1Pw\e(B)
+        (?\e$(3$_\e(B . ?\e$,1Px\e(B)
+        (?\e$(3$`\e(B . ?\e$,1Py\e(B)
+        (?\e$(3$a\e(B . ?\e$,1Pz\e(B)
+        (?\e$(3$h\e(B . ?\e$,1Q!\e(B)
+        (?\e$(3$i\e(B . ?\e$,1Q"\e(B)
+        (?\e$(3$j\e(B . ?\e$,1Q#\e(B)
+        (?\e$(3$k\e(B . ?\e$,1Q$\e(B)
+        (?\e$(3$l\e(B . ?\e$,1Q%\e(B)
+        (?\e$(3$m\e(B . ?\e$,1Q&\e(B)
+        (?\e$(3$n\e(B . ?\e$,1Q'\e(B)
+        (?\e$(3$o\e(B . ?\e$,1Q(\e(B)
+        (?\e$(3$p\e(B . ?\e$,1Q)\e(B)
+        (?\e$(3$q\e(B . ?\e$,1Q*\e(B)
+        (?\e$(3$r\e(B . ?\e$,1Q+\e(B)
+        (?\e$(3$s\e(B . ?\e$,1Q,\e(B)
+        (?\e$(3$t\e(B . ?\e$,1Q-\e(B)
+        (?\e$(3$u\e(B . ?\e$,1Q.\e(B)
+        (?\e$(3$v\e(B . ?\e$,1Q/\e(B)
+        (?\e$(3$w\e(B . ?\e$,1Q0\e(B)
+        (?\e$(3$x\e(B . ?\e$,1Q1\e(B)
+        (?\e$(3$y\e(B . ?\e$,1Q2\e(B)
+        (?\e$(3$z\e(B . ?\e$,1Q3\e(B)
+        (?\e$(3${\e(B . ?\e$,1Q4\e(B)
+        (?\e$(3$|\e(B . ?\e$,1Q5\e(B)
+        (?\e$(3$}\e(B . ?\e$,1Q6\e(B)
+        (?\e$(3$~\e(B . ?\e$,1Q7\e(B)
+        (?\e$(3%!\e(B . ?\e$,1Q8\e(B)
+        (?\e$(3%"\e(B . ?\e$,1Q9\e(B)
+        (?\e$(3%#\e(B . ?\e$,1Q:\e(B)
+        (?\e$(3%$\e(B . ?\e$,1Q;\e(B)
+        (?\e$(3%%\e(B . ?\e$,1Q<\e(B)))
+
+      (in-is13194-devanagari
+       '((?\e(5!\e(B . ?\e$,15A\e(B)
+        (?\e(5"\e(B . ?\e$,15B\e(B)
+        (?\e(5#\e(B . ?\e$,15C\e(B)
+        (?\e(5$\e(B . ?\e$,15E\e(B)
+        (?\e(5%\e(B . ?\e$,15F\e(B)
+        (?\e(5&\e(B . ?\e$,15G\e(B)
+        (?\e(5'\e(B . ?\e$,15H\e(B)
+        (?\e(5(\e(B . ?\e$,15I\e(B)
+        (?\e(5)\e(B . ?\e$,15J\e(B)
+        (?\e(5*\e(B . ?\e$,15K\e(B)
+        (?\e(5+\e(B . ?\e$,15N\e(B)
+        (?\e(5,\e(B . ?\e$,15O\e(B)
+        (?\e(5-\e(B . ?\e$,15P\e(B)
+        (?\e(5.\e(B . ?\e$,15M\e(B)
+        (?\e(5/\e(B . ?\e$,15R\e(B)
+        (?\e(50\e(B . ?\e$,15S\e(B)
+        (?\e(51\e(B . ?\e$,15T\e(B)
+        (?\e(52\e(B . ?\e$,15M\e(B)
+        (?\e(53\e(B . ?\e$,15U\e(B)
+        (?\e(54\e(B . ?\e$,15V\e(B)
+        (?\e(55\e(B . ?\e$,15W\e(B)
+        (?\e(56\e(B . ?\e$,15X\e(B)
+        (?\e(57\e(B . ?\e$,15Y\e(B)
+        (?\e(58\e(B . ?\e$,15Z\e(B)
+        (?\e(59\e(B . ?\e$,15[\e(B)
+        (?\e(5:\e(B . ?\e$,15\\e(B)
+        (?\e(5;\e(B . ?\e$,15]\e(B)
+        (?\e(5<\e(B . ?\e$,15^\e(B)
+        (?\e(5=\e(B . ?\e$,15_\e(B)
+        (?\e(5>\e(B . ?\e$,15`\e(B)
+        (?\e(5?\e(B . ?\e$,15a\e(B)
+        (?\e(5@\e(B . ?\e$,15b\e(B)
+        (?\e(5A\e(B . ?\e$,15c\e(B)
+        (?\e(5B\e(B . ?\e$,15d\e(B)
+        (?\e(5C\e(B . ?\e$,15e\e(B)
+        (?\e(5D\e(B . ?\e$,15f\e(B)
+        (?\e(5E\e(B . ?\e$,15g\e(B)
+        (?\e(5F\e(B . ?\e$,15h\e(B)
+        (?\e(5G\e(B . ?\e$,15i\e(B)
+        (?\e(5H\e(B . ?\e$,15j\e(B)
+        (?\e(5I\e(B . ?\e$,15k\e(B)
+        (?\e(5J\e(B . ?\e$,15l\e(B)
+        (?\e(5K\e(B . ?\e$,15m\e(B)
+        (?\e(5L\e(B . ?\e$,15n\e(B)
+        (?\e(5M\e(B . ?\e$,15o\e(B)
+        (?\e(5N\e(B . ?\e$,16?\e(B)
+        (?\e(5O\e(B . ?\e$,15p\e(B)
+        (?\e(5P\e(B . ?\e$,15q\e(B)
+        (?\e(5Q\e(B . ?\e$,15r\e(B)
+        (?\e(5R\e(B . ?\e$,15s\e(B)
+        (?\e(5S\e(B . ?\e$,15t\e(B)
+        (?\e(5T\e(B . ?\e$,15u\e(B)
+        (?\e(5U\e(B . ?\e$,15v\e(B)
+        (?\e(5V\e(B . ?\e$,15w\e(B)
+        (?\e(5W\e(B . ?\e$,15x\e(B)
+        (?\e(5X\e(B . ?\e$,15y\e(B)
+        (?\e(5Z\e(B . ?\e$,15~\e(B)
+        (?\e(5[\e(B . ?\e$,15\7f\e(B)
+        (?\e(5\\e(B . ?\e$,16 \e(B)
+        (?\e(5]\e(B . ?\e$,16!\e(B)
+        (?\e(5^\e(B . ?\e$,16"\e(B)
+        (?\e(5_\e(B . ?\e$,16#\e(B)
+        (?\e(5`\e(B . ?\e$,16&\e(B)
+        (?\e(5a\e(B . ?\e$,16'\e(B)
+        (?\e(5b\e(B . ?\e$,16(\e(B)
+        (?\e(5c\e(B . ?\e$,16%\e(B)
+        (?\e(5d\e(B . ?\e$,16*\e(B)
+        (?\e(5e\e(B . ?\e$,16+\e(B)
+        (?\e(5f\e(B . ?\e$,16,\e(B)
+        (?\e(5g\e(B . ?\e$,16)\e(B)
+        (?\e(5h\e(B . ?\e$,16-\e(B)
+        (?\e(5i\e(B . ?\e$,15|\e(B)
+        (?\e(5j\e(B . ?\e$,16D\e(B)
+        (?\e(5q\e(B . ?\e$,16F\e(B)
+        (?\e(5r\e(B . ?\e$,16G\e(B)
+        (?\e(5s\e(B . ?\e$,16H\e(B)
+        (?\e(5t\e(B . ?\e$,16I\e(B)
+        (?\e(5u\e(B . ?\e$,16J\e(B)
+        (?\e(5v\e(B . ?\e$,16K\e(B)
+        (?\e(5w\e(B . ?\e$,16L\e(B)
+        (?\e(5x\e(B . ?\e$,16M\e(B)
+        (?\e(5y\e(B . ?\e$,16N\e(B)
+        (?\e(5z\e(B . ?\e$,16O\e(B)))
+
+      (katakana-jisx0201
+       '((?\e(I!\e(B . ?\e$,3sa\e(B)
+        (?\\e(I"\e(B . ?\\e$,3sb\e(B)
+        (?\\e(I#\e(B . ?\\e$,3sc\e(B)
+        (?\e(I$\e(B . ?\e$,3sd\e(B)
+        (?\e(I%\e(B . ?\e$,3se\e(B)
+        (?\e(I&\e(B . ?\e$,3sf\e(B)
+        (?\e(I'\e(B . ?\e$,3sg\e(B)
+        (?\e(I(\e(B . ?\e$,3sh\e(B)
+        (?\e(I)\e(B . ?\e$,3si\e(B)
+        (?\e(I*\e(B . ?\e$,3sj\e(B)
+        (?\e(I+\e(B . ?\e$,3sk\e(B)
+        (?\e(I,\e(B . ?\e$,3sl\e(B)
+        (?\e(I-\e(B . ?\e$,3sm\e(B)
+        (?\e(I.\e(B . ?\e$,3sn\e(B)
+        (?\e(I/\e(B . ?\e$,3so\e(B)
+        (?\e(I0\e(B . ?\e$,3sp\e(B)
+        (?\e(I1\e(B . ?\e$,3sq\e(B)
+        (?\e(I2\e(B . ?\e$,3sr\e(B)
+        (?\e(I3\e(B . ?\e$,3ss\e(B)
+        (?\e(I4\e(B . ?\e$,3st\e(B)
+        (?\e(I5\e(B . ?\e$,3su\e(B)
+        (?\e(I6\e(B . ?\e$,3sv\e(B)
+        (?\e(I7\e(B . ?\e$,3sw\e(B)
+        (?\e(I8\e(B . ?\e$,3sx\e(B)
+        (?\e(I9\e(B . ?\e$,3sy\e(B)
+        (?\e(I:\e(B . ?\e$,3sz\e(B)
+        (?\e(I;\e(B . ?\e$,3s{\e(B)
+        (?\e(I<\e(B . ?\e$,3s|\e(B)
+        (?\e(I=\e(B . ?\e$,3s}\e(B)
+        (?\e(I>\e(B . ?\e$,3s~\e(B)
+        (?\e(I?\e(B . ?\e$,3s\7f\e(B)
+        (?\e(I@\e(B . ?\e$,3t \e(B)
+        (?\e(IA\e(B . ?\e$,3t!\e(B)
+        (?\e(IB\e(B . ?\e$,3t"\e(B)
+        (?\e(IC\e(B . ?\e$,3t#\e(B)
+        (?\e(ID\e(B . ?\e$,3t$\e(B)
+        (?\e(IE\e(B . ?\e$,3t%\e(B)
+        (?\e(IF\e(B . ?\e$,3t&\e(B)
+        (?\e(IG\e(B . ?\e$,3t'\e(B)
+        (?\e(IH\e(B . ?\e$,3t(\e(B)
+        (?\e(II\e(B . ?\e$,3t)\e(B)
+        (?\e(IJ\e(B . ?\e$,3t*\e(B)
+        (?\e(IK\e(B . ?\e$,3t+\e(B)
+        (?\e(IL\e(B . ?\e$,3t,\e(B)
+        (?\e(IM\e(B . ?\e$,3t-\e(B)
+        (?\e(IN\e(B . ?\e$,3t.\e(B)
+        (?\e(IO\e(B . ?\e$,3t/\e(B)
+        (?\e(IP\e(B . ?\e$,3t0\e(B)
+        (?\e(IQ\e(B . ?\e$,3t1\e(B)
+        (?\e(IR\e(B . ?\e$,3t2\e(B)
+        (?\e(IS\e(B . ?\e$,3t3\e(B)
+        (?\e(IT\e(B . ?\e$,3t4\e(B)
+        (?\e(IU\e(B . ?\e$,3t5\e(B)
+        (?\e(IV\e(B . ?\e$,3t6\e(B)
+        (?\e(IW\e(B . ?\e$,3t7\e(B)
+        (?\e(IX\e(B . ?\e$,3t8\e(B)
+        (?\e(IY\e(B . ?\e$,3t9\e(B)
+        (?\e(IZ\e(B . ?\e$,3t:\e(B)
+        (?\e(I[\e(B . ?\e$,3t;\e(B)
+        (?\e(I\\e(B . ?\e$,3t<\e(B)
+        (?\e(I]\e(B . ?\e$,3t=\e(B)
+        (?\e(I^\e(B . ?\e$,3t>\e(B)
+        (?\e(I_\e(B . ?\e$,3t?\e(B)))
+
+      (chinese-sisheng
+       '((?\e(0!\e(B . ?\e$,1 !\e(B)
+        (?\e(0"\e(B . ?\e,Aa\e(B)
+        (?\e(0#\e(B . ?\e$,1".\e(B)
+        (?\e(0$\e(B . ?\e,A`\e(B)
+        (?\e(0%\e(B . ?\e$,1 3\e(B)
+        (?\e(0&\e(B . ?\e,Ai\e(B)
+        (?\e(0'\e(B . ?\e$,1 ;\e(B)
+        (?\e(0(\e(B . ?\e,Ah\e(B)
+        (?\e(0)\e(B . ?\e$,1 K\e(B)
+        (?\e(0*\e(B . ?\e,Am\e(B)
+        (?\e(0+\e(B . ?\e$,1"0\e(B)
+        (?\e(0,\e(B . ?\e,Al\e(B)
+        (?\e(0-\e(B . ?\e$,1 m\e(B)
+        (?\e(0.\e(B . ?\e,As\e(B)
+        (?\e(0/\e(B . ?\e$,1"2\e(B)
+        (?\e(00\e(B . ?\e,Ar\e(B)
+        (?\e(01\e(B . ?\e$,1!+\e(B)
+        (?\e(02\e(B . ?\e,Az\e(B)
+        (?\e(03\e(B . ?\e$,1"4\e(B)
+        (?\e(04\e(B . ?\e,Ay\e(B)
+        (?\e(05\e(B . ?\e$,1"6\e(B)
+        (?\e(06\e(B . ?\e$,1"8\e(B)
+        (?\e(07\e(B . ?\e$,1":\e(B)
+        (?\e(08\e(B . ?\e$,1"<\e(B)
+        (?\e(09\e(B . ?\e,A|\e(B)
+        (?\e(0:\e(B . ?\e,Aj\e(B)
+        (?\e(0<\e(B . ?\e$,1m\7f\e(B)
+        (?\e(0=\e(B . ?\e$,1 d\e(B)
+        (?\e(0>\e(B . ?\e$,1 h\e(B)
+        (?\e(0?\e(B . ?\e$,1"Y\e(B)
+        (?\e(0A\e(B . ?\e$,1$i\e(B)
+        (?\e(0B\e(B . ?\e$,1$j\e(B)
+        (?\e(0C\e(B . ?\e$,1$g\e(B)
+        (?\e(0D\e(B . ?\e$,1$k\e(B)
+        (?\e(0E\e(B . ?\e$,2@%\e(B)
+        (?\e(0F\e(B . ?\e$,2@&\e(B)
+        (?\e(0G\e(B . ?\e$,2@'\e(B)
+        (?\e(0H\e(B . ?\e$,2@(\e(B)
+        (?\e(0I\e(B . ?\e$,2@)\e(B)
+        (?\e(0J\e(B . ?\e$,2@*\e(B)
+        (?\e(0K\e(B . ?\e$,2@+\e(B)
+        (?\e(0L\e(B . ?\e$,2@,\e(B)
+        (?\e(0M\e(B . ?\e$,2@-\e(B)
+        (?\e(0N\e(B . ?\e$,2@.\e(B)
+        (?\e(0O\e(B . ?\e$,2@/\e(B)
+        (?\e(0P\e(B . ?\e$,2@0\e(B)
+        (?\e(0Q\e(B . ?\e$,2@1\e(B)
+        (?\e(0R\e(B . ?\e$,2@2\e(B)
+        (?\e(0S\e(B . ?\e$,2@3\e(B)
+        (?\e(0T\e(B . ?\e$,2@4\e(B)
+        (?\e(0U\e(B . ?\e$,2@5\e(B)
+        (?\e(0V\e(B . ?\e$,2@6\e(B)
+        (?\e(0W\e(B . ?\e$,2@7\e(B)
+        (?\e(0X\e(B . ?\e$,2@8\e(B)
+        (?\e(0Y\e(B . ?\e$,2@9\e(B)
+        (?\e(0Z\e(B . ?\e$,2@:\e(B)
+        (?\e(0[\e(B . ?\e$,2@;\e(B)
+        (?\e(0\\e(B . ?\e$,2@<\e(B)
+        (?\e(0]\e(B . ?\e$,2@=\e(B)
+        (?\e(0^\e(B . ?\e$,2@>\e(B)
+        (?\e(0_\e(B . ?\e$,2@?\e(B)
+        (?\e(0`\e(B . ?\e$,2@@\e(B)
+        (?\e(0a\e(B . ?\e$,2@A\e(B)
+        (?\e(0b\e(B . ?\e$,2@B\e(B)
+        (?\e(0c\e(B . ?\e$,2@C\e(B)
+        (?\e(0d\e(B . ?\e$,2@D\e(B)
+        (?\e(0e\e(B . ?\e$,2@E\e(B)
+        (?\e(0f\e(B . ?\e$,2@F\e(B)
+        (?\e(0g\e(B . ?\e$,2@G\e(B)
+        (?\e(0h\e(B . ?\e$,2@H\e(B)
+        (?\e(0i\e(B . ?\e$,2@I\e(B)))
+
+      (lao
+       '((?\e(1!\e(B . ?\e$,1D!\e(B)
+        (?\e(1"\e(B . ?\e$,1D"\e(B)
+        (?\e(1$\e(B . ?\e$,1D$\e(B)
+        (?\e(1'\e(B . ?\e$,1D'\e(B)
+        (?\e(1(\e(B . ?\e$,1D(\e(B)
+        (?\e(1*\e(B . ?\e$,1D*\e(B)
+        (?\e(1-\e(B . ?\e$,1D-\e(B)
+        (?\e(14\e(B . ?\e$,1D4\e(B)
+        (?\e(15\e(B . ?\e$,1D5\e(B)
+        (?\e(16\e(B . ?\e$,1D6\e(B)
+        (?\e(17\e(B . ?\e$,1D7\e(B)
+        (?\e(19\e(B . ?\e$,1D9\e(B)
+        (?\e(1:\e(B . ?\e$,1D:\e(B)
+        (?\e(1;\e(B . ?\e$,1D;\e(B)
+        (?\e(1<\e(B . ?\e$,1D<\e(B)
+        (?\e(1=\e(B . ?\e$,1D=\e(B)
+        (?\e(1>\e(B . ?\e$,1D>\e(B)
+        (?\e(1?\e(B . ?\e$,1D?\e(B)
+        (?\e(1A\e(B . ?\e$,1DA\e(B)
+        (?\e(1B\e(B . ?\e$,1DB\e(B)
+        (?\e(1C\e(B . ?\e$,1DC\e(B)
+        (?\e(1E\e(B . ?\e$,1DE\e(B)
+        (?\e(1G\e(B . ?\e$,1DG\e(B)
+        (?\e(1J\e(B . ?\e$,1DJ\e(B)
+        (?\e(1K\e(B . ?\e$,1DK\e(B)
+        (?\e(1M\e(B . ?\e$,1DM\e(B)
+        (?\e(1N\e(B . ?\e$,1DN\e(B)
+        (?\e(1O\e(B . ?\e$,1DO\e(B)
+        (?\e(1P\e(B . ?\e$,1DP\e(B)
+        (?\e(1Q\e(B . ?\e$,1DQ\e(B)
+        (?\e(1R\e(B . ?\e$,1DR\e(B)
+        (?\e(1S\e(B . ?\e$,1DS\e(B)
+        (?\e(1T\e(B . ?\e$,1DT\e(B)
+        (?\e(1U\e(B . ?\e$,1DU\e(B)
+        (?\e(1V\e(B . ?\e$,1DV\e(B)
+        (?\e(1W\e(B . ?\e$,1DW\e(B)
+        (?\e(1X\e(B . ?\e$,1DX\e(B)
+        (?\e(1Y\e(B . ?\e$,1DY\e(B)
+        (?\e(1[\e(B . ?\e$,1D[\e(B)
+        (?\e(1\\e(B . ?\e$,1D\\e(B)
+        (?\e(1]\e(B . ?\e$,1D]\e(B)
+        (?\e(1`\e(B . ?\e$,1D`\e(B)
+        (?\e(1a\e(B . ?\e$,1Da\e(B)
+        (?\e(1b\e(B . ?\e$,1Db\e(B)
+        (?\e(1c\e(B . ?\e$,1Dc\e(B)
+        (?\e(1d\e(B . ?\e$,1Dd\e(B)
+        (?\e(1f\e(B . ?\e$,1Df\e(B)
+        (?\e(1h\e(B . ?\e$,1Dh\e(B)
+        (?\e(1i\e(B . ?\e$,1Di\e(B)
+        (?\e(1j\e(B . ?\e$,1Dj\e(B)
+        (?\e(1k\e(B . ?\e$,1Dk\e(B)
+        (?\e(1l\e(B . ?\e$,1Dl\e(B)
+        (?\e(1m\e(B . ?\e$,1Dm\e(B)
+        (?\e(1p\e(B . ?\e$,1Dp\e(B)
+        (?\e(1q\e(B . ?\e$,1Dq\e(B)
+        (?\e(1r\e(B . ?\e$,1Dr\e(B)
+        (?\e(1s\e(B . ?\e$,1Ds\e(B)
+        (?\e(1t\e(B . ?\e$,1Dt\e(B)
+        (?\e(1u\e(B . ?\e$,1Du\e(B)
+        (?\e(1v\e(B . ?\e$,1Dv\e(B)
+        (?\e(1w\e(B . ?\e$,1Dw\e(B)
+        (?\e(1x\e(B . ?\e$,1Dx\e(B)
+        (?\e(1y\e(B . ?\e$,1Dy\e(B)
+        (?\e(1|\e(B . ?\e$,1D|\e(B)
+        (?\e(1}\e(B . ?\e$,1D}\e(B))))
+  (let ((table (make-char-table 'safe-chars))
+       safe-charsets)
+    (dolist (cs '(vietnamese-viscii lao chinese-sisheng ipa
+                 katakana-jisx0201 thai-tis620 tibetan-iso-8bit
+                 in-is13194-devanagari ethiopic))
+      ;; These tables could be used as translation-table-for-encode by
+      ;; the relevant coding systems.
+      (let ((encode-translator
+            (if (coding-system-p cs)
+                (set (intern (format "ucs-%s-encode-table" cs))
+                     (make-translation-table)))))
+       (dolist (pair (symbol-value cs))
+         (aset ucs-mule-to-mule-unicode (car pair) (cdr pair))
+         (if encode-translator
+             (aset encode-translator (cdr pair) (car pair))))
+       (if (charsetp cs)
+           (push cs safe-charsets)
+         (setq safe-charsets
+               (append (delq 'ascii (coding-system-get cs 'safe-charsets))
+                       safe-charsets)))))
+    (dolist (c safe-charsets)
+      (aset table (make-char c) t))
+    (coding-system-put 'mule-utf-8 'safe-charsets
+                      (append (coding-system-get 'mule-utf-8 'safe-charsets)
+                              safe-charsets))
+    (register-char-codings 'mule-utf-8 table)))
+
 (provide 'ucs-tables)
 
 ;;; ucs-tables.el ends here