aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2006-06-28 05:40:15 +0000
committerKenichi Handa2006-06-28 05:40:15 +0000
commitbc9a2afe6f7306e2240033ad64955d4d560f5b5c (patch)
treecc1f2bc95eb474df5722a7bf8ae8239315b3797d /src
parenta703d27dea4dbe96b588f9b1563b3b4ad7409eef (diff)
downloademacs-bc9a2afe6f7306e2240033ad64955d4d560f5b5c.tar.gz
emacs-bc9a2afe6f7306e2240033ad64955d4d560f5b5c.zip
(ftfont_list): Handle properties dpi, spacing, and
scalable.
Diffstat (limited to 'src')
-rw-r--r--src/ftfont.c31
1 files changed, 28 insertions, 3 deletions
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)
312 FcObjectSet *objset = NULL; 312 FcObjectSet *objset = NULL;
313 Lisp_Object registry = Qunicode_bmp; 313 Lisp_Object registry = Qunicode_bmp;
314 int weight = 0; 314 int weight = 0;
315 double dpi = -1;
316 int spacing = -1;
317 int scalable = -1;
315 318
316 val = null_vector; 319 val = null_vector;
317 320
@@ -347,6 +350,13 @@ ftfont_list (frame, spec)
347 font_name = Qnil; 350 font_name = Qnil;
348 if (CONSP (extra)) 351 if (CONSP (extra))
349 { 352 {
353 tmp = assq_no_quit (QCname, extra);
354 if (CONSP (tmp))
355 {
356 font_name = XCDR (tmp);
357 if (SDATA (font_name)[0] != ':')
358 return val;
359 }
350 tmp = assq_no_quit (QCotf, extra); 360 tmp = assq_no_quit (QCotf, extra);
351 if (! NILP (tmp)) 361 if (! NILP (tmp))
352 return val; 362 return val;
@@ -371,9 +381,6 @@ ftfont_list (frame, spec)
371 tmp = XCDR (tmp); 381 tmp = XCDR (tmp);
372 } 382 }
373 } 383 }
374 tmp = Fassq (QCname, extra);
375 if (CONSP (tmp))
376 font_name = XCDR (tmp);
377 tmp = assq_no_quit (QCscript, extra); 384 tmp = assq_no_quit (QCscript, extra);
378 if (CONSP (tmp) && ! charset) 385 if (CONSP (tmp) && ! charset)
379 { 386 {
@@ -392,6 +399,15 @@ ftfont_list (frame, spec)
392 goto err; 399 goto err;
393 } 400 }
394 } 401 }
402 tmp = assq_no_quit (QCdpi, extra);
403 if (CONSP (tmp))
404 dpi = XINT (XCDR (tmp));
405 tmp = assq_no_quit (QCspacing, extra);
406 if (CONSP (tmp))
407 spacing = XINT (XCDR (tmp));
408 tmp = assq_no_quit (QCscalable, extra);
409 if (CONSP (tmp))
410 spacing = ! NILP (XCDR (tmp));
395 } 411 }
396 412
397 if (STRINGP (font_name)) 413 if (STRINGP (font_name))
@@ -430,6 +446,15 @@ ftfont_list (frame, spec)
430 if (langset 446 if (langset
431 && ! FcPatternAddLangSet (pattern, FC_LANG, langset)) 447 && ! FcPatternAddLangSet (pattern, FC_LANG, langset))
432 goto err; 448 goto err;
449 if (dpi >= 0
450 && ! FcPatternAddDouble (pattern, FC_DPI, dpi))
451 goto err;
452 if (spacing >= 0
453 && ! FcPatternAddInteger (pattern, FC_SPACING, spacing))
454 goto err;
455 if (scalable >= 0
456 && ! FcPatternAddBool (pattern, FC_SPACING, spacing ? FcTrue : FcFalse))
457 goto err;
433 458
434 objset = FcObjectSetBuild (FC_FOUNDRY, FC_FAMILY, FC_WEIGHT, FC_SLANT, 459 objset = FcObjectSetBuild (FC_FOUNDRY, FC_FAMILY, FC_WEIGHT, FC_SLANT,
435 FC_WIDTH, FC_PIXEL_SIZE, FC_SPACING, 460 FC_WIDTH, FC_PIXEL_SIZE, FC_SPACING,