From: Kenichi Handa Date: Wed, 28 Jun 2006 05:40:15 +0000 (+0000) Subject: (ftfont_list): Handle properties dpi, spacing, and X-Git-Tag: emacs-pretest-23.0.90~8295^2~850 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bc9a2afe6f7306e2240033ad64955d4d560f5b5c;p=emacs.git (ftfont_list): Handle properties dpi, spacing, and scalable. --- diff --git a/src/ftfont.c b/src/ftfont.c index c5da03529e5..1de670fee4e 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -312,6 +312,9 @@ ftfont_list (frame, spec) FcObjectSet *objset = NULL; Lisp_Object registry = Qunicode_bmp; int weight = 0; + double dpi = -1; + int spacing = -1; + int scalable = -1; val = null_vector; @@ -347,6 +350,13 @@ ftfont_list (frame, spec) font_name = Qnil; if (CONSP (extra)) { + tmp = assq_no_quit (QCname, extra); + if (CONSP (tmp)) + { + font_name = XCDR (tmp); + if (SDATA (font_name)[0] != ':') + return val; + } tmp = assq_no_quit (QCotf, extra); if (! NILP (tmp)) return val; @@ -371,9 +381,6 @@ ftfont_list (frame, spec) tmp = XCDR (tmp); } } - tmp = Fassq (QCname, extra); - if (CONSP (tmp)) - font_name = XCDR (tmp); tmp = assq_no_quit (QCscript, extra); if (CONSP (tmp) && ! charset) { @@ -392,6 +399,15 @@ ftfont_list (frame, spec) goto err; } } + tmp = assq_no_quit (QCdpi, extra); + if (CONSP (tmp)) + dpi = XINT (XCDR (tmp)); + tmp = assq_no_quit (QCspacing, extra); + if (CONSP (tmp)) + spacing = XINT (XCDR (tmp)); + tmp = assq_no_quit (QCscalable, extra); + if (CONSP (tmp)) + spacing = ! NILP (XCDR (tmp)); } if (STRINGP (font_name)) @@ -430,6 +446,15 @@ ftfont_list (frame, spec) if (langset && ! FcPatternAddLangSet (pattern, FC_LANG, langset)) goto err; + if (dpi >= 0 + && ! FcPatternAddDouble (pattern, FC_DPI, dpi)) + goto err; + if (spacing >= 0 + && ! FcPatternAddInteger (pattern, FC_SPACING, spacing)) + goto err; + if (scalable >= 0 + && ! FcPatternAddBool (pattern, FC_SPACING, spacing ? FcTrue : FcFalse)) + goto err; objset = FcObjectSetBuild (FC_FOUNDRY, FC_FAMILY, FC_WEIGHT, FC_SLANT, FC_WIDTH, FC_PIXEL_SIZE, FC_SPACING,