Skip to content

Add support for double width/height lines #7865

@j4james

Description

@j4james

Description of the new feature/enhancement

The VT100 (and later DEC terminals) had a bunch of operations that could alter the width and height of characters on a per-line basis: DECDWL, DECDHL, and DECSWL. Despite their limitations, they're still quite useful for sprucing up a UI.

As an example, here's a UI for a chess app rendered with and without line attribute support:

image

Proposed technical implementation details (optional)

I've been playing around with a POC of this for a while now, and I've come to realise there's actually a lot more work involved than you might first expect. Other than the basic rendering of characters, we need to handle text decoration, cursor rendering, selection marking, window resizing, mouse position detection, and every VT operation that depends on window boundaries will potentially need to take line attributes into account.

So before I spend more time on this, I wanted to make sure it's something you'd be happy to accept. I should say that I'm inclined to make it conhost-only to start with. I have also looked at the WT side of things, but that basically doubles the workload, and there are extra complications introduced by conpty that I don't have a good answer for.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area-VTVirtual Terminal sequence supportIssue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.Product-ConhostFor issues in the Console codebaseResolution-Fix-CommittedFix is checked in, but it might be 3-4 weeks until a release.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions