(defparameter *handwritten-table*
  (let ((table (make-hash-table)))
    (loop for i from 0 to 25 do
      (setf (gethash (+ 120016 i) table) (+ 65 i)))
    (loop for i from 0 to 25 do
      (setf (gethash (+ 120042 i) table) (+ 97 i)))
    table))

(defun read-handwritten-char (stream)
  (let* ((c (read-char stream))
         (code (char-int c))
         (tr (gethash code *handwritten-table*)))
    (if tr
      (int-char tr)
      (unread-char c stream))))

(defun read-handwritten-token (stream)
  (concatenate 'string (loop with c
    do (setf c (read-handwritten-char stream))
    while c
    collect c)))

(defun handwritten-reader (stream char)
  (unread-char char stream)
  (let ((x (read-from-string (read-handwritten-token stream))))
    x))

(loop for i from 0 to 51 do
  (set-macro-character (int-char (+ i 120016)) #'handwritten-reader))


; 𝓝𝓸𝔀 𝔀𝓮 𝓬𝓪𝓷 𝓾𝓼𝓮 𝓱𝓪𝓷𝓭𝔀𝓻𝓲𝓽𝓽𝓮𝓷 𝓬𝓱𝓪𝓻𝓪𝓬𝓽𝓮𝓻𝓼 𝓪𝓵𝓶𝓸𝓼𝓽 𝓪𝓷𝔂𝔀𝓱𝓮𝓻𝓮...
(𝓭𝓮𝓯𝓾𝓷 𝓱𝓮𝓵𝓵𝓸 () (𝓹𝓻𝓲𝓷𝓽 "𝓗𝓮𝓵𝓵𝓸, 𝓦𝓸𝓻𝓵𝓭"))
(𝓱𝓮𝓵𝓵𝓸)