Sorry for the slight offtopic. Since Unicode and character issues come up here from time to time, I'm sharing this 'homemade' function that I wrote a long time ago for my work, in case someone finds it useful. It Shows a brief descriptive list of all characters in a word at point. Each character includes the Unicode name, code, and canonical decomposition. Example:
ἄρχοντα >> ἄ (#1f04) ... GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA ... descomp: #1f00 #301 ρ (#3c1) ... GREEK SMALL LETTER RHO ... descomp: #3c1 χ (#3c7) ... GREEK SMALL LETTER CHI ... descomp: #3c7 ο (#3bf) ... GREEK SMALL LETTER OMICRON ... descomp: #3bf ν (#3bd) ... GREEK SMALL LETTER NU ... descomp: #3bd τ (#3c4) ... GREEK SMALL LETTER TAU ... descomp: #3c4 α (#3b1) ... GREEK SMALL LETTER ALPHA ... descomp: #3b1 #+begin_src emacs-lisp (defun describe-chars-word-at-point () (interactive) (setq chars-in-word nil) (if (not (current-word t t)) (error "Not in a word at point...") (let ((word (current-word t t))) (save-excursion (with-temp-buffer (insert word) (goto-char (point-min)) (while (re-search-forward "\\(.\\)" nil t) (let* ((char-name (save-excursion (backward-char) (get-char-code-property (char-after (point)) 'name))) (char-desc (save-excursion (backward-char) (get-char-code-property (char-after (point)) 'decomposition))) (char-format (concat (match-string 1) "\s" "(" (format "#%x" (string-to-char (match-string 1))) ")\s...\s" char-name "\s...\sdecomp:\s" (mapconcat (lambda (cod) (format "#%x" cod)) char-desc " ")))) (push char-format chars-in-word))) (when (get-buffer "*chars in word*") (kill-buffer "*chars in word*")) (get-buffer-create "*chars in word*") (set-buffer "*chars in word*") (insert (mapconcat 'identity (reverse chars-in-word) "\n")) (view-mode) (temp-buffer-window-show "*chars in word*" '((display-buffer-below-selected display-buffer-at-bottom) (inhibit-same-window . t) (window-height . fit-window-to-buffer)))) (pop-to-buffer "*chars in word*"))))) #+end_src