… | |
… | |
239 | else if (color >= 0) |
239 | else if (color >= 0) |
240 | { |
240 | { |
241 | #if XFT |
241 | #if XFT |
242 | Picture dst; |
242 | Picture dst; |
243 | |
243 | |
244 | # ifdef HAVE_BG_PIXMAP |
244 | # ifdef HAVE_IMG |
245 | if (term->bg_img |
245 | if (term->bg_img |
246 | && !term->pix_colors[color].is_opaque () |
246 | && !term->pix_colors[color].is_opaque () |
247 | && ((dst = XftDrawPicture (d)))) |
247 | && ((dst = XftDrawPicture (d)))) |
248 | { |
248 | { |
249 | XClearArea (disp, d, x, y, w, h, false); |
249 | XClearArea (disp, d, x, y, w, h, false); |
… | |
… | |
472 | switch (t) |
472 | switch (t) |
473 | { |
473 | { |
474 | case '\t': |
474 | case '\t': |
475 | case ZERO_WIDTH_CHAR: |
475 | case ZERO_WIDTH_CHAR: |
476 | case NOCHAR: |
476 | case NOCHAR: |
|
|
477 | break; |
|
|
478 | |
|
|
479 | /* |
|
|
480 | * If the base font does not support variation selectors, treat them as ZWC. |
|
|
481 | * a point could be made to do this for all wcwidth == 0 characters, but I |
|
|
482 | * decided against that until more data is available. |
|
|
483 | */ |
|
|
484 | case 0xfe00: case 0xfe01: case 0xfe02: case 0xfe03: case 0xfe04: case 0xfe05: case 0xfe06: case 0xfe07: |
|
|
485 | case 0xfe08: case 0xfe09: case 0xfe0a: case 0xfe0b: case 0xfe0c: case 0xfe0d: case 0xfe0e: case 0xfe0f: |
477 | break; |
486 | break; |
478 | |
487 | |
479 | default: |
488 | default: |
480 | XDrawRectangle (disp, d, gc, x + 2, y + 2, |
489 | XDrawRectangle (disp, d, gc, x + 2, y + 2, |
481 | fwidth - 4, term->fheight - 4); |
490 | fwidth - 4, term->fheight - 4); |
… | |
… | |
1410 | { |
1419 | { |
1411 | if (ep != enc) |
1420 | if (ep != enc) |
1412 | { |
1421 | { |
1413 | rxvt_drawable &d2 = d.screen->scratch_drawable (w, h); |
1422 | rxvt_drawable &d2 = d.screen->scratch_drawable (w, h); |
1414 | |
1423 | |
1415 | #ifdef HAVE_BG_PIXMAP |
1424 | #ifdef HAVE_IMG |
1416 | Picture dst = 0; // the only assignment is done conditionally in the following if condition |
1425 | Picture dst = 0; // the only assignment is done conditionally in the following if condition |
1417 | |
1426 | |
1418 | if (term->bg_img |
1427 | if (term->bg_img |
1419 | && (bg == Color_transparent || bg == Color_bg |
1428 | && (bg == Color_transparent || bg == Color_bg |
1420 | || (bg >= 0 && !term->pix_colors[bg].is_opaque () && ((dst = XftDrawPicture (d2)))))) |
1429 | || (bg >= 0 && !term->pix_colors[bg].is_opaque () && ((dst = XftDrawPicture (d2)))))) |
… | |
… | |
1734 | // way to configure this and xft is easier to hack in, |
1743 | // way to configure this and xft is easier to hack in, |
1735 | // while x11 has more framework in place already. |
1744 | // while x11 has more framework in place already. |
1736 | // TODO: this is a real resource hog, xft takes ages(?) |
1745 | // TODO: this is a real resource hog, xft takes ages(?) |
1737 | #if XFT && USE_SLOW_LOOKUP |
1746 | #if XFT && USE_SLOW_LOOKUP |
1738 | // grab the first xft font that seems suitable |
1747 | // grab the first xft font that seems suitable |
|
|
1748 | // TOOD: should go first for cellchar (spacing 110) then mono, then else |
1739 | FcPattern *p = FcPatternCreate (); |
1749 | FcPattern *p = FcPatternCreate (); |
1740 | |
1750 | |
1741 | FcCharSet *s = FcCharSetCreate (); |
1751 | FcCharSet *s = FcCharSetCreate (); |
1742 | FcCharSetAddChar (s, unicode); |
1752 | FcCharSetAddChar (s, unicode); |
1743 | FcPatternAddCharSet (p, FC_CHARSET, s); |
1753 | FcPatternAddCharSet (p, FC_CHARSET, s); |