Mercurial > emacs
changeset 108762:d3db77511b9e
Add Hebrew shaper.
author | Kenichi Handa <handa@etlken> |
---|---|
date | Tue, 25 May 2010 10:25:08 +0900 |
parents | 271da7ed4e2e |
children | 9ad1ee311b5e 3eac08e0e4ee |
files | lisp/ChangeLog lisp/language/hebrew.el |
diffstat | 2 files changed, 35 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue May 25 10:03:44 2010 +0900 +++ b/lisp/ChangeLog Tue May 25 10:25:08 2010 +0900 @@ -1,3 +1,9 @@ +2010-05-25 Kenichi Handa <handa@m17n.org> + + * language/hebrew.el (hebrew-shape-gstring): New function. + Register it in composition-function-table for all Hebrew combining + characters. + 2010-05-24 Uday S Reddy <u.s.reddy@cs.bham.ac.uk> (tiny change) * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
--- a/lisp/language/hebrew.el Tue May 25 10:03:44 2010 +0900 +++ b/lisp/language/hebrew.el Tue May 25 10:25:08 2010 +0900 @@ -85,6 +85,35 @@ :mime-charset 'cp862) (define-coding-system-alias 'ibm862 'cp862) +;; Composition function for hebrew. +(defun hebrew-shape-gstring (gstring) + (setq gstring (font-shape-gstring gstring)) + (let ((header (lgstring-header gstring)) + (nchars (lgstring-char-len gstring)) + (nglyphs (lgstring-glyph-len gstring)) + (base-width (lglyph-width (lgstring-glyph gstring 0)))) + (while (> nglyphs 1) + (setq nglyphs (1- nglyphs)) + (let* ((glyph (lgstring-glyph gstring nglyphs)) + (adjust (and glyph (lglyph-adjustment glyph)))) + (if adjust + (setq nglyphs 0) + (if (>= (lglyph-lbearing glyph) 0) + (lglyph-set-adjustment glyph (- base-width) 0 0)))))) + gstring) + +(let ((pattern1 "[\u05D0-\u05F2][\u0591-\u05BF\u05C1-\u05C5\u05C7]+") + (pattern2 "[\u05D0-\u05F2]\u200D[\u0591-\u05BF\u05C1-\u05C5\u05C7]+")) + (set-char-table-range + composition-function-table '(#x591 . #x5C7) + (list (vector pattern2 2 'hebrew-shape-gstring) + (vector pattern1 1 'hebrew-shape-gstring) + ["[\u0591-\u05C7]" 0 font-shape-gstring])) + (set-char-table-range + composition-function-table #x5C0 nil) + (set-char-table-range + composition-function-table #x5C6 nil)) + (provide 'hebrew) ;; arch-tag: 3ca04f32-3f1e-498e-af46-8267498ba5d9