[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/lisp composite.el
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] emacs/lisp composite.el |
Date: |
Wed, 04 Feb 2009 02:00:37 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 09/02/04 02:00:37
Modified files:
lisp : composite.el
Log message:
(compose-gstring-for-terminal): If a character is
not supported by the current terminal, don't make a multi-glyph
grapheme cluster.
(auto-compose-chars): Check font-object by fontp.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/composite.el?cvsroot=emacs&r1=1.42&r2=1.43
Patches:
Index: composite.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/composite.el,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- composite.el 10 Jan 2009 21:55:01 -0000 1.42
+++ composite.el 4 Feb 2009 02:00:34 -0000 1.43
@@ -664,28 +664,45 @@
(nchars (lgstring-char-len gstring))
(nglyphs (lgstring-glyph-len gstring))
(i 0)
+ (coding (lgstring-font gstring))
glyph)
(while (and (< i nglyphs)
(setq glyph (lgstring-glyph gstring i)))
+ (if (not (char-charset (lglyph-char glyph) coding))
+ (progn
+ ;; As the terminal doesn't support this glyph, return a
+ ;; gstring in which each glyph is its own graphme-cluster
+ ;; of width 1..
+ (setq i 0)
+ (while (and (< i nglyphs)
+ (setq glyph (lgstring-glyph gstring i)))
+ (if (< (lglyph-width glyph) 1)
+ (lglyph-set-width glyph 1))
+ (lglyph-set-from-to glyph i i)
+ (setq i (1+ i))))
(if (= (lglyph-width glyph) 0)
(progn
;; Compose by prepending a space.
- (setq gstring (lgstring-insert-glyph gstring i (lglyph-copy glyph))
+ (setq gstring (lgstring-insert-glyph gstring i
+ (lglyph-copy glyph))
nglyphs (lgstring-glyph-len gstring))
- (lglyph-set-char (lgstring-glyph gstring i) 32)
+ (setq glyph (lgstring-glyph gstring i))
+ (lglyph-set-char glyph 32)
+ (lglyph-set-width glyph 1)
(setq i (+ 2)))
(let ((from (lglyph-from glyph))
(to (lglyph-to glyph))
(j (1+ i)))
(while (and (< j nglyphs)
(setq glyph (lgstring-glyph gstring j))
+ (char-charset (lglyph-char glyph) coding)
(= (lglyph-width glyph) 0))
(setq to (lglyph-to glyph)
j (1+ j)))
(while (< i j)
(setq glyph (lgstring-glyph gstring i))
(lglyph-set-from-to glyph from to)
- (setq i (1+ i))))))
+ (setq i (1+ i)))))))
gstring))
@@ -709,7 +726,7 @@
(let ((gstring (composition-get-gstring from to font-object string)))
(if (lgstring-shaped-p gstring)
gstring
- (or font-object
+ (or (fontp font-object 'font-object)
(setq func 'compose-gstring-for-terminal))
(funcall func gstring))))
- [Emacs-diffs] emacs/lisp composite.el,
Kenichi Handa <=