diff options
| author | Jan Djärv | 2009-12-13 13:16:17 +0000 |
|---|---|---|
| committer | Jan Djärv | 2009-12-13 13:16:17 +0000 |
| commit | 223e5fc656a6c8a95e5aac334e8c7b82cc9d2a4b (patch) | |
| tree | f91114f74e6a35d0fa0915d2cc8d28adf37b2dd2 /src | |
| parent | bd7705929b6ae098ac0a6cbae7b20f6e08e0954f (diff) | |
| download | emacs-223e5fc656a6c8a95e5aac334e8c7b82cc9d2a4b.tar.gz emacs-223e5fc656a6c8a95e5aac334e8c7b82cc9d2a4b.zip | |
xftfont.c: Parse symbolic names for constants also.
(QClcdfilter): New variable.
(xftfont_open): Parse constant names for RGBA, HINT_STYLE and LCDFILTER.
(syms_of_xftfont): Initialize QClcdfilter.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xftfont.c | 22 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ee05443152f..348300ee2da 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2009-12-13 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * xftfont.c (QClcdfilter): New variable. | ||
| 4 | (xftfont_open): Parse constant names for RGBA, HINT_STYLE and LCDFILTER. | ||
| 5 | (syms_of_xftfont): Initialize QClcdfilter. | ||
| 6 | |||
| 1 | 2009-12-12 Jan Djärv <jan.h.d@swipnet.se> | 7 | 2009-12-12 Jan Djärv <jan.h.d@swipnet.se> |
| 2 | 8 | ||
| 3 | * xsettings.c (struct xsettings): Add member seen. | 9 | * xsettings.c (struct xsettings): Add member seen. |
diff --git a/src/xftfont.c b/src/xftfont.c index 4675875496a..82701ce0afe 100644 --- a/src/xftfont.c +++ b/src/xftfont.c | |||
| @@ -39,7 +39,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 39 | /* Xft font driver. */ | 39 | /* Xft font driver. */ |
| 40 | 40 | ||
| 41 | static Lisp_Object Qxft; | 41 | static Lisp_Object Qxft; |
| 42 | static Lisp_Object QChinting , QCautohint, QChintstyle, QCrgba, QCembolden; | 42 | static Lisp_Object QChinting, QCautohint, QChintstyle, QCrgba, QCembolden, |
| 43 | QClcdfilter; | ||
| 43 | 44 | ||
| 44 | /* The actual structure for Xft font that can be casted to struct | 45 | /* The actual structure for Xft font that can be casted to struct |
| 45 | font. */ | 46 | font. */ |
| @@ -252,7 +253,7 @@ xftfont_open (f, entity, pixel_size) | |||
| 252 | XftFont *xftfont = NULL; | 253 | XftFont *xftfont = NULL; |
| 253 | int spacing; | 254 | int spacing; |
| 254 | char name[256]; | 255 | char name[256]; |
| 255 | int len, i; | 256 | int len, i, ival; |
| 256 | XGlyphInfo extents; | 257 | XGlyphInfo extents; |
| 257 | FT_Face ft_face; | 258 | FT_Face ft_face; |
| 258 | FcMatrix *matrix; | 259 | FcMatrix *matrix; |
| @@ -311,11 +312,25 @@ xftfont_open (f, entity, pixel_size) | |||
| 311 | { | 312 | { |
| 312 | if (INTEGERP (val)) | 313 | if (INTEGERP (val)) |
| 313 | FcPatternAddInteger (pat, FC_HINT_STYLE, XINT (val)); | 314 | FcPatternAddInteger (pat, FC_HINT_STYLE, XINT (val)); |
| 315 | else if (SYMBOLP (val) | ||
| 316 | && FcNameConstant (SDATA (SYMBOL_NAME (val)), &ival)) | ||
| 317 | FcPatternAddInteger (pat, FC_HINT_STYLE, ival); | ||
| 314 | } | 318 | } |
| 315 | else if (EQ (key, QCrgba)) | 319 | else if (EQ (key, QCrgba)) |
| 316 | { | 320 | { |
| 317 | if (INTEGERP (val)) | 321 | if (INTEGERP (val)) |
| 318 | FcPatternAddInteger (pat, FC_RGBA, XINT (val)); | 322 | FcPatternAddInteger (pat, FC_RGBA, XINT (val)); |
| 323 | else if (SYMBOLP (val) | ||
| 324 | && FcNameConstant (SDATA (SYMBOL_NAME (val)), &ival)) | ||
| 325 | FcPatternAddInteger (pat, FC_RGBA, ival); | ||
| 326 | } | ||
| 327 | else if (EQ (key, QClcdfilter)) | ||
| 328 | { | ||
| 329 | if (INTEGERP (val)) | ||
| 330 | FcPatternAddInteger (pat, FC_LCD_FILTER, ival = XINT (val)); | ||
| 331 | else if (SYMBOLP (val) | ||
| 332 | && FcNameConstant (SDATA (SYMBOL_NAME (val)), &ival)) | ||
| 333 | FcPatternAddInteger (pat, FC_LCD_FILTER, ival); | ||
| 319 | } | 334 | } |
| 320 | #ifdef FC_EMBOLDEN | 335 | #ifdef FC_EMBOLDEN |
| 321 | else if (EQ (key, QCembolden)) | 336 | else if (EQ (key, QCembolden)) |
| @@ -343,7 +358,7 @@ xftfont_open (f, entity, pixel_size) | |||
| 343 | XftDefaultSubstitute (display, FRAME_X_SCREEN_NUMBER (f), pat); | 358 | XftDefaultSubstitute (display, FRAME_X_SCREEN_NUMBER (f), pat); |
| 344 | match = XftFontMatch (display, FRAME_X_SCREEN_NUMBER (f), pat, &result); | 359 | match = XftFontMatch (display, FRAME_X_SCREEN_NUMBER (f), pat, &result); |
| 345 | xftfont_fix_match (pat, match); | 360 | xftfont_fix_match (pat, match); |
| 346 | 361 | ||
| 347 | FcPatternDestroy (pat); | 362 | FcPatternDestroy (pat); |
| 348 | xftfont = XftFontOpenPattern (display, match); | 363 | xftfont = XftFontOpenPattern (display, match); |
| 349 | if (!xftfont) | 364 | if (!xftfont) |
| @@ -706,6 +721,7 @@ syms_of_xftfont () | |||
| 706 | DEFSYM (QChintstyle, ":hintstyle"); | 721 | DEFSYM (QChintstyle, ":hintstyle"); |
| 707 | DEFSYM (QCrgba, ":rgba"); | 722 | DEFSYM (QCrgba, ":rgba"); |
| 708 | DEFSYM (QCembolden, ":embolden"); | 723 | DEFSYM (QCembolden, ":embolden"); |
| 724 | DEFSYM (QClcdfilter, ":lcdfilter"); | ||
| 709 | 725 | ||
| 710 | xftfont_driver = ftfont_driver; | 726 | xftfont_driver = ftfont_driver; |
| 711 | xftfont_driver.type = Qxft; | 727 | xftfont_driver.type = Qxft; |