mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-28 10:56:36 +00:00
Be more tolerant to fonts named "Foobar-12"
* src/frame.c (x_set_font): If font_spec_from_name returns nil, don't barf; instead, request a new fontset to be generated. This avoids unnecessarily rejecting fonts named against XLFD rules. See http://lists.gnu.org/archive/html/help-emacs-windows/2015-06/msg00001.html, for the description of the original problem. * lisp/faces.el (set-face-attribute): Don't be fooled too easily by a hyphen in a font's name.
This commit is contained in:
parent
4c66103fb3
commit
7d5a7a43f1
@ -753,7 +753,7 @@ is specified, `:italic' is ignored."
|
||||
(setq args (purecopy args))
|
||||
(let ((where (if (null frame) 0 frame))
|
||||
(spec args)
|
||||
family foundry)
|
||||
family foundry orig-family orig-foundry)
|
||||
;; If we set the new-frame defaults, this face is modified outside Custom.
|
||||
(if (memq where '(0 t))
|
||||
(put (or (get face 'face-alias) face) 'face-modified t))
|
||||
@ -769,9 +769,16 @@ is specified, `:italic' is ignored."
|
||||
(when (or family foundry)
|
||||
(when (and (stringp family)
|
||||
(string-match "\\([^-]*\\)-\\([^-]*\\)" family))
|
||||
(setq orig-foundry foundry
|
||||
orig-family family)
|
||||
(unless foundry
|
||||
(setq foundry (match-string 1 family)))
|
||||
(setq family (match-string 2 family)))
|
||||
(setq family (match-string 2 family))
|
||||
;; Reject bogus "families" that are all-digits -- those are some
|
||||
;; weird font names, like Foobar-12, that end in a number.
|
||||
(when (string-match "\\`[0-9]*\\'" family)
|
||||
(setq family orig-family)
|
||||
(setq foundry orig-foundry)))
|
||||
(when (or (stringp family) (eq family 'unspecified))
|
||||
(internal-set-lisp-face-attribute face :family (purecopy family)
|
||||
where))
|
||||
|
10
src/frame.c
10
src/frame.c
@ -3607,10 +3607,12 @@ x_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
|
||||
Lisp_Object ascii_font = fontset_ascii (fontset);
|
||||
Lisp_Object spec = font_spec_from_name (ascii_font);
|
||||
|
||||
if (NILP (spec))
|
||||
signal_error ("Invalid font name", ascii_font);
|
||||
|
||||
if (! font_match_p (spec, font_object))
|
||||
/* SPEC might be nil because ASCII_FONT's name doesn't parse
|
||||
according to stupid XLFD rules, which, for example,
|
||||
disallow font names that include a dash followed by a
|
||||
number. So in those cases we simply request x_new_font
|
||||
below to generate a new fontset. */
|
||||
if (NILP (spec) || ! font_match_p (spec, font_object))
|
||||
fontset = -1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user