… | |
… | |
2244 | |
2244 | |
2245 | // only do special processing if any attributes are set, which is unlikely |
2245 | // only do special processing if any attributes are set, which is unlikely |
2246 | if (rend & (RS_Bold | RS_Italic | RS_Uline | RS_RVid | RS_Blink | RS_Careful)) |
2246 | if (rend & (RS_Bold | RS_Italic | RS_Uline | RS_RVid | RS_Blink | RS_Careful)) |
2247 | { |
2247 | { |
2248 | #if ENABLE_STYLES |
2248 | #if ENABLE_STYLES |
2249 | // force redraw after "careful" characters to avoid pixel droppings |
2249 | // "careful" (too wide) character handling |
2250 | if (srp[col] & RS_Careful && col < ncol - 1 && 0) |
|
|
2251 | drp[col + 1] = ~srp[col + 1]; |
|
|
2252 | |
2250 | |
2253 | // include previous careful character(s) if possible, looks nicer (best effort...) |
2251 | // include previous careful character(s) if possible, looks nicer (best effort...) |
2254 | while (text > stp |
2252 | while (text > stp |
2255 | && srp[text - stp - 1] & RS_Careful |
2253 | && srp[text - stp - 1] & RS_Careful |
2256 | && RS_SAME (rend, srp[text - stp - 1])) |
2254 | && RS_SAME (rend, srp[text - stp - 1])) |
2257 | text--, count++, xpixel -= fwidth; |
2255 | text--, count++, xpixel -= fwidth; |
|
|
2256 | |
|
|
2257 | // force redraw after "careful" characters to avoid pixel droppings |
|
|
2258 | for (int i = 0; srp[col + i] & RS_Careful && col + i < ncol - 1; i++) |
|
|
2259 | drp[col + i + 1] = ~srp[col + i + 1]; |
|
|
2260 | |
|
|
2261 | // force redraw before "careful" characters to avoid pixel droppings |
|
|
2262 | for (int i = 0; srp[text - stp - i] & RS_Careful && text - i > stp; i++) |
|
|
2263 | drp[text - stp - i - 1] = ~srp[text - stp - i - 1]; |
2258 | #endif |
2264 | #endif |
2259 | |
2265 | |
2260 | bool invert = rend & RS_RVid; |
2266 | bool invert = rend & RS_RVid; |
2261 | |
2267 | |
2262 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
2268 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
… | |
… | |
3764 | rxvt_term::scr_overlay_set (int x, int y, const wchar_t *s) NOTHROW |
3770 | rxvt_term::scr_overlay_set (int x, int y, const wchar_t *s) NOTHROW |
3765 | { |
3771 | { |
3766 | while (*s) |
3772 | while (*s) |
3767 | { |
3773 | { |
3768 | text_t t = *s++; |
3774 | text_t t = *s++; |
3769 | int width = wcwidth (t); |
3775 | int width = WCWIDTH (t); |
3770 | |
3776 | |
3771 | while (width--) |
3777 | while (width--) |
3772 | { |
3778 | { |
3773 | scr_overlay_set (x++, y, t); |
3779 | scr_overlay_set (x++, y, t); |
3774 | t = NOCHAR; |
3780 | t = NOCHAR; |