changeset 40250:4f3033e5b688

(x-must-resolve-font-name): New function. (x-complement-fontset-spec): Use it.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 24 Oct 2001 11:06:30 +0000
parents afa4ffde8e37
children 568fe11a570e
files lisp/international/fontset.el
diffstat 1 files changed, 23 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/fontset.el	Wed Oct 24 10:29:11 2001 +0000
+++ b/lisp/international/fontset.el	Wed Oct 24 11:06:30 2001 +0000
@@ -2,6 +2,7 @@
 
 ;; Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN.
 ;; Licensed to the Free Software Foundation.
+;; Copyright (C) 2001 Free Software Foundation, Inc.
 
 ;; Keywords: mule, multilingual, fontset
 
@@ -303,6 +304,27 @@
 backward compatibility."
   (concat "-" (mapconcat (lambda (x) (or x "*")) fields "-")))
 
+
+(defun x-must-resolve-font-name (xlfd-fields)
+  "Like `x-resolve-font-name', but always return a font name.
+XLFD-FIELDS is a vector of XLFD (X Logical Font Description) fields.
+If no font matching XLFD-FIELDS is available, successively replace
+parts of the font name pattern with \"*\" until some font is found.
+Value is name of that font."
+  (let ((ascii-font nil) (index 0))
+    (while (and (null ascii-font) (<= index xlfd-regexp-encoding-subnum))
+      (let ((pattern (x-compose-font-name xlfd-fields)))
+	(condition-case nil
+	    (setq ascii-font (x-resolve-font-name pattern))
+	  (error
+	   (message "Warning: no fonts matching `%s' available" pattern)
+	   (aset xlfd-fields index "*")
+	   (setq index (1+ index))))))
+    (unless ascii-font
+      (error "No fonts founds"))
+    ascii-font))
+
+
 (defun x-complement-fontset-spec (xlfd-fields fontlist)
   "Complement FONTLIST for charsets based on XLFD-FIELDS and return it.
 XLFD-FIELDS is a vector of XLFD (X Logical Font Description) fields.
@@ -324,7 +346,7 @@
       ;; If font for ASCII is not specified, add it.
       (aset xlfd-fields xlfd-regexp-registry-subnum "iso8859")
       (aset xlfd-fields xlfd-regexp-encoding-subnum "1")
-      (setq ascii-font (x-resolve-font-name (x-compose-font-name xlfd-fields)))
+      (setq ascii-font (x-must-resolve-font-name xlfd-fields))
       (setq fontlist (cons (cons 'ascii ascii-font) fontlist)))
 
     ;; If the font for ASCII also supports the other charsets, and