"JX1-to-UCS.txt" "JX2-to-UCS.txt"
"K0-to-UCS.txt"
"G0-to-UCS.txt"
- "C2-to-UCS.txt"
+ "C1-to-UCS.txt" "C2-to-UCS.txt"
"C3-to-UCS.txt" "C4-to-UCS.txt"
"C5-to-UCS.txt" "C6-to-UCS.txt"
"C7-to-UCS.txt"
(jp-jouyou-read-file "../etc/char-data/jp-jouyou.txt")
(let ((ucs #xE000)
- big5 chr
- ret)
+ big5 chr)
(while (<= ucs #xF848)
(setq chr (decode-char 'ucs ucs))
(when (setq big5 (get-char-attribute chr '=big5-pua))
(setq ucs (1+ ucs))))
-(setq gt-pj-1-and-jis-x0208-1990-different-code-points
+(defconst gt-pj-1-and-jis-x0208-1990-different-code-points
'(#x5C37 #x5C52 #x3521 #x5D62 #x5F4A
#x5F5B #x6062 #x4849 #x6173 #x306B
#x6328 #x6352 #x6362 #x6471 #x6524
#x5653 #x5652 #x5654 #x5655 #x5659
#x565C #x3474 #x562E #x5630 #x5639
#x3D54 #x5645 #x564E #x5651 #x564C
- #x3460 #x565B #x5628 #x5726))
+ #x3460 #x565B #x5628 #x5726 #x5759
+ #x583E #x5833 #x5843 #x584E #x5860
+ #x585D #x4463 #x4C31 #x5351 #x6243
+ #x587A #x5921 #x4879 #x4530 #x4863
+ #x5932 #x3E35 #x4D5E #x5A2D #x4471
+ #x5939 #x3348 #x3969 #x594D #x3044
+ #x594B #x3027 #x3F36 #x405C #x5964
+ #x5962 #x5953 #x5977 #x3B35 #x4531
+ #x5A26 #x5A2B #x5A2F #x5A36 #x5A37
+ #x5A3B #x5A2C #x5A2A #x5A40 #x5A3F
+ #x5A41 #x327E #x384E #x5A43 #x5A47
+ #x5A45 #x4754 #x343A #x3B36 #x4658
+ #x3749 #x3F74 #x4528 #x4030 #x5A4C
+ #x507B #x507E #x5353 #x5A44 #x6E2B
+ #x5B30 #x4C40 #x376E #x6067 #x4E28
+ #x6425))
(map-char-attribute
(lambda (c v)
(unless (memq v gt-pj-1-and-jis-x0208-1990-different-code-points)
- (put-char-attribute (decode-char 'japanese-jisx0208-1990 v)
+ (put-char-attribute (decode-char '=jis-x0208@1990 v)
'=gt-pj-1 v))
nil)
'=gt-pj-1)
(buffer-disable-undo)
(insert-file-contents "../etc/char-data/JX3-JX1-rep-diff.txt")
(goto-char (point-min))
- (let (ku ten char code ucs)
+ (let (ku ten char code ucs rep-char)
(while (re-search-forward "^1-\\([0-9]+\\)-\\([0-9]+\\)[ \t]+" nil t)
(setq ku (string-to-number (match-string 1))
ten (string-to-number (match-string 2)))
(setq char (make-char '=jis-x0213-1@2000 (+ ku 32)(+ ten 32)))
(setq code (encode-char char '=jis-x0213-1@2000))
- (put-char-attribute char '=jis-x0213-1@2000 code)
- (remove-char-attribute char '=jis-x0213-1)
- (remove-char-attribute char '=jis-x0213-1@2004)
(setq ucs (encode-char char '=ucs@jis/2000))
- (remove-char-attribute char '=ucs@jis)
- (remove-char-attribute char '=ucs@jis/2004)
- (when (setq char (decode-char '=jis-x0213-1@2004 code))
- (unless (eq (encode-char char '=ucs@jis/2004) ucs)
- (put-char-attribute char '=ucs@jis/2004 ucs)))
+ (setq rep-char (decode-char '==jis-x0213-1@2000 code))
+ (cond
+ ((or (eq char rep-char)
+ (null rep-char))
+ (put-char-attribute char '=jis-x0213-1@2000 code)
+ (remove-char-attribute char '=jis-x0213-1)
+ (remove-char-attribute char '=jis-x0213-1@2004)
+ (remove-char-attribute char '=ucs@jis)
+ (remove-char-attribute char '=ucs@jis/2004)
+ (when (setq char (decode-char '=jis-x0213-1@2004 code))
+ (unless (eq (encode-char char '=ucs@jis/2004) ucs)
+ (put-char-attribute char '=ucs@jis/2004 ucs)))
+ )
+ (rep-char
+ (unless (and (= ku 47)(= ten 64))
+ (put-char-attribute rep-char '==jis-x0213-1@2000 code)
+ (remove-char-attribute rep-char '==jis-x0213-1)
+ (remove-char-attribute rep-char '==jis-x0213-1@2004)
+ (setq ucs (or (encode-char rep-char '==ucs@jis/2000)
+ ucs))
+ (remove-char-attribute rep-char '==ucs@jis)
+ (remove-char-attribute rep-char '==ucs@jis/2004))
+ (when (setq rep-char (decode-char '==jis-x0213-1@2004 code))
+ (unless (eq (encode-char rep-char '==ucs@jis/2004) ucs)
+ (put-char-attribute rep-char '==ucs@jis/2004 ucs)))
+ ))
(unless (eq code #x332A)
(when (setq char (decode-char '=>jis-x0208@1997 code 'defined-only))
(unless (eq (encode-char char '=>>jis-x0208) code)
nil)
'=>jis-x0208)
-(dolist (aj1-f '(=>>>adobe-japan1 =>>adobe-japan1))
+(let (dg-chr)
(map-char-attribute
(lambda (c v)
- (cond
- ((<= v 8283)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-0" aj1-f)) v)
- )
- ((<= v 8358)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-1" aj1-f)) v)
- )
- ((<= v 8719)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-2" aj1-f)) v)
- )
- ((<= v 9353)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-3" aj1-f)) v)
- )
- ((<= v 15443)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-4" aj1-f)) v)
- )
- ((<= v 20316)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-5" aj1-f)) v)
- )
- ((<= v 23057)
- (remove-char-attribute c aj1-f)
- (put-char-attribute c (intern (format "%s-6" aj1-f)) v)
- ))
+ (when (setq dg-chr (decode-char '===jis-x0212 v))
+ (unless (eq c dg-chr)
+ (put-char-attribute dg-chr '===hanyo-denshi/jb v)))
nil)
- aj1-f))
+ '==hanyo-denshi/jb)
+ (map-char-attribute
+ (lambda (c v)
+ (when (setq dg-chr (decode-char '===jis-x0213-1@2000 v))
+ (unless (eq c dg-chr)
+ (put-char-attribute dg-chr '===hanyo-denshi/jc v)))
+ nil)
+ '==hanyo-denshi/jc)
+ (map-char-attribute
+ (lambda (c v)
+ (when (setq dg-chr (decode-char '===jis-x0213-2 v))
+ (unless (eq c dg-chr)
+ (put-char-attribute dg-chr '===hanyo-denshi/jd v)))
+ nil)
+ '==hanyo-denshi/jd)
+ )
+
+(let (j-chr)
+ (map-char-attribute
+ (lambda (c v)
+ (if (and (setq j-chr (decode-char '=ucs@JP v))
+ (not (eq j-chr c))
+ (null (encode-char c '=ucs)))
+ (put-char-attribute c '=ucs@JP/hanazono nil))
+ nil)
+ '=ucs@unicode)
+ (map-char-attribute
+ (lambda (c v)
+ (if (and (setq j-chr (decode-char '==ucs@JP v))
+ (not (eq j-chr c)))
+ (put-char-attribute c '==ucs@JP/hanazono nil))
+ nil)
+ '==ucs@unicode)
+ )
+
+(defun glyph-form-feature-to-glyph-image-char-spec (dg-fn
+ code-point
+ &optional
+ rep-gi-fn dg-char)
+ (unless rep-gi-fn
+ (setq rep-gi-fn (intern (format "=%s" dg-fn))))
+ (unless dg-char
+ (setq dg-char (decode-char dg-fn code-point)))
+ (let (code)
+ (when (find-charset rep-gi-fn)
+ (cons (cons rep-gi-fn code-point)
+ (cond
+ ((eq dg-fn '==gt)
+ (if (setq code (encode-char dg-char '==gt-k))
+ (list (cons '===gt-k code)))
+ )
+ ((eq dg-fn '==hanyo-denshi/jc)
+ (cond ((encode-char dg-char '==jis-x0213-1)
+ (list (cons '===jis-x0213-1 code-point))
+ )
+ ((encode-char dg-char '==jis-x0213-1@2000)
+ (list (cons '===jis-x0213-1@2000 code-point))
+ ))
+ )
+ ((eq dg-fn '==hanyo-denshi/jd)
+ (list (cons '===jis-x0213-2 code-point))
+ )
+ ((eq dg-fn '==jis-x0208)
+ (cond ((encode-char dg-char '==jis-x0213-1)
+ (list (cons '===jis-x0213-1 code-point))
+ )
+ ((encode-char dg-char '==jis-x0213-1@2000)
+ (list (cons '===jis-x0213-1@2000 code-point))
+ ))
+ )
+ ((eq dg-fn '==ks-x1001)
+ (if (setq code (encode-char dg-char '==ucs@ks))
+ (list (cons '===ucs@ks code)))
+ ))))))
+
+(let (dest rep-gi-fn rep-gi spec target-dg-fns)
+ (dolist (fn (char-attribute-list))
+ (when (and (find-charset fn)
+ (string-match "^==[^*=>]+$" (symbol-name fn)))
+ (setq dest (cons fn dest))))
+ (setq dest (sort dest
+ (lambda (a b)
+ (cond ((eq a '==daikanwa)
+ t)
+ ((eq a '==daikanwa/+p)
+ t)
+ ((eq a '==daikanwa/ho)
+ t)
+ ((eq a '==jis-x0208)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho))
+ nil)
+ (t)))
+ ((eq a '==jis-x0208@1978)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208))
+ nil)
+ (t)))
+ ((eq a '==jis-x0208@1983)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208
+ ==jis-x0208@1978))
+ nil)
+ (t)))
+ ((eq a '==jis-x0208@1990)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208
+ ==jis-x0208@1978
+ ==jis-x0208@1983))
+ nil)
+ (t)))
+ ((eq a '==jis-x0212)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208
+ ==jis-x0208@1978
+ ==jis-x0208@1983 ==jis-x0208@1990))
+ nil)
+ (t)))
+ ((eq a '==jis-x0213-1)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208
+ ==jis-x0208@1978
+ ==jis-x0208@1983 ==jis-x0208@1990
+ ==jis-x0212))
+ nil)
+ (t)))
+ ((eq a '==jis-x0213-2)
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208
+ ==jis-x0208@1978
+ ==jis-x0208@1983 ==jis-x0208@1990
+ ==jis-x0212 ==jis-x0213-1))
+ nil)
+ (t)))
+ (t
+ (cond ((memq b '(==daikanwa
+ ==daikanwa/+p ==daikanwa/ho
+ ==jis-x0208
+ ==jis-x0208@1978
+ ==jis-x0208@1983 ==jis-x0208@1990
+ ==jis-x0212
+ ==jis-x0213-1 ==jis-x0213-2))
+ nil)
+ (t
+ (string< (symbol-name a)(symbol-name b)))))))))
+ (dolist (dg-fn dest)
+ (setq rep-gi-fn (intern (format "=%s" dg-fn)))
+ (when (find-charset rep-gi-fn)
+ (map-char-attribute
+ (lambda (c v)
+ (setq rep-gi (decode-char rep-gi-fn v))
+ (unless (or (and (eq dg-fn '==jis-x0208)
+ (eq (get-char-attribute
+ (decode-char '===jis-x0208@1990 v)
+ '===jis-x0208@1990)
+ v))
+ (and (eq dg-fn '==jis-x0213-1)
+ (eq (get-char-attribute
+ (decode-char '===jis-x0213-1@2000 v)
+ '===jis-x0213-1@2000)
+ v))
+ (and rep-gi
+ (not (eq c rep-gi))))
+ (if (get-char-attribute c '->subsumptive)
+ (if (setq rep-gi
+ (define-char
+ (glyph-form-feature-to-glyph-image-char-spec
+ dg-fn v rep-gi-fn c)
+ ;; (list (cons rep-gi-fn v))
+ ))
+ (put-char-attribute rep-gi '<-subsumptive (list c)))
+ (setq spec (char-attribute-alist c))
+ (setq target-dg-fns nil)
+ (dolist (fp spec)
+ (unless (memq (car fp)
+ '(==ks-x1001
+ ==hanyo-denshi/jb
+ ==hanyo-denshi/jc ==hanyo-denshi/jd
+ ==gt-k))
+ (when (find-charset (intern (format "=%s" (car fp))))
+ (setq target-dg-fns (cons (car fp) target-dg-fns)))))
+ (when (cdr target-dg-fns)
+ (setq rep-gi
+ (define-char
+ (glyph-form-feature-to-glyph-image-char-spec
+ dg-fn v rep-gi-fn c)))
+ (if rep-gi
+ (put-char-attribute rep-gi '<-subsumptive (list c))))))
+ nil)
+ dg-fn))))
+
+(let (chr ucs)
+ (map-char-attribute
+ (lambda (c v)
+ (when (and (setq chr (decode-char '=ks-x1001 v))
+ (setq ucs (encode-char chr '=ucs@ks)))
+ (put-char-attribute c '===ucs@ks ucs))
+ nil)
+ '===ks-x1001))