X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Futf-2000%2Fchar-db-util.el;h=c4e288fa281d7c7a59356c497776e63716b12fbb;hb=9b9ab823536976a4cbf895153f61838b8ba01441;hp=f2397d4d49147a6dc7f2cd6d9da3b9869827e551;hpb=a5812bf2ff9a9cf40f4ff78dcb83f5b4c295bd18;p=chise%2Fxemacs-chise.git diff --git a/lisp/utf-2000/char-db-util.el b/lisp/utf-2000/char-db-util.el index f2397d4..c4e288f 100644 --- a/lisp/utf-2000/char-db-util.el +++ b/lisp/utf-2000/char-db-util.el @@ -69,6 +69,9 @@ (setq i (1+ i))) v)) +(defvar char-db-feature-domains + '(ucs daikanwa cns gt)) + (defvar char-db-ignored-attributes nil) (defun char-attribute-name< (ka kb) @@ -141,19 +144,17 @@ chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7 + =jis-x0208-1990 =jis-x0213-1-2000 =jis-x0213-2-2000 korean-ksc5601 chinese-isoir165 katakana-jisx0201 hebrew-iso8859-8 - =jis-x0208-1990 chinese-gb12345 latin-viscii ethiopic-ucs =gt - =big5-cdp - =gt-k ideograph-daikanwa-2 ideograph-daikanwa =cbeta @@ -169,10 +170,11 @@ ideograph-hanziku-10 ideograph-hanziku-11 ideograph-hanziku-12 - =cbeta - =jef-china3 + =big5 =big5-eten - =big5)) + =big5-cdp + =gt-k + =jef-china3)) (defun char-db-make-char-spec (char) (let (ret char-spec) @@ -189,20 +191,25 @@ ) ((setq ret (catch 'tag - (let ((rest char-db-coded-charset-priority-list)) + (let ((rest char-db-coded-charset-priority-list) + ccs) (while rest + (setq ccs (charset-name + (find-charset (car rest)))) (if (setq ret - (get-char-attribute char (car rest))) - (throw 'tag (cons (car rest) ret))) + (encode-char char ccs + 'defined-only)) + (throw 'tag (cons ccs ret))) (setq rest (cdr rest)))))) (setq char-spec (list ret)) (dolist (ccs (delq (car ret) (charset-list))) (if (and (or (charset-iso-final-char ccs) (memq ccs '(ideograph-daikanwa + =daikanwa-rev2 ;; =gt-k ))) - (setq ret (get-char-attribute char ccs))) + (setq ret (encode-char char ccs 'defined-only))) (setq char-spec (cons (cons ccs ret) char-spec)))) (if (null char-spec) (setq char-spec (split-char char))) @@ -238,7 +245,7 @@ (setq key (car (car char-spec))) (unless (memq key char-db-ignored-attributes) (if (find-charset key) - (if (get-char-attribute char key) + (if (encode-char char key 'defined-only) (setq cal (cons key cal))) (setq al (cons key al)))) (setq char-spec (cdr char-spec))) @@ -392,7 +399,7 @@ =gt-pj-10 =gt-pj-11)) (setq ret (decode-char ccs code-point)) - (setq ret (get-char-attribute ret '=gt))) + (setq ret (encode-char ret '=gt 'defined-only))) (decode-builtin-char '=gt ret)) (t (decode-builtin-char ccs code-point)))) @@ -446,7 +453,8 @@ (line-breaking (concat "\n" (make-string (1+ column) ?\ ))) lbs cell separator ret - key al cal) + key al cal + dest-ccss) (insert "(") (when (and (memq 'name attributes) (setq value (get-char-attribute char 'name))) @@ -474,55 +482,41 @@ line-breaking)) (setq attributes (delq 'script 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* 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-gb attributes) - (setq value (get-char-attribute char '=>ucs-gb))) - (insert (format "(=>ucs-gb\t\t. #x%04X)\t; %c%s" - value (decode-char '=ucs value) - line-breaking)) - (setq attributes (delq '=>ucs-gb attributes)) - ) - (when (and (memq '=>ucs-cns attributes) - (setq value (get-char-attribute char '=>ucs-cns))) - (insert (format "(=>ucs-cns\t\t. #x%04X)\t; %c%s" - value (decode-char 'ucs-cns value) - line-breaking)) - (setq attributes (delq '=>ucs-cns attributes)) - ) - (when (and (memq '=>ucs-big5 attributes) - (setq value (get-char-attribute char '=>ucs-big5))) - (insert (format "(=>ucs-big5\t\t. #x%04X)\t; %c%s" - value (decode-char 'ucs-big5 value) - line-breaking)) - (setq attributes (delq '=>ucs-big5 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-jis value) - line-breaking)) - (setq attributes (delq '=>ucs-jis attributes)) - ) - (when (and (memq '=>ucs-ks attributes) - (setq value (get-char-attribute char '=>ucs-ks))) - (insert (format "(=>ucs-ks\t\t. #x%04X)\t; %c%s" - value (decode-char 'ucs-ks value) - line-breaking)) - (setq attributes (delq '=>ucs-ks attributes)) - ) + (dolist (name '(=>ucs =>ucs*)) + (when (and (memq name attributes) + (setq value (get-char-attribute char name))) + (insert (format "(%-18s . #x%04X)\t; %c%s" + name value (decode-char '=ucs value) + line-breaking)) + (setq attributes (delq name attributes)))) + (dolist (name '(=>ucs@gb =>ucs@cns =>ucs@jis =>ucs@ks =>ucs@big5)) + (when (and (memq name attributes) + (setq value (get-char-attribute char name))) + (insert (format "(%-18s . #x%04X)\t; %c%s" + name value + (decode-char (intern + (concat "=" + (substring + (symbol-name name) 2))) + value) + line-breaking)) + (setq attributes (delq name attributes)) + )) + (dolist (name '(=>ucs-gb =>ucs-cns =>ucs-jis =>ucs-ks =>ucs-big5)) + (when (and (memq name attributes) + (setq value (get-char-attribute char name))) + (insert (format "(%-18s . #x%04X)\t; %c%s" + (intern + (concat "=>ucs@" + (substring (symbol-name name) 6))) + value + (decode-char (intern + (concat "=ucs@" + (substring + (symbol-name name) 6))) + value) + line-breaking)) + (setq attributes (delq name attributes)))) (when (and (memq '->ucs attributes) (setq value (get-char-attribute char '->ucs))) (insert (format (if char-db-convert-obsolete-format @@ -625,6 +619,52 @@ line-breaking)) (setq attributes (delq 'ideographic-radical attributes)) ) + (let (key) + (dolist (domain char-db-feature-domains) + (setq key (intern (format "%s@%s" 'ideographic-radical domain))) + (when (and (memq key attributes) + (setq value (get-char-attribute char key))) + (setq radical value) + (insert (format "(%s . %S)\t; %c%s" + key + radical + (aref ideographic-radicals radical) + line-breaking)) + (setq attributes (delq key attributes)) + ) + (setq key (intern (format "%s@%s" 'ideographic-strokes domain))) + (when (and (memq key attributes) + (setq value (get-char-attribute char key))) + (setq strokes value) + (insert (format "(%s . %S)%s" + key + strokes + line-breaking)) + (setq attributes (delq key attributes)) + ) + (setq key (intern (format "%s@%s" 'total-strokes domain))) + (when (and (memq key attributes) + (setq value (get-char-attribute char key))) + (insert (format "(%s . %S)%s" + key + value + line-breaking)) + (setq attributes (delq key attributes)) + ) + (dolist (feature '(ideographic-radical + ideographic-strokes + total-strokes)) + (setq key (intern (format "%s@%s*sources" feature domain))) + (when (and (memq key attributes) + (setq value (get-char-attribute char key))) + (insert (format "(%s%s" key line-breaking)) + (dolist (cell value) + (insert (format " %s" cell))) + (insert ")") + (insert line-breaking) + (setq attributes (delq key attributes)) + )) + )) (when (and (memq 'ideographic-strokes attributes) (setq value (get-char-attribute char 'ideographic-strokes))) (setq strokes value) @@ -807,8 +847,8 @@ (setq attributes (delq 'hanyu-dazidian-char attributes)) ) (unless readable - (when (memq '->ucs-variants attributes) - (setq attributes (delq '->ucs-variants attributes)) + (when (memq '->ucs-unified attributes) + (setq attributes (delq '->ucs-unified attributes)) ) (when (memq 'composition attributes) (setq attributes (delq 'composition attributes)) @@ -828,7 +868,12 @@ (while attributes (setq name (car attributes)) (if (setq value (get-char-attribute char name)) - (cond ((eq name 'jisx0208-1978/4X) + (cond ((string-match "^=>ucs@" (symbol-name name)) + (insert (format "(%-18s . #x%04X)\t; %c%s" + name value (decode-char '=ucs value) + line-breaking)) + ) + ((eq name 'jisx0208-1978/4X) (insert (format "(%-18s . #x%04X)%s" name value line-breaking))) @@ -946,13 +991,15 @@ )) (setq attributes (cdr attributes))) (while ccs-attributes - (setq name (car ccs-attributes)) - (if (and (eq name (charset-name name)) - (setq value (get-char-attribute char name))) + (setq name (charset-name (car ccs-attributes))) + (if (and (not (memq name dest-ccss)) + (prog1 + (setq value (get-char-attribute char name)) + (setq dest-ccss (cons name dest-ccss)))) (insert (format - (cond ((memq name '(ideograph-daikanwa-2 - ideograph-daikanwa + (cond ((memq name '(=daikanwa + =daikanwa-rev1 =daikanwa-rev2 =gt =gt-k =cbeta)) (if has-long-ccs-name "(%-26s . %05d)\t; %c%s" @@ -1009,7 +1056,7 @@ )) (defun insert-char-data-with-variant (char &optional printable - no-ucs-variant + no-ucs-unified script excluded-script) (insert-char-data char printable) (let ((variants (or (char-variants char) @@ -1026,7 +1073,7 @@ (or (null excluded-script) (null (setq vs (get-char-attribute variant 'script))) (not (memq excluded-script vs)))) - (or (and no-ucs-variant (get-char-attribute variant '=ucs)) + (or (and no-ucs-unified (get-char-attribute variant '=ucs)) (insert-char-data variant printable))) (setq variants (cdr variants)) ))) @@ -1037,7 +1084,7 @@ (while (<= code max) (setq char (decode-char '=ucs code)) (if (encode-char char '=ucs 'defined-only) - (insert-char-data-with-variant char nil 'no-ucs-variant + (insert-char-data-with-variant char nil 'no-ucs-unified script excluded-script)) (setq code (1+ code)))))