Add Hebrew shaper.
This commit is contained in:
parent
cdf522217c
commit
f668ef02cb
2 changed files with 35 additions and 0 deletions
|
@ -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).
|
||||
|
|
|
@ -85,6 +85,35 @@ Bidirectional editing is supported.")))
|
|||
: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
|
||||
|
|
Loading…
Add table
Reference in a new issue