]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid errors in posn-col-row if fonts disappear from an X server
authorPo Lu <luangruo@yahoo.com>
Tue, 22 Aug 2023 04:35:33 +0000 (12:35 +0800)
committerPo Lu <luangruo@yahoo.com>
Tue, 22 Aug 2023 04:35:33 +0000 (12:35 +0800)
* lisp/window.el (window-font-width, window-font-height): Resort
to frame-char-width/height should the font returned by font-info
be unavailable.

lisp/window.el

index d91bbabc01073a9b47409e4e52137ff8945f4718..b0970cfb0647bcfe33d474c842b63d8da1499609 100644 (file)
@@ -2121,12 +2121,16 @@ remapped (see `face-remapping-alist'), the function returns the
 information for the remapped face."
    (with-selected-window (window-normalize-window window t)
      (if (display-multi-font-p)
-        (let* ((face (if face face 'default))
-               (info (font-info (face-font face)))
-               (width (aref info 11)))
-          (if (> width 0)
-             width
-            (aref info 10)))
+         ;; Opening the XLFD returned by `font-info' may be
+         ;; unsuccessful.  Use `frame-char-width' as a recourse if
+         ;; such a situation transpires.
+         (or (when-let* ((face (if face face 'default))
+                        (info (font-info (face-font face)))
+                        (width (aref info 11)))
+              (if (> width 0)
+                  width
+                (aref info 10)))
+             (frame-char-width))
        (frame-char-width))))
 
 (defun window-font-height (&optional window face)
@@ -2138,9 +2142,10 @@ remapped (see `face-remapping-alist'), the function returns the
 information for the remapped face."
    (with-selected-window (window-normalize-window window t)
      (if (display-multi-font-p)
-        (let* ((face (if face face 'default))
-               (info (font-info (face-font face))))
-          (aref info 3))
+        (or (when-let* ((face (if face face 'default))
+                        (info (font-info (face-font face))))
+              (aref info 3))
+             (frame-char-height))
        (frame-char-height))))
 
 (defvar overflow-newline-into-fringe)