Emacs: Latin to Rune (ᚱᚢᚿᛂ)

By Xah Lee. Date: . Last updated: .

Here's a command that convert Latin alphabet characters to Unicode Runic characters.

ᚼᛂᚱᛂ'ᛌ ᛆ ᛍᚮᛘᛘᛆᚿᛑ ᛐᚼᛆᛐ ᛍᚮᚿᚡᛂᚱᛐ ᛚᛆᛐᛁᚿ ᛆᛚᛔᚼᛆᛒᛂᛐ ᛍᚼᛆᚱᛆᛍᛐᛂᚱᛌ ᛐᚮ ᚢᚿᛁᛍᚮᛑᛂ ᚱᚢᚿᛁᛍ ᛍᚼᛆᚱᛆᛍᛐᛂᚱᛌ.

put this in your Emacs Init File:

(defun xah-convert-latin-to-rune (@begin @end @to-latin-p)
  "Replace English alphabet to Unicode runic characters.
For example, f → ᚠ.
When called interactively, work on current line or text selection.

If `universal-argument' is called first, reverse direction.
Note: original letter case are not preserved. B may become b.

URL `http://xahlee.info/emacs/misc/elisp_latin_to_rune.html'
Version 2019-06-07 2021-07-31"
  (interactive
   (if (use-region-p)
       (list (region-beginning) (region-end) current-prefix-arg )
     (list (line-beginning-position) (line-end-position) current-prefix-arg )))
  (let ( $toLower $toLatin $toRune $useMap)
          ;; this, because we no want to change case of other lang's chars
    (setq $toLower [["A" "a"] ["B" "b"] ["C" "c"] ["D" "d"] ["E" "e"] ["F" "f"] ["G" "g"] ["H" "h"] ["I" "i"] ["J" "j"] ["K" "k"] ["L" "l"] ["M" "m"] ["N" "n"] ["O" "o"] ["P" "p"] ["Q" "q"] ["R" "r"] ["S" "s"] ["T" "t"] ["U" "u"] ["V" "v"] ["W" "w"] ["X" "x"] ["Y" "y"] ["Z" "z"] ]           )
    (setq $toLatin [ ["ᛆ" "a"] ["ᛒ" "b"] ["ᛍ" "c"] ["ᛑ" "d"] ["ᚧ" "ð"] ["ᛂ" "e"] ["ᚠ" "f"] ["ᚵ" "g"] ["ᚼ" "h"] ["ᛁ" "i"] ["ᚴ" "k"] ["ᛚ" "l"] ["ᛘ" "m"] ["ᚿ" "n"] ["ᚮ" "o"] ["ᛔ" "p"] ["ᛕ" "p"] ["ᛩ" "q"] ["ᚱ" "r"] ["ᛌ" "s"] ["ᛋ" "s"] ["ᛐ" "t"] ["ᚢ" "u"] ["ᚡ" "v"] ["ᚢ" "v"] ["ᚥ" "w"] ["ᛪ" "x"] ["ᛦ" "y"] ["ᚤ" "y"] ["ᛨ" "y"] ["ᛎ" "z"] ["ᚦ" "þ"] ["ᛅ" "æ"] ["ᛆ" "ä"] ["ᚯ" "ø"] ["ᚯ" "ö"] ] )
    (setq $toRune (mapcar (lambda ($x) (vector (aref $x 1) (aref $x 0))) $toLatin))
    (setq $useMap (if @to-latin-p $toLatin $toRune))
    (save-excursion
      (save-restriction
        (narrow-to-region @begin @end)
        (when (not @to-latin-p)
          ;; change to lower case, but only for English letters, not for example greek etc.
          (mapc
           (lambda ($x)
             (goto-char (point-min))
             (while (search-forward (elt $x 0) nil t)
               (replace-match (elt $x 1) "FIXEDCASE" "LITERAL")))
           $toLower))
        (let ( (case-fold-search nil))
          (mapc
           (lambda ($x)
             (goto-char (point-min))
             (while (search-forward (elt $x 0) nil t)
               (replace-match (elt $x 1) "FIXEDCASE" "LITERAL")))
           $useMap))))))

For JavaScript version, see Unicode Rune ᚠ

xah talk show, 2019-03-07. emacs lisp, write a command to convert English to Runic

Emacs Lisp, Convert English to Other