changeset 26883:c1e6932eea92

(ps-plot-region): Handle new composition.
author Kenichi Handa <handa@m17n.org>
date Wed, 15 Dec 1999 00:38:58 +0000
parents 5b331ff3b477
children 8063bfbd8b08
files lisp/ps-print.el
diffstat 1 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ps-print.el	Wed Dec 15 00:34:01 1999 +0000
+++ b/lisp/ps-print.el	Wed Dec 15 00:38:58 1999 +0000
@@ -4709,7 +4709,16 @@
       (if (re-search-forward ps-control-or-escape-regexp to t)
 	  ;; region with some control characters or some multi-byte characters
 	  (let* ((match-point (match-beginning 0))
-		 (match (char-after match-point)))
+		 (match (char-after match-point))
+		 (composition (find-composition from (1+ match-point))))
+	    (if composition
+		(if (and (nth 2 composition)
+			 (<= (car composition) match-point))
+		    (progn
+		      (setq match-point (car composition)
+			    match 0)
+		      (goto-char (nth 1 composition)))
+		  (setq composition nil)))
 	    (when (< from match-point)
 	      (ps-mule-set-ascii-font)
 	      (ps-plot 'ps-basic-plot-string from match-point bg-color))
@@ -4734,13 +4743,19 @@
 		       (= ps-height-remaining ps-print-height))
 		  (ps-next-page)))
 
+	     (composition		; a composite sequence
+	      (ps-plot 'ps-mule-plot-composition match-point (point) bg-color))
+
+					; characters from ^@ to ^_ and
 	     ((> match 255)		; a multi-byte character
-	      (let ((charset (char-charset match)))
+	      (let* ((charset (char-charset match))
+		     (composition (find-composition match-point to))
+		     (stop (if (nth 2 composition) (car composition) to)))
 		(or (eq charset 'composition)
-		    (while (eq (charset-after) charset)
+		    (while (and (< (point) stop) (eq (charset-after) charset))
 		      (forward-char 1)))
 		(ps-plot 'ps-mule-plot-string match-point (point) bg-color)))
-					; characters from ^@ to ^_ and
+
 	     (t				; characters from 127 to 255
 	      (ps-control-character match)))
 	    (setq from (point)))