diff options
| author | Kenichi Handa | 2006-06-28 05:40:15 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2006-06-28 05:40:15 +0000 |
| commit | bc9a2afe6f7306e2240033ad64955d4d560f5b5c (patch) | |
| tree | cc1f2bc95eb474df5722a7bf8ae8239315b3797d /src | |
| parent | a703d27dea4dbe96b588f9b1563b3b4ad7409eef (diff) | |
| download | emacs-bc9a2afe6f7306e2240033ad64955d4d560f5b5c.tar.gz emacs-bc9a2afe6f7306e2240033ad64955d4d560f5b5c.zip | |
(ftfont_list): Handle properties dpi, spacing, and
scalable.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ftfont.c | 31 |
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, |