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 ToLatinQ) "Replace english alphabet to 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' Created: 2019ĺš´06ć07ćĽ Version: 2023ĺš´05ć12ćĽ" (interactive (if (region-active-p) (list (region-beginning) (region-end) current-prefix-arg) (list (line-beginning-position) (line-end-position) current-prefix-arg))) (let (xtoLower xtoLatin xtoRune xuseMap) ;; this, because we no want to change case of other lang's chars (setq xtoLower [["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 xtoLatin [ ["á" "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 xtoRune (mapcar (lambda (xx) (vector (aref xx 1) (aref xx 0))) xtoLatin)) (setq xuseMap (if ToLatinQ xtoLatin xtoRune)) (save-excursion (save-restriction (narrow-to-region Begin End) (when (not ToLatinQ) ;; change to lower case, but only for English letters, not for example greek etc. (mapc (lambda (xx) (goto-char (point-min)) (while (search-forward (elt xx 0) nil t) (replace-match (elt xx 1) t t))) xtoLower)) (let ((case-fold-search nil)) (mapc (lambda (xx) (goto-char (point-min)) (while (search-forward (elt xx 0) nil t) (replace-match (elt xx 1) t t))) xuseMap))))))