1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-12 16:23:57 +00:00

(hz-set-msb-table): Build when compiling.

(big5-to-cns): Pre-build the alist when compiling.
This commit is contained in:
Stefan Monnier 2003-05-18 21:02:22 +00:00
parent 462a7ed614
commit 2254377e67

View File

@ -1,6 +1,6 @@
;;; china-util.el --- utilities for Chinese -*- coding: iso-2022-7bit -*-
;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
;; Copyright (C) 1995, 2003 Electrotechnical Laboratory, JAPAN.
;; Licensed to the Free Software Foundation.
;; Copyright (C) 1995, 2001 Free Software Foundation, Inc.
@ -64,15 +64,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 +172,7 @@ Return the length of resulting text."
;; 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 +228,43 @@ mapped will be represented with the byte 0xFF.
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,7 +411,7 @@ The return value is the filled translation table."
(?$(I=~(B . #xF9DB)
(?$(IK\(B . #xF9DC)
)
)
))
)
;;