--- /dev/null
+(defun allocate-mojikyo-chars (name plane)
+  (let ((ucs (+ #xE00001
+               (* (1- plane)
+                  (eval-when-compile (* 94 60)))))
+       (r 0)
+       char c)
+    (while (< r 30)
+      (setq c 0)
+      (while (< c 94)
+       (setq char (int-char ucs))
+       (put-char-attribute
+        char name (list (+ r (eval-when-compile (+ 16 32)))
+                        (+ c 33)))
+       (setq c (1+ c)
+             ucs (1+ ucs)))
+      (setq r (1+ r)))
+    (setq r 30)
+    (while (< r 60)
+      (setq c 0)
+      (while (< c 94)
+       (setq char (int-char ucs))
+       (put-char-attribute
+        char name (list (+ r (eval-when-compile (+ 18 32)))
+                        (+ c 33)))
+       (setq c (1+ c)
+             ucs (1+ ucs)))
+      (setq r (1+ r)))
+    ))
+
+(let ((p 1))
+  (while (<= p 21)
+    (allocate-mojikyo-chars (intern (format "mojikyo-pj-%d" p)) p)
+    (setq p (1+ p))))