# HG changeset patch # User Chong Yidong # Date 1232383364 0 # Node ID 558e0d4ded9a5daec1d18951832b688b00d0b49f # Parent ab308039742ac1d1496014876a04fd776c883c41 (font_spec_from_name): Return Qnil if font name could not be parsed. (font_parse_name): Treat a `?' character as part of an XLFD. diff -r ab308039742a -r 558e0d4ded9a src/font.c --- a/src/font.c Mon Jan 19 16:41:16 2009 +0000 +++ b/src/font.c Mon Jan 19 16:42:44 2009 +0000 @@ -1814,7 +1814,7 @@ char *name; Lisp_Object font; { - if (name[0] == '-' || index (name, '*')) + if (name[0] == '-' || index (name, '*') || index (name, '?')) return font_parse_xlfd (name, font); return font_parse_fcname (name, font); } @@ -3051,15 +3051,21 @@ return spec; } + +/* Create a new font spec from FONT_NAME, and return it. If FONT_NAME + could not be parsed by font_parse_name, return Qnil. */ + Lisp_Object font_spec_from_name (font_name) Lisp_Object font_name; { - Lisp_Object args[2]; - - args[0] = QCname; - args[1] = font_name; - return Ffont_spec (2, args); + Lisp_Object spec = Ffont_spec (0, NULL); + + CHECK_STRING (font_name); + if (font_parse_name ((char *) SDATA (font_name), spec) == -1) + return Qnil; + font_put_extra (spec, QCname, font_name); + return spec; }