Function: decode-composition-rule
decode-composition-rule is a byte-compiled function defined in
composite.el.gz.
Signature
(decode-composition-rule RULE-CODE)
Source Code
;; Defined in /usr/src/emacs/lisp/composite.el.gz
;; Decode encoded composition rule RULE-CODE. The value is a cons of
;; global and new reference point symbols.
;; This must be compatible with C macro COMPOSITION_DECODE_RULE
;; defined in composite.h.
(defun decode-composition-rule (rule-code)
(or (and (natnump rule-code) (< rule-code #x1000000))
(error "Invalid encoded composition rule: %S" rule-code))
(let ((xoff (ash rule-code -16))
(yoff (logand (ash rule-code -8) #xFF))
gref nref)
(setq rule-code (logand rule-code #xFF)
gref (car (rassq (/ rule-code 12) reference-point-alist))
nref (car (rassq (% rule-code 12) reference-point-alist)))
(or (and gref (symbolp gref) nref (symbolp nref))
(error "Invalid composition rule code: %S" rule-code))
(if (and (= xoff 0) (= yoff 0))
(cons gref nref)
(setq xoff (- xoff 128) yoff (- yoff 128))
(list gref xoff yoff nref))))