X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ids-read.el;h=ecc92ff986626c6ef9d0bd900efc0efa312b84ae;hb=61187907c30d7c3d8f1ef13a932f3548b55636ae;hp=6322c091ee932c1aadd45748096b8279cac2a707;hpb=986a094871ed673503a088f2ecb7b5125b9becfb;p=chise%2Fids.git diff --git a/ids-read.el b/ids-read.el index 6322c09..ecc92ff 100644 --- a/ids-read.el +++ b/ids-read.el @@ -1,6 +1,6 @@ ;;; ids-read.el --- Reader for IDS-* files -;; Copyright (C) 2002 MORIOKA Tomohiko +;; Copyright (C) 2002,2003 MORIOKA Tomohiko ;; Author: MORIOKA Tomohiko ;; Keywords: IDS, IDC, Ideographs, UCS, Unicode @@ -27,12 +27,12 @@ (require 'ids) ;;;###autoload -(defun ids-read-buffer (buffer &optional simplify) +(defun ids-read-buffer (buffer &optional simplify soft) (interactive "bBuffer = \nP") (save-excursion (set-buffer buffer) (goto-char (point-min)) - (let (line chs ids char structure) + (let (line chs ids code char structure) (while (not (eobp)) (unless (looking-at ";") (setq line @@ -46,14 +46,59 @@ ((string-match "U[-+]\\([0-9A-F]+\\)" chs) (decode-char 'ucs (string-to-int (match-string 1 chs) 16))) - ((string-match "M-\\([0-9]+\\)\\([^'\"]\\|$\\)" chs) + ((string-match "J90-\\([0-9A-F][0-9A-F][0-9A-F][0-9A-F]\\)" + chs) + (decode-char 'japanese-jisx0208-1990 + (string-to-int (match-string 1 chs) 16))) + ((string-match "CDP-\\([0-9A-F][0-9A-F][0-9A-F][0-9A-F]\\)" + chs) + (decode-char '=big5-cdp + (string-to-int (match-string 1 chs) 16))) + ((string-match + "HZK\\([0-9][0-9]\\)-\\([0-9A-F][0-9A-F][0-9A-F][0-9A-F]\\)" + chs) + (decode-char (intern + (format "=hanziku-%d" + (string-to-int (match-string 1)))) + (string-to-int (match-string 2 chs) 16))) + ((string-match "M-\\([0-9]+\\)'" chs) + (setq code (string-to-int (match-string 1 chs))) + (map-char-attribute + (lambda (key val) + (if (and (eq (car val) code) + (eq (nth 1 val) 1) + (null (nthcdr 2 val))) + key)) + 'morohashi-daikanwa)) + ((string-match "M-\\([0-9]+\\)\"" chs) + (setq code (string-to-int (match-string 1 chs))) + (map-char-attribute + (lambda (key val) + (if (and (eq (car val) code) + (eq (nth 1 val) 2) + (null (nthcdr 2 val))) + key)) + 'morohashi-daikanwa)) + ((string-match "M-\\([0-9]+\\)" chs) (decode-char 'ideograph-daikanwa (string-to-int (match-string 1 chs)))) + ((string-match "MH-\\([0-9]+\\)" chs) + (setq code (string-to-int (match-string 1 chs))) + (map-char-attribute + (lambda (key val) + (if (and (eq (car val) 'ho) + (eq (nth 1 val) code) + (null (nthcdr 2 val))) + key)) + 'morohashi-daikanwa)) ((string-match "CB\\([0-9]+\\)" chs) (decode-char 'ideograph-cbeta (string-to-int (match-string 1 chs)))) )) (when (and char + (or (not soft) + (null + (get-char-attribute char 'ideographic-structure))) (>= (length ids) 3) (not (string-match "\\?" ids)) (consp (setq structure (ids-parse-string ids simplify)))) @@ -65,11 +110,11 @@ )))) ;;;###autoload -(defun ids-read-file (file &optional simplify) +(defun ids-read-file (file &optional simplify soft) (interactive "fIDS file = \nP") (with-temp-buffer (insert-file-contents file) - (ids-read-buffer (current-buffer) simplify))) + (ids-read-buffer (current-buffer) simplify soft))) ;;; @ End.