Mercurial > emacs
diff lisp/language/china-util.el @ 88155:d7ddb3e565de
sync with trunk
author | Henrik Enberg <henrik.enberg@telia.com> |
---|---|
date | Mon, 16 Jan 2006 00:03:54 +0000 |
parents | ca6dbe4635da |
children |
line wrap: on
line diff
--- a/lisp/language/china-util.el Sun Jan 15 23:02:10 2006 +0000 +++ b/lisp/language/china-util.el Mon Jan 16 00:03:54 2006 +0000 @@ -1,8 +1,10 @@ ;;; china-util.el --- utilities for Chinese -*- coding: iso-2022-7bit -*- -;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. -;; Licensed to the Free Software Foundation. -;; Copyright (C) 1995, 2001 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001, 2003 +;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1997, 2003 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 ;; Keywords: mule, multilingual, Chinese @@ -20,8 +22,8 @@ ;; 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. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -64,15 +66,16 @@ "Flag to tell if we should care line continuation convention of Hz.") (defconst hz-set-msb-table - (let ((str (make-string 127 0)) - (i 0)) - (while (< i 33) - (aset str i i) - (setq i (1+ i))) - (while (< i 127) - (aset str i (+ i 128)) - (setq i (1+ i))) - str)) + (eval-when-compile + (let ((chars nil) + (i 0)) + (while (< i 33) + (push i chars) + (setq i (1+ i))) + (while (< i 127) + (push (+ i 128) chars) + (setq i (1+ i))) + (apply 'string (nreverse chars))))) ;;;###autoload (defun decode-hz-region (beg end) @@ -171,6 +174,7 @@ ;; Many kudos to Himi! The used code has been adapted from his ;; mule-ucs package. +(eval-when-compile (defun big5-to-flat-code (num) "Convert NUM in Big 5 encoding to a `flat code'. 0xA140 will be mapped to position 0, 0xA141 to position 1, etc. @@ -226,54 +230,43 @@ The return value is the filled translation table." - (let (chartable - elem - result + (let ((chartable (make-char-table 'translation-table #xFF)) char big5 i end codepoint charset) - (setq chartable (make-char-table 'translation-table #xFF)) - (while alist - (setq elem (car alist) - char (car elem) - big5 (cdr elem) - alist (cdr alist)) + (dolist (elem alist) + (setq char (car elem) + big5 (cdr elem)) (cond ((and (consp char) (consp big5)) - (setq i (big5-to-flat-code (car big5)) - end (big5-to-flat-code (cdr big5)) - codepoint (euc-to-flat-code (cdr char)) - charset (car char)) - (while (>= end i) - (aset chartable - (decode-big5-char (flat-code-to-big5 i)) - (apply (function make-char) - charset - (flat-code-to-euc codepoint))) - (setq i (1+ i) - codepoint (1+ codepoint))) - ) + (setq i (big5-to-flat-code (car big5)) + end (big5-to-flat-code (cdr big5)) + codepoint (euc-to-flat-code (cdr char)) + charset (car char)) + (while (>= end i) + (aset chartable + (decode-big5-char (flat-code-to-big5 i)) + (apply (function make-char) + charset + (flat-code-to-euc codepoint))) + (setq i (1+ i) + codepoint (1+ codepoint)))) ((and (char-valid-p char) (numberp big5)) - (setq i (decode-big5-char big5)) - (aset chartable i char) - ) + (setq i (decode-big5-char big5)) + (aset chartable i char)) (t - (error "Unknown slot type: %S" elem) - ) - ) - ) + (error "Unknown slot type: %S" elem)))) ;; the return value - chartable - ) -) + chartable))) ;; All non-CNS encodings are commented out. (define-translation-table 'big5-to-cns + (eval-when-compile (expand-euc-big5-alist '( ;; Symbols @@ -420,10 +413,11 @@ (?$(I=~(B . #xF9DB) (?$(IK\(B . #xF9DC) ) - ) + )) ) ;; (provide 'china-util) +;;; arch-tag: 5a47b084-b9ac-420e-8191-70c5b3a14836 ;;; china-util.el ends here