 ;;
 ;;; Library
 
-(defun doom--font2xlfd (font)
-  (cond ((stringp font) (aref (font-info font) 0))
-        ((fontp font)   (font-xlfd-name font))
-        ((vectorp font) font)))
+(defun doom--normalize-font (font)
+  (let* ((font (cond ((stringp font) (aref (font-info font) 0))
+                     ((fontp font)   (font-xlfd-name font))
+                     ((vectorp font) (x-compose-font-name font))))
+         (font (x-resolve-font-name font))
+         (font (font-spec :name font)))
+    (unless (font-get font :size)
+      (font-put font :size
+                (font-get (font-spec :name (face-font 'default))
+                          :size)))
+    font))
 
 ;;;###autoload
 (defun doom-adjust-font-size (increment &optional fixed-size-p font-alist)

  (if doom-big-font
      ;; Use `doom-big-font' in lieu of `doom-font'
      (doom-adjust-font-size
       (and doom-big-font-mode
            (aref (x-decompose-font-name (doom--font2xlfd font))
                  xlfd-regexp-pixelsize-subnum))
       t `((doom-font . ,doom-big-font)))
    ;; Resize the current font
    (doom-adjust-font-size (if doom-big-font-mode doom-big-font-increment))))

            (if (null increment)
                (when (get var 'initial-value)
                  (set var (get var 'initial-value))
                  (put var 'initial-value nil)
                  (setq changed t))
              (let* ((original-font (or (symbol-value var)
                                        (face-font face t)
                                        (with-temp-buffer (face-font face))))
                     (font (doom--normalize-font original-font))
                     (dfont
                      (or (if-let* ((remap-font (alist-get var font-alist))
                                    (remap-xlfd (doom--normalize-font remap-font)))
                              remap-xlfd
                            (purecopy font))
                          (error "Could not decompose %s font" var))))
                (let* ((step      (if fixed-size-p 0 (* increment doom-font-increment)))
                       (orig-size (font-get dfont :size))
                       (new-size  (if fixed-size-p increment (+ orig-size step))))
                  (cond ((<= new-size 0)
                         (error "`%s' font is too small to be resized (%d)" var new-size))
                        ((= orig-size new-size)
                         (user-error "Could not resize `%s' for some reason" var))
                        ((setq changed t)
                         (unless (get var 'initial-value)
                           (put var 'initial-value original-font))
                         (font-put dfont :size new-size)
                         (set var dfont)))))))))
    (error
     (ignore-errors (doom-adjust-font-size nil))
     (signal (car e) (cdr e)))))
