Function: char-from-name

char-from-name is a byte-compiled function defined in mule-cmds.el.gz.

Signature

(char-from-name STRING &optional IGNORE-CASE)

Documentation

Return a character as a number from its Unicode name STRING.

If optional IGNORE-CASE is non-nil, ignore case in STRING. Return nil if STRING does not name a character.

View in manual

Probably introduced at or before Emacs version 26.1.

Source Code

;; Defined in /usr/src/emacs/lisp/international/mule-cmds.el.gz
(defun char-from-name (string &optional ignore-case)
  "Return a character as a number from its Unicode name STRING.
If optional IGNORE-CASE is non-nil, ignore case in STRING.
Return nil if STRING does not name a character."
  (or (gethash (if ignore-case (upcase string) string) (ucs-names))
      (let ((minus (string-match-p "-[0-9A-F]+\\'" string)))
        (when minus
          ;; Parse names like "VARIATION SELECTOR-17" and "CJK
          ;; COMPATIBILITY IDEOGRAPH-F900" that are not in ucs-names.
          (ignore-errors
            (let* ((case-fold-search ignore-case)
                   (vs (string-match-p "\\`VARIATION SELECTOR-" string))
                   (minus-num (string-to-number (substring string minus)
                                                (if vs 10 16)))
                   (vs-offset (if vs (if (< minus-num -16) #xE00EF #xFDFF) 0))
                   (code (- vs-offset minus-num))
                   (name (get-char-code-property code 'name)))
              (when (eq t (compare-strings string nil nil name nil nil
                                           ignore-case))
                code)))))))