]> git.eshelyaron.com Git - emacs.git/commitdiff
(decode-char): Use utf-8-translation-table-for-decode.
authorDave Love <fx@gnu.org>
Wed, 17 Jul 2002 19:20:01 +0000 (19:20 +0000)
committerDave Love <fx@gnu.org>
Wed, 17 Jul 2002 19:20:01 +0000 (19:20 +0000)
(encode-char): Use ucs-mule-to-mule-unicode.

lisp/international/mule.el

index b7d6de4491382ac188aa1178edefb3f17bd66e12..e5fdf415e1e1b62cc1cdada28388e076fd9008e3 100644 (file)
@@ -307,34 +307,40 @@ See also the documentation of `make-char'."
   "Return character specified by coded character set CCS and CODE-POINT in it.
 Return nil if such a character is not supported.
 Currently the only supported coded character set is `ucs' (ISO/IEC
-10646: Universal Multi-Octet Coded Character Set).
+10646: Universal Multi-Octet Coded Character Set), and the result is
+translated through the char table `utf-8-translation-table-for-decode'.
 
 Optional argument RESTRICTION specifies a way to map the pair of CCS
 and CODE-POINT to a character.   Currently not supported and just ignored."
-  (cond ((eq ccs 'ucs)
-        (cond ((< code-point 160)
-               code-point)
-              ((< code-point 256)
-               (make-char 'latin-iso8859-1 code-point))
-              ((< code-point #x2500)
-               (setq code-point (- code-point #x0100))
-               (make-char 'mule-unicode-0100-24ff
-                          (+ (/ code-point 96) 32) (+ (% code-point 96) 32)))
-              ((< code-point #x3400)
-               (setq code-point (- code-point #x2500))
-               (make-char 'mule-unicode-2500-33ff
-                          (+ (/ code-point 96) 32) (+ (% code-point 96) 32)))
-              ((and (>= code-point #xe000) (< code-point #x10000))
-               (setq code-point (- code-point #xe000))
-               (make-char 'mule-unicode-e000-ffff
-                          (+ (/ code-point 96) 32) (+ (% code-point 96) 32)))
-              ))))
+  (cond
+   ((eq ccs 'ucs)
+    (let ((c (cond
+             ((< code-point 160)
+              code-point)
+             ((< code-point 256)
+              (make-char 'latin-iso8859-1 code-point))
+             ((< code-point #x2500)
+              (setq code-point (- code-point #x0100))
+              (make-char 'mule-unicode-0100-24ff
+                         (+ (/ code-point 96) 32) (+ (% code-point 96) 32)))
+             ((< code-point #x3400)
+              (setq code-point (- code-point #x2500))
+              (make-char 'mule-unicode-2500-33ff
+                         (+ (/ code-point 96) 32) (+ (% code-point 96) 32)))
+             ((and (>= code-point #xe000) (< code-point #x10000))
+              (setq code-point (- code-point #xe000))
+              (make-char 'mule-unicode-e000-ffff
+                         (+ (/ code-point 96) 32) (+ (% code-point 96) 32))))))
+      (if (and c (aref utf-8-translation-table-for-decode c))
+         (aref utf-8-translation-table-for-decode c)
+       c)))))
 
 (defun encode-char (char ccs &optional restriction)
   "Return code-point in coded character set CCS that corresponds to CHAR.
 Return nil if CHAR is not included in CCS.
 Currently the only supported coded character set is `ucs' (ISO/IEC
-10646: Universal Multi-Octet Coded Character Set).
+10646: Universal Multi-Octet Coded Character Set), and CHAR is first
+translated through the char-table `ucs-mule-to-mule-unicode'.
 
 CHAR should be in one of these charsets:
   ascii, latin-iso8859-1, mule-unicode-0100-24ff, mule-unicode-2500-33ff,
@@ -344,8 +350,13 @@ Otherwise, return nil.
 Optional argument RESTRICTION specifies a way to map CHAR to a
 code-point in CCS.  Currently not supported and just ignored."
   (let* ((split (split-char char))
-        (charset (car split)))
+        (charset (car split))
+        trans)
     (cond ((eq ccs 'ucs)
+          (setq trans (aref ucs-mule-to-mule-unicode char))
+          (if trans
+              (setq split (split-char trans)
+                    charset (car split)))
           (cond ((eq charset 'ascii)
                  char)
                 ((eq charset 'latin-iso8859-1)