# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dpepper@sw-gbbr-brsd015-20100701155900-jpejfg0c2hm1ruhp # target_branch: http://bzr.savannah.gnu.org/r/emacs/trunk/ # testament_sha1: 00e5e10c74ec1a385bf3916399c1c3a9b75cf656 # timestamp: 2010-07-01 17:00:50 +0100 # base_revision_id: jan.h.d@swipnet.se-20100629094920-iq2l9ojeiqiq41n8 # # Begin patch === modified file 'src/ChangeLog' --- src/ChangeLog 2010-06-29 09:49:20 +0000 +++ src/ChangeLog 2010-07-01 15:59:00 +0000 @@ -1,3 +1,11 @@ +2010-07-01 Damyan Pepper + + * gtfont.c (gtfont_filter_properties): Now calls + font_filter_properties. + * font.c (font_filter_properties): New function, refactored from + gtfont_filter_properties. + * w32font.c (w32font_filter_properties): New function (Bug#6303). + 2010-06-29 Jan Djärv * nsfns.m: extern declare Vmenu_bar_mode, Vtool_bar_mode. === modified file 'src/font.c' --- src/font.c 2010-06-22 06:42:00 +0000 +++ src/font.c 2010-07-01 15:54:59 +0000 @@ -3895,6 +3895,62 @@ } +/* Sets attributes on a font. Any properties that appear in ALIST and + BOOLEAN_PROPERTIES or NON_BOOLEAN_PROPERTIES are set on the font. + BOOLEAN_PROPERTIES and NON_BOOLEAN_PROPERTIES are NULL-terminated + arrays of strings. This function is intended for use by the font + drivers to implement their specific font_filter_properties. */ +void +font_filter_properties (font, alist, boolean_properties, non_boolean_properties) + Lisp_Object font; + Lisp_Object alist; + const char *boolean_properties[]; + const char *non_boolean_properties[]; +{ + Lisp_Object it; + int i; + + /* Set boolean values to Qt or Qnil */ + for (i = 0; boolean_properties[i] != NULL; ++i) + for (it = alist; ! NILP (it); it = XCDR (it)) + { + Lisp_Object key = XCAR (XCAR (it)); + Lisp_Object val = XCDR (XCAR (it)); + char *keystr = SDATA (SYMBOL_NAME (key)); + + if (strcmp (boolean_properties[i], keystr) == 0) + { + char *str; + + if (INTEGERP (val)) + str = XINT (val) != 0 ? "true" : "false"; + else if (SYMBOLP (val)) + str = SDATA (SYMBOL_NAME (val)); + else + str = "true"; + + val = Qt; + if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0 + || strcmp ("FALSE", str) == 0 || strcmp ("FcFalse", str) == 0 + || strcmp ("off", str) == 0 || strcmp ("OFF", str) == 0 + || strcmp ("Off", str) == 0) + val = Qnil; + Ffont_put (font, key, val); + } + } + + for (i = 0; non_boolean_properties[i] != NULL; ++i) + for (it = alist; ! NILP (it); it = XCDR (it)) + { + Lisp_Object key = XCAR (XCAR (it)); + Lisp_Object val = XCDR (XCAR (it)); + char *keystr = SDATA (SYMBOL_NAME (key)); + if (strcmp (non_boolean_properties[i], keystr) == 0) + Ffont_put (font, key, val); + } +} + + /* Return the font used to draw character C by FACE at buffer position POS in window W. If STRING is non-nil, it is a string containing C at index POS. If C is negative, get C from the current buffer or === modified file 'src/font.h' --- src/font.h 2010-01-13 08:35:10 +0000 +++ src/font.h 2010-07-01 15:54:59 +0000 @@ -814,6 +814,11 @@ extern void *font_get_frame_data P_ ((FRAME_PTR f, struct font_driver *driver)); +extern void font_filter_properties P_ ((Lisp_Object font, + Lisp_Object alist, + const char *boolean_properties[], + const char *non_boolean_properties[])); + #ifdef HAVE_FREETYPE extern struct font_driver ftfont_driver; #endif /* HAVE_FREETYPE */ === modified file 'src/ftfont.c' --- src/ftfont.c 2010-05-11 11:15:29 +0000 +++ src/ftfont.c 2010-07-01 15:54:59 +0000 @@ -2681,42 +2681,7 @@ Lisp_Object font; Lisp_Object alist; { - Lisp_Object it; - int i; - - /* Set boolean values to Qt or Qnil */ - for (i = 0; ftfont_booleans[i] != NULL; ++i) - for (it = alist; ! NILP (it); it = XCDR (it)) - { - Lisp_Object key = XCAR (XCAR (it)); - Lisp_Object val = XCDR (XCAR (it)); - char *keystr = SDATA (SYMBOL_NAME (key)); - - if (strcmp (ftfont_booleans[i], keystr) == 0) - { - char *str = SYMBOLP (val) ? SDATA (SYMBOL_NAME (val)) : NULL; - if (INTEGERP (val)) str = XINT (val) != 0 ? "true" : "false"; - if (str == NULL) str = "true"; - - val = Qt; - if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0 - || strcmp ("FALSE", str) == 0 || strcmp ("FcFalse", str) == 0 - || strcmp ("off", str) == 0 || strcmp ("OFF", str) == 0 - || strcmp ("Off", str) == 0) - val = Qnil; - Ffont_put (font, key, val); - } - } - - for (i = 0; ftfont_non_booleans[i] != NULL; ++i) - for (it = alist; ! NILP (it); it = XCDR (it)) - { - Lisp_Object key = XCAR (XCAR (it)); - Lisp_Object val = XCDR (XCAR (it)); - char *keystr = SDATA (SYMBOL_NAME (key)); - if (strcmp (ftfont_non_booleans[i], keystr) == 0) - Ffont_put (font, key, val); - } + font_filter_properties (font, alist, ftfont_booleans, ftfont_non_booleans); } === modified file 'src/w32font.c' --- src/w32font.c 2010-01-13 08:35:10 +0000 +++ src/w32font.c 2010-07-01 15:54:59 +0000 @@ -2446,6 +2446,24 @@ return DECODE_SYSTEM (build_string (buf)); } +static const char *w32font_booleans [] = { + NULL, +}; + +static const char *w32font_non_booleans [] = { + ":script", + ":antialias", + NULL, +}; + +static void +w32font_filter_properties (font, alist) + Lisp_Object font; + Lisp_Object alist; +{ + font_filter_properties (font, alist, w32font_booleans, w32font_non_booleans); +} + struct font_driver w32font_driver = { 0, /* Qgdi */ @@ -2475,7 +2493,7 @@ NULL, /* shape */ NULL, /* check */ NULL, /* get_variation_glyphs */ - NULL, /* filter_properties */ + w32font_filter_properties, }; # Begin bundle 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 tYRPIe1xcFfmT9VkouYFQyD/i7kinChIBnyg8YA=