diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fontset.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/fontset.c b/src/fontset.c index 85e9254e765..82d1445f1a4 100644 --- a/src/fontset.c +++ b/src/fontset.c | |||
| @@ -635,23 +635,30 @@ fontset_find_font (fontset, c, face, id, fallback) | |||
| 635 | 635 | ||
| 636 | if (id < 0) | 636 | if (id < 0) |
| 637 | i = 3; | 637 | i = 3; |
| 638 | else if (id == XFASTINT (AREF (vec, 1))) | ||
| 639 | i = 2; | ||
| 640 | else | 638 | else |
| 641 | { | 639 | { |
| 642 | ASET (vec, 1, make_number (id)); | 640 | struct charset *charset = CHARSET_FROM_ID (id); |
| 643 | for (i = 3; i < ASIZE (vec); i++) | 641 | |
| 644 | if (id == XFASTINT (AREF (AREF (AREF (vec, i), 2), 1))) | 642 | if (charset->supplementary_p) |
| 645 | break; | 643 | i = 3; |
| 646 | if (i < ASIZE (vec)) | 644 | else if (id == XFASTINT (AREF (vec, 1))) |
| 647 | { | 645 | i = 2; |
| 648 | ASET (vec, 2, AREF (vec, i)); | ||
| 649 | i = 2; | ||
| 650 | } | ||
| 651 | else | 646 | else |
| 652 | { | 647 | { |
| 653 | ASET (vec, 2, Qnil); | 648 | ASET (vec, 1, make_number (id)); |
| 654 | i = 3; | 649 | for (i = 3; i < ASIZE (vec); i++) |
| 650 | if (id == XFASTINT (AREF (AREF (AREF (vec, i), 2), 1))) | ||
| 651 | break; | ||
| 652 | if (i < ASIZE (vec)) | ||
| 653 | { | ||
| 654 | ASET (vec, 2, AREF (vec, i)); | ||
| 655 | i = 2; | ||
| 656 | } | ||
| 657 | else | ||
| 658 | { | ||
| 659 | ASET (vec, 2, Qnil); | ||
| 660 | i = 3; | ||
| 661 | } | ||
| 655 | } | 662 | } |
| 656 | } | 663 | } |
| 657 | 664 | ||