anchor.diff:                             (make-string (- disp-x0 pos-x)
                                           :initial-element #\u200b)))))
   
  -;; workaround for display problem of utf-16 surrogate pair characters (incomplete)
  +;; deal with utf-16 surrogate pair characters (output)
   (defun remake-string (string)
     (let ((clist    '())
           (splitted nil))
  
positive.code:          (pos-y    (get-pos-y view x y :modeline modeline)))
      (loop :while (< disp-x disp-x0)
         :for code := (get-charcode-from-scrwin view pos-x pos-y)
         :do (setf disp-x (lem-base:char-width (code-char code) disp-x))
           ;; pos-x is incremented only 1 at wide characters
           ;; (except for utf-16 surrogate pair characters)
           (setf pos-x (+ pos-x (if (< code #x10000) 1 2))))
      pos-x))
  (defun get-pos-y (view x y &key (modeline nil))
    (+ y (ncurses-view-y view) (if modeline (ncurses-view-height view) 0)))
  
negative.code:   (setf (ncurses-view-x view) x)
    (setf (ncurses-view-y view) y))
  
  ;; deal with utf-16 surrogate pair characters (screen memory)
  (defun get-charcode-from-scrwin (view x y)
    (let ((code (logand (charms/ll:mvwinch (ncurses-view-scrwin view) y x)
                        charms/ll:A_CHARTEXT)))
  