(compose-gstring-for-variation-glyph): New

function.  Register it in composition-function-table.
This commit is contained in:
Kenichi Handa 2008-12-30 23:34:54 +00:00
parent b23dc4242c
commit ee94685859
2 changed files with 30 additions and 0 deletions

View file

@ -1,3 +1,10 @@
2008-12-30 Kenichi Handa <handa@m17n.org>
* language/japanese.el (compose-gstring-for-variation-glyph): New
function. Register it in composition-function-table.
* composite.el (lglyph-set-code): New function.
2008-12-30 Stefan Monnier <monnier@iro.umontreal.ca>
* tar-mode.el (tar-data-swapped): New var.

View file

@ -250,6 +250,29 @@ eucJP-ms is defined in <http://www.opengroup.or.jp/jvc/cde/appendix.html>."
(define-translation-table 'unicode-to-jisx0213
(char-table-extra-slot table 0)))
(defun compose-gstring-for-variation-glyph (gstring)
"Compose glyph-string GSTRING for graphic display.
GSTRING must have two glyphs; the first is a glyph for a han character,
and the second is a glyph for a variation selector."
(let* ((font (lgstring-font gstring))
(han (lgstring-char gstring 0))
(vs (lgstring-char gstring 1))
(glyphs (font-variation-glyphs font han))
(g0 (lgstring-glyph gstring 0))
(g1 (lgstring-glyph gstring 1)))
(catch 'tag
(dolist (elt glyphs)
(if (= (car elt) vs)
(progn
(lglyph-set-code g0 (cdr elt))
(lglyph-set-from-to g0 (lglyph-from g0) (lglyph-to g1))
(lgstring-set-glyph gstring 1 nil)
(throw 'tag gstring)))))))
(let ((elt '([".." 1 compose-gstring-for-variation-glyph])))
(set-char-table-range composition-function-table '(#xFE00 . #xFE0F) elt)
(set-char-table-range composition-function-table '(#xE0100 . #xE01EF) elt))
(provide 'japanese)
;; arch-tag: 450f5537-9d53-4d5e-b731-4cf116d8cbc9