Mercurial > emacs
diff lisp/language/tibet-util.el @ 29363:1ebd8db9c3dc
(tibetan-add-components): Fixes for new
encoding of Tibetan characters.
(tibetan-decompose-precomposition-alist): New variable.
(tibetan-decompose-region): Convert precomposed characters to
non-precomposed characters.
(tibetan-decompose-string): Likewise.
(tibetan-composition-function): Fix args to
thibetan-compose-string.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 01 Jun 2000 10:59:56 +0000 |
parents | 60eb71a9f901 |
children | c3845ffcb423 |
line wrap: on
line diff
--- a/lisp/language/tibet-util.el Thu Jun 01 10:59:27 2000 +0000 +++ b/lisp/language/tibet-util.el Thu Jun 01 10:59:56 2000 +0000 @@ -118,7 +118,7 @@ ;;; ;;; Here are examples of the words "bsgrubs" and "h'uM" ;;; -;;; 4$(7"70"714%qx!"U0"G###C"U14"70"714"G0"G1(B 4$(7"Hx!#Ax!"Ur'"_0"H"A"U"_1(B +;;; 4$(7"70"714%qx!"U0"G###C"U14"70"714"G0"G1(B 4$(7"Hx!"Rx!"Ur'"_0"H"A"U"_1(B ;;; ;;; M ;;; b s b s h @@ -144,7 +144,7 @@ ;; If 'a follows a consonant, turn it into the subjoined form. (if (and (= char ?$(7"A(B) (aref (char-category-set (car last)) ?0)) - (setq char ?$(7#A(B)) + (setq char ?$(7"R(B)) ;; modified for new font by Tomabechi 1999/12/10 (cond ;; Compose upper vowel sign vertically over. @@ -153,27 +153,30 @@ ;; Compose lower vowel sign vertically under. ((aref (char-category-set char) ?3) - (setq rule stack-under)) + (if (eq char ?$(7"Q(B) ;; `$(7"Q(B' should not visible when composed. + (setq rule nil) + (setq rule stack-under))) ;; Transform ra-mgo (superscribed r) if followed by a subjoined ;; consonant other than w, ', y, r. ((and (= (car last) ?$(7"C(B) - (not (memq char '(?$(7#>(B ?$(7#A(B ?$(7#B(B ?$(7#C(B)))) - (setcar last ?$(7#P(B) + (not (memq char '(?$(7#>(B ?$(7"R(B ?$(7#B(B ?$(7#C(B)))) + (setcar last ?$(7!"(B) ;; modified for newfont by Tomabechi 1999/12/10 (setq rule stack-under)) ;; Transform initial base consonant if followed by a subjoined ;; consonant but 'a. (t (let ((laststr (char-to-string (car last)))) - (if (and (/= char ?$(7#A(B) - (string-match "[$(7"!(B-$(7"="?"@"D(B-$(7"J(B]" laststr)) + (if (and (/= char ?$(7"R(B) ;; modified for new font by Tomabechi + (string-match "[$(7"!(B-$(7"="?"@"D(B-$(7"J"K(B]" laststr)) (setcar last (string-to-char (cdr (assoc (char-to-string (car last)) tibetan-base-to-subjoined-alist))))) (setq rule stack-under)))) - (setcdr last (list rule char)))) + (if rule + (setcdr last (list rule char))))) ;;;###autoload (defun tibetan-compose-string (str) @@ -231,10 +234,45 @@ (forward-char 1)) (compose-region from to components))))))) +(defvar tibetan-decompose-precomposition-alist + (mapcar (function (lambda (x) (cons (string-to-char (cdr x)) (car x)))) + tibetan-precomposition-rule-alist)) + ;;;###autoload -(defalias 'tibetan-decompose-region 'decompose-region) +(defun tibetan-decompose-region (from to) + "Decompose Tibetan text in the region FROM and TO. +This is different from decompose-region because precomposed Tibetan characters +are decomposed into normal Tiebtan character sequences." + (interactive "r") + (save-restriction + (narrow-to-region from to) + (decompose-region from to) + (goto-char from) + (while (not (eobp)) + (let* ((char (following-char)) + (slot (assq char tibetan-decompose-precomposition-alist))) + (if slot + (progn + (delete-char 1) + (insert (cdr slot))) + (forward-char 1)))))) + + ;;;###autoload -(defalias 'tibetan-decompose-string 'decompose-string) +(defun tibetan-decompose-string (str) + "Decompose Tibetan string STR. +This is different from decompose-string because precomposed Tibetan characters +are decomposed into normal Tiebtan character sequences." + (let ((new "") + (len (length str)) + (idx 0) + char slot) + (while (< idx len) + (setq char (aref str idx) + slot (assq (aref str idx) tibetan-decompose-precomposition-alist) + new (concat new (if slot (cdr slot) (char-to-string char))) + idx (1+ idx))) + new)) ;;;###autoload (defun tibetan-composition-function (from to pattern &optional string)