@ -296,13 +296,12 @@ module.exports = class CanvasRenderer extends EventEmitter {
// top half
ctx . scale ( 1 , 2 )
ctx . translate ( 0 , cellHeight / 4 )
} else if ( dblHeightBot ) {
// bottom half
ctx . scale ( 1 , 2 )
ctx . translate ( 0 , - cellHeight / 4 )
}
ctx . translate ( ( - screenX - 1.5 * cellWidth ) / 2 , - screenY - 0.5 * cellHeight )
ctx . translate ( ( - screenX - ( dblWidth ? 1.5 : 0.5 ) * cellWidth ) / ( dblWidth ? 2 : 1 ) , - screenY - 0.5 * cellHeight )
if ( dblHeightBot || dblHeightTop ) {
// characters overflow -- needs clipping
@ -657,7 +656,10 @@ module.exports = class CanvasRenderer extends EventEmitter {
// update this cell if:
// - the adjacent cell updated (For now, this'll always be true because characters can be slightly larger than they say they are)
// - the adjacent cell updated and this cell or the adjacent cell is wide
if ( updateMap . get ( adjacentCell ) && ( this . graphics < 2 || isWideCell || isTextWide ( this . screen [ adjacentCell ] ) ) ) {
// - this or the adjacent cell is not double-sized
if ( updateMap . get ( adjacentCell ) &&
( this . graphics < 2 || isWideCell || isTextWide ( this . screen [ adjacentCell ] ) ) &&
( ! this . screenLines [ Math . floor ( cell / this . width ) ] && ! this . screenLines [ Math . floor ( adjacentCell / this . width ) ] ) ) {
adjacentDidUpdate = true
if ( this . getAdjacentCells ( cell , 1 ) . includes ( adjacentCell ) ) {
@ -813,7 +815,7 @@ module.exports = class CanvasRenderer extends EventEmitter {
}
// double-width lines
if ( this . screenLines [ cursorY ] ) cursorWidth *= 2
if ( this . screenLines [ cursorY ] & 0b001 ) cursorWidth *= 2
let screenX = cursorX * cursorWidth + this . padding
let screenY = cursorY * cellHeight + this . padding