(while (< i 215)
(aset v i (int-char (+ #x2EFF i)))
(setq i (1+ i)))
- (if (< (charset-iso-final-char (car (split-char (aref v 34)))) ?0)
- (aset v 34 (make-char 'chinese-gb2312 #x62 #x3A)))
+ (unless (charset-iso-final-char (car (split-char (aref v 34))))
+ (aset v 34 (make-char 'chinese-gb2312 #x62 #x3A)))
v))
+;;;###autoload
+(defun char-ref-p (obj)
+ (and (consp obj)
+ (keywordp (car obj))))
+
+;;;###autoload
+(defun char-ref= (cr1 cr2)
+ (cond ((char-ref-p cr1)
+ (if (char-ref-p cr2)
+ (char-spec= (plist-get cr1 :char)
+ (plist-get cr2 :char))
+ (char-spec= (plist-get cr1 :char) cr2)))
+ (t
+ (char-spec= cr1
+ (if (char-ref-p cr2)
+ (plist-get cr2 :char)
+ cr2)))))
+
+;;;###autoload
+(defun char-spec= (cs1 cs2)
+ (if (characterp cs1)
+ (if (characterp cs2)
+ (eq cs1 cs2)
+ (eq cs1 (find-char cs2)))
+ (if (characterp cs2)
+ (eq (find-char cs1) cs2)
+ (eq (find-char cs1) (find-char cs2)))))
+
(defun char-attribute-name< (ka kb)
(cond
((find-charset ka)
((= (charset-dimension ka)
(charset-dimension kb))
(cond ((= (charset-chars ka)(charset-chars kb))
- (cond
- ((>= (charset-iso-final-char ka) ?@)
- (if (>= (charset-iso-final-char kb) ?@)
- (< (charset-iso-final-char ka)
- (charset-iso-final-char kb))
- t))
- ((>= (charset-iso-final-char ka) ?0)
- (cond
- ((>= (charset-iso-final-char kb) ?@)
- nil)
- ((>= (charset-iso-final-char kb) ?0)
- (< (charset-iso-final-char ka)
- (charset-iso-final-char kb)))
- (t)))
- (t (if (>= (charset-iso-final-char kb) ?0)
- nil
- (> (charset-id ka)(charset-id kb))))))
+ (if (charset-iso-final-char ka)
+ (cond
+ ((>= (charset-iso-final-char ka) ?@)
+ (if (and (charset-iso-final-char kb)
+ (>= (charset-iso-final-char kb) ?@))
+ (< (charset-iso-final-char ka)
+ (charset-iso-final-char kb))
+ t))
+ (t
+ (if (charset-iso-final-char kb)
+ (if (>= (charset-iso-final-char kb) ?@)
+ nil
+ (< (charset-iso-final-char ka)
+ (charset-iso-final-char kb)))
+ t)))
+ (if (charset-iso-final-char kb)
+ nil
+ (> (charset-id ka)(charset-id kb)))))
((<= (charset-chars ka)(charset-chars kb)))))
(t
(< (charset-dimension ka)
nil)))
(defvar char-db-coded-charset-priority-list
- (sort (copy-list default-coded-charset-priority-list)
- #'char-attribute-name<))
+ (let ((rest default-coded-charset-priority-list)
+ dest)
+ (while rest
+ (when (symbolp (car rest))
+ (cond ((memq (car rest)
+ '(latin-viscii-lower
+ latin-viscii-upper
+ ipa
+ lao
+ ethiopic
+ arabic-digit
+ arabic-1-column
+ arabic-2-column)))
+ ((string-match "^mojikyo-pj-" (symbol-name (car rest))))
+ ((string-match "^ideograph-gt-pj-" (symbol-name (car rest)))
+ (unless (memq 'ideograph-gt dest)
+ (setq dest (cons 'ideograph-gt dest))))
+ (t
+ (setq dest (cons (car rest) dest)))))
+ (setq rest (cdr rest)))
+ (sort dest #'char-attribute-name<)))
(defun char-db-insert-char-spec (char &optional readable column)
(unless column
(split-char char)))
(setq char-spec (list ret))
(dolist (ccs (delq (car ret) (charset-list)))
- (if (or (and (>= (charset-iso-final-char ccs) ?0)
+ (if (or (and (charset-iso-final-char ccs)
(setq ret (get-char-attribute char ccs)))
(eq ccs 'ideograph-daikanwa))
(setq char-spec (cons (cons ccs ret) char-spec))))
+ (if (null char-spec)
+ (setq char-spec (split-char char)))
(if (setq ret (get-char-attribute char 'name))
(setq char-spec (cons (cons 'name ret) char-spec)))
)))
(defun insert-char-attributes (char &optional readable
attributes ccs-attributes
column)
- (setq attributes
- (sort (if attributes
- (if (consp attributes)
- (copy-sequence attributes))
- (char-attribute-list))
- #'char-attribute-name<))
- (setq ccs-attributes
- (sort (if ccs-attributes
- (copy-sequence ccs-attributes)
- (charset-list))
- #'char-attribute-name<))
+ (let (atr-d ccs-d)
+ (setq attributes
+ (sort (if attributes
+ (if (consp attributes)
+ (copy-sequence attributes))
+ (dolist (name (char-attribute-list))
+ (if (find-charset name)
+ (push name ccs-d)
+ (push name atr-d)))
+ atr-d)
+ #'char-attribute-name<))
+ (setq ccs-attributes
+ (sort (if ccs-attributes
+ (copy-sequence ccs-attributes)
+ (or ccs-d
+ (charset-list)))
+ #'char-attribute-name<)))
(unless column
(setq column (current-column)))
(let (name value has-long-ccs-name rest
line-breaking))
(setq attributes (delq '=>ucs attributes))
)
+ (when (and (memq '=>ucs* attributes)
+ (setq value (get-char-attribute char '=>ucs*)))
+ (insert (format "(=>ucs*\t\t. #x%04X)\t; %c%s"
+ value (decode-char 'ucs value)
+ line-breaking))
+ (setq attributes (delq '=>ucs* attributes))
+ )
+ (when (and (memq '=>ucs-jis attributes)
+ (setq value (get-char-attribute char '=>ucs-jis)))
+ (insert (format "(=>ucs-jis\t\t. #x%04X)\t; %c%s"
+ value (decode-char 'ucs value)
+ line-breaking))
+ (setq attributes (delq '=>ucs-jis attributes))
+ )
(when (and (memq '->ucs attributes)
(setq value (get-char-attribute char '->ucs)))
(insert (format (if char-db-convert-obsolete-format
(setq value (get-char-attribute char name)))
(insert
(format
- (cond ((memq name '(ideograph-daikanwa ideograph-gt
- ideograph-cbeta))
+ (cond ((memq name '(ideograph-daikanwa-2
+ ideograph-daikanwa
+ ideograph-gt
+ ideograph-cbeta))
(if has-long-ccs-name
"(%-26s . %05d)\t; %c%s"
"(%-18s . %05d)\t; %c%s"))
(condition-case err
(progn
(insert-char-data-with-variant char 'printable)
+ (unless (char-attribute-alist char)
+ (insert (format ";; = %c\n"
+ (let* ((rest (split-char char))
+ (ccs (pop rest))
+ (code (pop rest)))
+ (while rest
+ (setq code (logior (lsh code 8)
+ (pop rest))))
+ (decode-char ccs code)))))
;; (char-db-update-comment)
(set-buffer-modified-p nil)
(view-mode the-buf (lambda (buf)