[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/language/devan-util.el
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/language/devan-util.el |
Date: |
Wed, 17 Sep 2003 02:41:37 -0400 |
Index: emacs/lisp/language/devan-util.el
diff -c emacs/lisp/language/devan-util.el:1.43
emacs/lisp/language/devan-util.el:1.44
*** emacs/lisp/language/devan-util.el:1.43 Mon Sep 1 11:45:29 2003
--- emacs/lisp/language/devan-util.el Wed Sep 17 02:41:36 2003
***************
*** 75,80 ****
--- 75,81 ----
(devanagari-compose-region (point-min) (point-max))
(buffer-string)))
+ ;;;###autoload
(defun devanagari-post-read-conversion (len)
(save-excursion
(save-restriction
***************
*** 564,647 ****
(defun devanagari-compose-syllable-region (from to)
"Compose devanagari syllable in region FROM to TO."
(let ((glyph-str nil) (cons-num 0) glyph-str-list
! (last-halant nil) (preceding-r nil) (last-modifier nil)
! (last-char (char-before to)) match-str
! glyph-block split-pos)
(save-excursion
(save-restriction
! ;;; *** char-to-glyph conversion ***
! ;; Special rule 1. -- Last halant must be preserved.
! (if (eq last-char ?$,16-(B)
! (progn
! (setq last-halant t)
! (narrow-to-region from (1- to)))
! (narrow-to-region from to)
! ;; note if the last char is modifier.
! (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B))
! (setq last-modifier t)))
! (goto-char (point-min))
! ;; Special rule 2. -- preceding "r halant" must be modifier.
! (when (looking-at "$,15p6-(B.")
! (setq preceding-r t)
! (goto-char (+ 2 (point))))
! ;; translate the rest characters into glyphs
! (while (re-search-forward dev-char-glyph-regexp nil t)
! (setq match-str (match-string 0))
! (setq glyph-str
! (concat glyph-str
! (gethash match-str dev-char-glyph-hash)))
! ;; count the number of consonant-glyhs.
! (if (string-match devanagari-consonant match-str)
! (setq cons-num (1+ cons-num))))
! ;; preceding-r must be attached before the anuswar if exists.
! (if preceding-r
! (if last-modifier
! (setq glyph-str (concat (substring glyph-str 0 -1)
! "$,4"'(B" (substring glyph-str -1)))
! (setq glyph-str (concat glyph-str "$,4"'(B"))))
! (if last-halant (setq glyph-str (concat glyph-str "$,4""(B")))
! ;;; *** glyph-to-glyph conversion ***
! (when (string-match dev-glyph-glyph-regexp glyph-str)
! (setq glyph-str
! (replace-match (gethash (match-string 0 glyph-str)
! dev-glyph-glyph-hash)
! nil t glyph-str))
! (if (and (> cons-num 1)
! (string-match dev-glyph-glyph-2-regexp glyph-str))
! (setq glyph-str
! (replace-match (gethash (match-string 0 glyph-str)
! dev-glyph-glyph-2-hash)
! nil t glyph-str))))
! ;;; *** glyph reordering ***
! (while (setq split-pos (string-match "$,4""(B\\|.$" glyph-str))
! (setq glyph-block (substring glyph-str 0 (1+ split-pos)))
! (setq glyph-str (substring glyph-str (1+ split-pos)))
! (setq
! glyph-block
! (if (string-match dev-glyph-right-modifier-regexp glyph-block)
! (sort (string-to-list glyph-block)
! (function (lambda (x y)
! (< (get-char-code-property x 'composition-order)
! (get-char-code-property y 'composition-order)))))
! (sort (string-to-list glyph-block)
! (function (lambda (x y)
! (let ((xo (get-char-code-property x 'composition-order))
! (yo (get-char-code-property y
'composition-order)))
! (if (= xo 2) nil (if (= yo 2) t (< xo yo)))))))))
! (setq glyph-str-list (nconc glyph-str-list glyph-block)))
! ;; concatenate and attach reference-points.
! (setq glyph-str
! (cdr
! (apply
! 'nconc
! (mapcar
! (function (lambda (x)
! (list
! (or (get-char-code-property x 'reference-point)
! '(5 . 3) ;; default reference point.
! )
! x)))
! glyph-str-list))))))
(compose-region from to glyph-str)))
(provide 'devan-util)
--- 565,648 ----
(defun devanagari-compose-syllable-region (from to)
"Compose devanagari syllable in region FROM to TO."
(let ((glyph-str nil) (cons-num 0) glyph-str-list
! (last-halant nil) (preceding-r nil) (last-modifier nil)
! (last-char (char-before to)) match-str
! glyph-block split-pos)
(save-excursion
(save-restriction
! ;;; *** char-to-glyph conversion ***
! ;; Special rule 1. -- Last halant must be preserved.
! (if (eq last-char ?$,16-(B)
! (progn
! (setq last-halant t)
! (narrow-to-region from (1- to)))
! (narrow-to-region from to)
! ;; note if the last char is modifier.
! (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B))
! (setq last-modifier t)))
! (goto-char (point-min))
! ;; Special rule 2. -- preceding "r halant" must be modifier.
! (when (looking-at "$,15p6-(B.")
! (setq preceding-r t)
! (goto-char (+ 2 (point))))
! ;; translate the rest characters into glyphs
! (while (re-search-forward dev-char-glyph-regexp nil t)
! (setq match-str (match-string 0))
! (setq glyph-str
! (concat glyph-str
! (gethash match-str dev-char-glyph-hash)))
! ;; count the number of consonant-glyhs.
! (if (string-match devanagari-consonant match-str)
! (setq cons-num (1+ cons-num))))
! ;; preceding-r must be attached before the anuswar if exists.
! (if preceding-r
! (if last-modifier
! (setq glyph-str (concat (substring glyph-str 0 -1)
! "$,4"'(B" (substring glyph-str -1)))
! (setq glyph-str (concat glyph-str "$,4"'(B"))))
! (if last-halant (setq glyph-str (concat glyph-str "$,4""(B")))
! ;;; *** glyph-to-glyph conversion ***
! (when (string-match dev-glyph-glyph-regexp glyph-str)
! (setq glyph-str
! (replace-match (gethash (match-string 0 glyph-str)
! dev-glyph-glyph-hash)
! nil t glyph-str))
! (if (and (> cons-num 1)
! (string-match dev-glyph-glyph-2-regexp glyph-str))
! (setq glyph-str
! (replace-match (gethash (match-string 0 glyph-str)
! dev-glyph-glyph-2-hash)
! nil t glyph-str))))
! ;;; *** glyph reordering ***
! (while (setq split-pos (string-match "$,4""(B\\|.$" glyph-str))
! (setq glyph-block (substring glyph-str 0 (1+ split-pos)))
! (setq glyph-str (substring glyph-str (1+ split-pos)))
! (setq
! glyph-block
! (if (string-match dev-glyph-right-modifier-regexp glyph-block)
! (sort (string-to-list glyph-block)
! (function (lambda (x y)
! (< (get-char-code-property x 'composition-order)
! (get-char-code-property y 'composition-order)))))
! (sort (string-to-list glyph-block)
! (function (lambda (x y)
! (let ((xo (get-char-code-property x 'composition-order))
! (yo (get-char-code-property y 'composition-order)))
! (if (= xo 2) nil (if (= yo 2) t (< xo yo)))))))))
! (setq glyph-str-list (nconc glyph-str-list glyph-block)))
! ;; concatenate and attach reference-points.
! (setq glyph-str
! (cdr
! (apply
! 'nconc
! (mapcar
! (function (lambda (x)
! (list
! (or (get-char-code-property x 'reference-point)
! '(5 . 3) ;; default reference point.
! )
! x)))
! glyph-str-list))))))
(compose-region from to glyph-str)))
(provide 'devan-util)