Function: egyptian-shape-grouping
egyptian-shape-grouping is a byte-compiled function defined in
misc-lang.el.gz.
Signature
(egyptian-shape-grouping GSTRING DIRECTION)
Source Code
;; Defined in /usr/src/emacs/lisp/language/misc-lang.el.gz
;; The Egyptian Hieroglyph Format Controls were introduced in Unicode
;; Standard v12.0. Apparently, they are not yet well supported in
;; existing fonts, as of late 2020. But there's no reason for us not
;; to be ready for when they will be!
;; The below is needed to support the arrangement of the Egyptian
;; Hieroglyphs in "quadrats", as directed by the format controls,
;; which specify how the hieroglyphs should be joined horizontally and
;; vertically.
(defun egyptian-shape-grouping (gstring direction)
(if (= (lgstring-char gstring 0) #x13437)
(let ((nchars (lgstring-char-len gstring))
(i 1)
(nesting 1)
ch)
;; Find where this group ends.
(while (and (< i nchars) (> nesting 0))
(setq ch (lgstring-char gstring i))
(cond
((= ch #x13437)
(setq nesting (1+ nesting)))
((= ch #x13438)
(setq nesting (1- nesting))))
(setq i (1+ i)))
(when (zerop nesting)
;; Make a new gstring from the characters that constitute a
;; complete nested group.
(let ((new-header (make-vector (1+ i) nil))
(new-gstring (make-vector (+ i 2) nil)))
(aset new-header 0 (lgstring-font gstring))
(dotimes (j i)
(aset new-header (1+ j) (lgstring-char gstring j))
(lgstring-set-glyph new-gstring j (lgstring-glyph gstring j)))
(lgstring-set-header new-gstring new-header)
(font-shape-gstring new-gstring direction))))))